Как мне создать экземпляр Meta Doobie для MySQL, используя Play JSON?
Как реализовать базовую сериализацию / десериализацию на уровне запросов с использованием Doobie, MySQL и Play JSON?
1 ответ
Поискав в интернете ответ о поддержке специфических типов 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]
Обратите внимание, это вызовет исключение, если десериализация не удалась.