diff options
author | Zach Smith <zach@driver.xyz> | 2017-11-14 17:11:32 -0800 |
---|---|---|
committer | Zach Smith <zach@driver.xyz> | 2017-11-14 17:11:32 -0800 |
commit | 535058f5995a4fb9cc240225a617a51a0991c70d (patch) | |
tree | cc61c91bd38d1873aab143928df51cd5d0c99a86 /src/main/scala | |
parent | 523cc3ff8c3ee8f0e968d2a193bf427a8ef772bf (diff) | |
download | driver-core-535058f5995a4fb9cc240225a617a51a0991c70d.tar.gz driver-core-535058f5995a4fb9cc240225a617a51a0991c70d.tar.bz2 driver-core-535058f5995a4fb9cc240225a617a51a0991c70d.zip |
Add implicit GetResult definitions
Diffstat (limited to 'src/main/scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/database/SlickGetResultSupport.scala | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/main/scala/xyz/driver/core/database/SlickGetResultSupport.scala b/src/main/scala/xyz/driver/core/database/SlickGetResultSupport.scala new file mode 100644 index 0000000..9a77a82 --- /dev/null +++ b/src/main/scala/xyz/driver/core/database/SlickGetResultSupport.scala @@ -0,0 +1,38 @@ +package xyz.driver.core.database + +import java.util.Calendar + +import slick.jdbc.GetResult +import xyz.driver.core.date.{Date, Month} +import xyz.driver.core.{Id, Name} +import xyz.driver.core.time.Time + +trait SlickGetResultSupport { + implicit def idGetResult[U]: GetResult[Id[U]] = + GetResult(r => Id[U](r.nextString())) + implicit def idOptionGetResult[U]: GetResult[Option[Id[U]]] = + GetResult(_.nextStringOption().map(Id.apply[U])) + + implicit def nameGetResult[U]: GetResult[Name[U]] = + GetResult(r => Name[U](r.nextString())) + implicit def nameOptionGetResult[U]: GetResult[Option[Name[U]]] = + GetResult(_.nextStringOption().map(Name.apply[U])) + + implicit val timeGetResult: GetResult[Time] = + GetResult(r => Time(r.nextTimestamp.getTime)) + implicit val timeOptionGetResult: GetResult[Option[Time]] = + GetResult(_.nextTimestampOption().map(t => Time(t.getTime))) + + private def javaDateToDate(jdate: java.util.Date): Date = { + val cal = Calendar.getInstance + cal.setTime(jdate) + Date(cal.get(Calendar.YEAR), Month(cal.get(Calendar.MONTH)), cal.get(Calendar.DAY_OF_MONTH)) + } + + implicit val dateGetResult: GetResult[Date] = + GetResult(r => javaDateToDate(r.nextDate())) + implicit val dateOptionGetResult: GetResult[Option[Date]] = + GetResult(_.nextDateOption().map(javaDateToDate)) +} + +object SlickGetResultSupport extends SlickGetResultSupport |