diff options
author | vlad <vlad@drivergrp.com> | 2016-07-15 19:41:26 -0400 |
---|---|---|
committer | vlad <vlad@drivergrp.com> | 2016-07-15 19:41:26 -0400 |
commit | c0d574dc6134e4f406875ea5a1301ba46602a6ec (patch) | |
tree | 606a56d184bd8c4d67f98b5aa3fafa3640a8190f /src/main/scala/com/drivergrp/core/database.scala | |
download | driver-core-c0d574dc6134e4f406875ea5a1301ba46602a6ec.tar.gz driver-core-c0d574dc6134e4f406875ea5a1301ba46602a6ec.tar.bz2 driver-core-c0d574dc6134e4f406875ea5a1301ba46602a6ec.zip |
Initial commit with standard lib, might be used a example of cake
Diffstat (limited to 'src/main/scala/com/drivergrp/core/database.scala')
-rw-r--r-- | src/main/scala/com/drivergrp/core/database.scala | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/main/scala/com/drivergrp/core/database.scala b/src/main/scala/com/drivergrp/core/database.scala new file mode 100644 index 0000000..5eb9d28 --- /dev/null +++ b/src/main/scala/com/drivergrp/core/database.scala @@ -0,0 +1,45 @@ +package com.drivergrp.core + +import com.drivergrp.core.id.{Id, Name} + +import scala.concurrent.Future + + +object database { + + import slick.backend.DatabaseConfig + import slick.driver.JdbcProfile + + + trait DatabaseModule { + val profile: JdbcProfile + val database: JdbcProfile#Backend#Database + } + + trait ConfigDatabaseModule extends DatabaseModule { + + protected def databaseConfigKey: String + + private val dbConfig: DatabaseConfig[JdbcProfile] = DatabaseConfig.forConfig(databaseConfigKey) + + val profile: JdbcProfile = dbConfig.driver + val database: JdbcProfile#Backend#Database = dbConfig.db + } + + trait DatabaseObject { + def createTables(): Future[Unit] + def disconnect(): Unit + } + + trait IdColumnTypes { + this: DatabaseModule => + + import profile.api._ + + implicit def idColumnType[T] = + MappedColumnType.base[Id[T], Long]({ id => id: Long }, { id => Id[T](id) }) + + implicit def nameColumnType[T] = + MappedColumnType.base[Name[T], String]({ name => name: String }, { name => Name[T](name) }) + } +} |