aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz/driver/pdsuicommon/db/PostgresContext.scala
diff options
context:
space:
mode:
authorKseniya Tomskikh <ktomskih@datamonsters.co>2017-10-27 14:24:43 +0700
committerKseniya Tomskikh <ktomskih@datamonsters.co>2017-10-27 17:07:07 +0700
commita8882aebc2f9ebe5c0d2503d7fbab2a320b6c0d3 (patch)
tree2a6bb203f9823925ab3abd4f5890305c0c99c26d /src/main/scala/xyz/driver/pdsuicommon/db/PostgresContext.scala
parentd9440a727edd25f2472754dc51b0206d6abbeba4 (diff)
downloadrest-query-a8882aebc2f9ebe5c0d2503d7fbab2a320b6c0d3.tar.gz
rest-query-a8882aebc2f9ebe5c0d2503d7fbab2a320b6c0d3.tar.bz2
rest-query-a8882aebc2f9ebe5c0d2503d7fbab2a320b6c0d3.zip
Fixed bug
Diffstat (limited to 'src/main/scala/xyz/driver/pdsuicommon/db/PostgresContext.scala')
-rw-r--r--src/main/scala/xyz/driver/pdsuicommon/db/PostgresContext.scala24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/pdsuicommon/db/PostgresContext.scala b/src/main/scala/xyz/driver/pdsuicommon/db/PostgresContext.scala
index bb8d322..0098a64 100644
--- a/src/main/scala/xyz/driver/pdsuicommon/db/PostgresContext.scala
+++ b/src/main/scala/xyz/driver/pdsuicommon/db/PostgresContext.scala
@@ -1,12 +1,15 @@
package xyz.driver.pdsuicommon.db
import java.io.Closeable
+import java.time.{LocalDateTime, ZoneOffset}
+import java.util.UUID
import java.util.concurrent.Executors
import javax.sql.DataSource
import io.getquill._
import xyz.driver.pdsuicommon.concurrent.MdcExecutionContext
import xyz.driver.pdsuicommon.db.PostgresContext.Settings
+import xyz.driver.pdsuicommon.domain.UuidId
import xyz.driver.pdsuicommon.logging._
import scala.concurrent.ExecutionContext
@@ -45,4 +48,25 @@ class PostgresContext(val dataSource: DataSource with Closeable, settings: Setti
super.close()
tpe.shutdownNow()
}
+
+ /**
+ * Usable for QueryBuilder's extractors
+ */
+ def timestampToLocalDateTime(timestamp: java.sql.Timestamp): LocalDateTime = {
+ LocalDateTime.ofInstant(timestamp.toInstant, ZoneOffset.UTC)
+ }
+
+ implicit def encodeUuidId[T] = MappedEncoding[UuidId[T], String](_.toString)
+ implicit def decodeUuidId[T] = MappedEncoding[String, UuidId[T]] { uuid =>
+ UuidId[T](UUID.fromString(uuid))
+ }
+
+ def decodeOptUuidId[T] = MappedEncoding[Option[String], Option[UuidId[T]]] {
+ case Some(x) => Option(x).map(y => UuidId[T](UUID.fromString(y)))
+ case None => None
+ }
+
+ implicit def decodeUuid[T] = MappedEncoding[String, UUID] { uuid =>
+ UUID.fromString(uuid)
+ }
}