Как мне создать экземпляр 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]

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

Другие вопросы по тегам