Как создать экземпляр Meta Doobie для MySQL, используя Play JSON? - PullRequest
0 голосов
/ 02 октября 2018

Как реализовать базовую сериализацию / десериализацию на уровне запросов, используя Doobie , MySQL и Play JSON?

1 Ответ

0 голосов
/ 02 октября 2018

После поиска в Интернете ответа о поддержке специфических типов JSON в MySQL и JDBC кажется, что String - это все, что у нас есть (пожалуйста, позвоните и исправьте меня, если это не так).IMO, документ Doobie не делает этот ответ очевидным, так как приведенный пример использует более строгий пример через PostGRES.К сожалению, MySQL совсем не строг, но это для другого разговора.

А пока, вот простой пример решения, который также предполагает, что Play JSON Readers / Writers находятся в области видимости:

import doobie.util.meta.Meta
import play.api.libs.json._

def playJsonMeta[A: Reads: Writes]: Meta[A] = Meta[String].xmap[A](
  Json.parse(_).as[A],
  s => Json.stringify(Json.toJson(s))
)

implicit val fooMeta: Meta[Foo] = playJsonMeta[Foo]

Обратите внимание, это вызовет исключение, если десериализация не удалась.

...