diff options
author | Stewart Stewart <stewinsalot@gmail.com> | 2017-05-25 16:21:26 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-25 16:21:26 -0700 |
commit | 0a3438068e4b853e4c42f83a4eb304ae53382e51 (patch) | |
tree | 226d7c720e9ac87107afeae19103e2bf90e57658 /src/main/scala | |
parent | e35191c28dd28b1fecb68d734b6375decbe1e44c (diff) | |
parent | 7b41250c9258f39551ea663fdf56492941597c43 (diff) | |
download | driver-core-0a3438068e4b853e4c42f83a4eb304ae53382e51.tar.gz driver-core-0a3438068e4b853e4c42f83a4eb304ae53382e51.tar.bz2 driver-core-0a3438068e4b853e4c42f83a4eb304ae53382e51.zip |
Merge pull request #43 from drivergroup/PDW-744-component-test-helpersv0.12.10
PDW-744 Add abstractions to support DAL test best practices
Diffstat (limited to 'src/main/scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/database/database.scala | 17 | ||||
-rw-r--r-- | src/main/scala/xyz/driver/core/database/package.scala | 16 |
2 files changed, 30 insertions, 3 deletions
diff --git a/src/main/scala/xyz/driver/core/database/database.scala b/src/main/scala/xyz/driver/core/database/database.scala index b7a4165..8426309 100644 --- a/src/main/scala/xyz/driver/core/database/database.scala +++ b/src/main/scala/xyz/driver/core/database/database.scala @@ -121,6 +121,23 @@ package database { def naturalKeyMapper[T] = MappedColumnType.base[Id[T], String](_.value, Id[T](_)) } + trait CreateAndDropSchema { + val slickDal: xyz.driver.core.database.SlickDal + val tables: GeneratedTables + + import tables.profile.api._ + import scala.concurrent.Await + import scala.concurrent.duration.Duration + + def createSchema(): Unit = { + Await.result(slickDal.execute(tables.createNamespaceSchema >> tables.schema.create), Duration.Inf) + } + + def dropSchema(): Unit = { + Await.result(slickDal.execute(tables.schema.drop >> tables.dropNamespaceSchema), Duration.Inf) + } + } + trait DatabaseObject extends ColumnTypes { def createTables(): Future[Unit] def disconnect(): Unit diff --git a/src/main/scala/xyz/driver/core/database/package.scala b/src/main/scala/xyz/driver/core/database/package.scala index 791a688..b39169d 100644 --- a/src/main/scala/xyz/driver/core/database/package.scala +++ b/src/main/scala/xyz/driver/core/database/package.scala @@ -4,13 +4,23 @@ import java.sql.{Date => SqlDate} import java.util.Calendar import date.{Date, Month} -import slick.dbio.{DBIOAction, NoStream} +import slick.dbio._ +import slick.driver.JdbcProfile package object database { type Schema = { - def create: DBIOAction[Unit, NoStream, slick.dbio.Effect.Schema] - def drop: DBIOAction[Unit, NoStream, slick.dbio.Effect.Schema] + def create: DBIOAction[Unit, NoStream, Effect.Schema] + def drop: DBIOAction[Unit, NoStream, Effect.Schema] + } + + type GeneratedTables = { + // structure of Slick data model traits generated by sbt-slick-codegen + val profile: JdbcProfile + def schema: profile.SchemaDescription + + def createNamespaceSchema: StreamingDBIO[Vector[Unit], Unit] + def dropNamespaceSchema: StreamingDBIO[Vector[Unit], Unit] } private[database] def sqlDateToDate(sqlDate: SqlDate): Date = { |