From 02810f5eac3b4ce6a5d1128281a01b2a2ed0647c Mon Sep 17 00:00:00 2001 From: vlad Date: Fri, 21 Oct 2016 16:07:05 -0400 Subject: Renamed package to xyz, New formatting, authorize directive supporting multiple permissions --- src/main/scala/xyz/driver/core/database.scala | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/main/scala/xyz/driver/core/database.scala (limited to 'src/main/scala/xyz/driver/core/database.scala') diff --git a/src/main/scala/xyz/driver/core/database.scala b/src/main/scala/xyz/driver/core/database.scala new file mode 100644 index 0000000..1039be4 --- /dev/null +++ b/src/main/scala/xyz/driver/core/database.scala @@ -0,0 +1,52 @@ +package xyz.driver.core + +import xyz.driver.core.time.Time + +import scala.concurrent.Future +import slick.backend.DatabaseConfig +import slick.driver.JdbcProfile + +object database { + + trait Database { + val profile: JdbcProfile + val database: JdbcProfile#Backend#Database + } + + object Database { + + def fromConfig(databaseName: String): Database = { + val dbConfig: DatabaseConfig[JdbcProfile] = DatabaseConfig.forConfig(databaseName) + + new Database { + val profile: JdbcProfile = dbConfig.driver + val database: JdbcProfile#Backend#Database = dbConfig.db + } + } + } + + trait IdColumnTypes { + val database: Database + + import database.profile.api._ + + implicit def idColumnType[T] = + MappedColumnType.base[Id[T], Long](id => id: Long, Id[T](_)) + + implicit def nameColumnType[T] = + MappedColumnType.base[Name[T], String](name => name: String, Name[T](_)) + + implicit val timeColumnType = MappedColumnType.base[Time, Long](time => time.millis, Time(_)) + } + + trait DatabaseObject extends IdColumnTypes { + + def createTables(): Future[Unit] + def disconnect(): Unit + } + + abstract class DatabaseObjectAdapter extends DatabaseObject { + def createTables(): Future[Unit] = Future.successful(()) + def disconnect(): Unit = {} + } +} -- cgit v1.2.3