aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/com/drivergrp/core/database.scala
diff options
context:
space:
mode:
authorvlad <vlad@drivergrp.com>2016-07-16 02:43:54 -0400
committervlad <vlad@drivergrp.com>2016-07-16 02:43:54 -0400
commit980deaf70e4e0ba906d0af534aebc839015f0581 (patch)
tree41730ad413bd7581d0ab54429930e83c48f97fe6 /src/main/scala/com/drivergrp/core/database.scala
parentc0d574dc6134e4f406875ea5a1301ba46602a6ec (diff)
downloaddriver-core-980deaf70e4e0ba906d0af534aebc839015f0581.tar.gz
driver-core-980deaf70e4e0ba906d0af534aebc839015f0581.tar.bz2
driver-core-980deaf70e4e0ba906d0af534aebc839015f0581.zip
Dependency injection through constructor parameters + bug fixes
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) })
- }
}