aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Nastich <nastich@users.noreply.github.com>2018-08-30 09:34:40 -0400
committerGitHub <noreply@github.com>2018-08-30 09:34:40 -0400
commite3172cac98dfef4abc189bd2a8f2f74fb5caaaba (patch)
treee22eb125a3068f777b7ca0531d358909577873b9
parent31e2cdd834c3be3d59bc23ee2c4eff7874d80159 (diff)
downloaddriver-core-e3172cac98dfef4abc189bd2a8f2f74fb5caaaba.tar.gz
driver-core-e3172cac98dfef4abc189bd2a8f2f74fb5caaaba.tar.bz2
driver-core-e3172cac98dfef4abc189bd2a8f2f74fb5caaaba.zip
Add slick columnTypes for java.time.Instant and java.time.LocalDate (#206)v1.13.1
-rw-r--r--src/main/scala/xyz/driver/core/database/database.scala15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/main/scala/xyz/driver/core/database/database.scala b/src/main/scala/xyz/driver/core/database/database.scala
index ae06517..bd20b54 100644
--- a/src/main/scala/xyz/driver/core/database/database.scala
+++ b/src/main/scala/xyz/driver/core/database/database.scala
@@ -11,6 +11,7 @@ import com.typesafe.config.Config
package database {
import java.sql.SQLDataException
+ import java.time.{Instant, LocalDate}
import eu.timepit.refined.api.{Refined, Validate}
import eu.timepit.refined.refineV
@@ -56,13 +57,18 @@ package database {
trait DateColumnTypes extends ColumnTypes {
import profile.api._
implicit def `xyz.driver.core.time.Date.columnType`: BaseColumnType[Date]
+ implicit def `java.time.LocalDate.columnType`: BaseColumnType[LocalDate]
}
object DateColumnTypes {
trait SqlDate extends DateColumnTypes {
import profile.api._
+
override implicit def `xyz.driver.core.time.Date.columnType`: BaseColumnType[Date] =
MappedColumnType.base[Date, java.sql.Date](dateToSqlDate, sqlDateToDate)
+
+ override implicit def `java.time.LocalDate.columnType`: BaseColumnType[LocalDate] =
+ MappedColumnType.base[LocalDate, java.sql.Date](java.sql.Date.valueOf, _.toLocalDate)
}
}
@@ -123,6 +129,7 @@ package database {
trait TimestampColumnTypes extends ColumnTypes {
import profile.api._
implicit def `xyz.driver.core.time.Time.columnType`: BaseColumnType[Time]
+ implicit def `java.time.Instant.columnType`: BaseColumnType[Instant]
}
object TimestampColumnTypes {
@@ -133,13 +140,19 @@ package database {
MappedColumnType.base[Time, java.sql.Timestamp](
time => new java.sql.Timestamp(time.millis),
timestamp => Time(timestamp.getTime))
+
+ override implicit def `java.time.Instant.columnType`: BaseColumnType[Instant] =
+ MappedColumnType.base[Instant, java.sql.Timestamp](java.sql.Timestamp.from, _.toInstant)
}
trait PrimitiveTimestamp extends TimestampColumnTypes {
import profile.api._
override implicit def `xyz.driver.core.time.Time.columnType`: BaseColumnType[Time] =
- MappedColumnType.base[Time, Long](_.millis, Time(_))
+ MappedColumnType.base[Time, Long](_.millis, Time.apply)
+
+ override implicit def `java.time.Instant.columnType`: BaseColumnType[Instant] =
+ MappedColumnType.base[Instant, Long](_.toEpochMilli, Instant.ofEpochMilli)
}
}