Skip to content

Instantly share code, notes, and snippets.

@Daenyth
Last active December 14, 2020 17:12
Show Gist options
  • Save Daenyth/fbb6ba6ea26bf0e2583eb1faa8f7d9f4 to your computer and use it in GitHub Desktop.
Save Daenyth/fbb6ba6ea26bf0e2583eb1faa8f7d9f4 to your computer and use it in GitHub Desktop.
DoobieImplicits
/** Convenience imports for doobie, to make it easier to remember
*
* @example {{{
* import DoobieImplicits.all._
* // is equal to all of:
* import doobie.postgres.implicits._
* import doobie.implicits._
* import doobie.implicits.legacy.instant._
* import doobie.implicits.legacy.localdate._
* import io.chrisdavenport.fuuid.doobie.implicits._
* }}}
* */
object DoobieImplicits {
/** Equal to `doobie.implicits._` */
trait BaseImplicits
extends doobie.free.Instances with doobie.syntax.AllSyntax with doobie.util.meta.SqlMeta
with doobie.util.meta.TimeMeta with doobie.util.meta.LegacyMeta
/** Equal to `doobie.postgres.implicits._` */
trait PgImplicits
extends doobie.postgres.Instances with doobie.postgres.free.Instances
with doobie.postgres.syntax.ToPostgresMonadErrorOps with doobie.postgres.syntax.ToFragmentOps
with doobie.postgres.syntax.ToPostgresExplainOps
/** Equal to `doobie.implicits.legacy.instant._` and `doobie.implicits.legacy.localdate._` */
trait PgLegacyTimeImplicits
extends doobie.util.meta.LegacyInstantMetaInstance
with doobie.util.meta.LegacyLocalDateMetaInstance {
// PG code shouldn't import javatime._ because it provides ZonedDateTime, which is nonsensical under postgres
implicit val JavaOffsetDateTimeMeta: Meta[java.time.OffsetDateTime] = doobie.implicits.javatime.JavaOffsetDateTimeMeta
}
trait FuuidImplicits {
implicit def FuuidType(implicit U: Meta[java.util.UUID]): Meta[FUUID] =
io.chrisdavenport.fuuid.doobie.implicits.FuuidType(U)
}
trait All extends BaseImplicits with PgImplicits with PgLegacyTimeImplicits with FuuidImplicits
object all extends All
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment