aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/com/drivergrp/core/database.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/com/drivergrp/core/database.scala')
-rw-r--r--src/main/scala/com/drivergrp/core/database.scala43
1 files changed, 19 insertions, 24 deletions
diff --git a/src/main/scala/com/drivergrp/core/database.scala b/src/main/scala/com/drivergrp/core/database.scala
index 5eb9d28..f39512c 100644
--- a/src/main/scala/com/drivergrp/core/database.scala
+++ b/src/main/scala/com/drivergrp/core/database.scala
@@ -1,45 +1,40 @@
package com.drivergrp.core
import com.drivergrp.core.id.{Id, Name}
-
import scala.concurrent.Future
+import slick.backend.DatabaseConfig
+import slick.driver.JdbcProfile
object database {
- import slick.backend.DatabaseConfig
- import slick.driver.JdbcProfile
-
-
- trait DatabaseModule {
+ trait Database {
val profile: JdbcProfile
val database: JdbcProfile#Backend#Database
- }
- trait ConfigDatabaseModule extends 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) })
+ }
- protected def databaseConfigKey: String
+ object Database {
- private val dbConfig: DatabaseConfig[JdbcProfile] = DatabaseConfig.forConfig(databaseConfigKey)
+ def fromConfig(databaseName: String): Database = {
+ val dbConfig: DatabaseConfig[JdbcProfile] = DatabaseConfig.forConfig(databaseName)
- val profile: JdbcProfile = dbConfig.driver
- val database: JdbcProfile#Backend#Database = dbConfig.db
+ new Database {
+ 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) })
- }
}