aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStewart Stewart <stewinsalot@gmail.com>2017-05-25 16:21:26 -0700
committerGitHub <noreply@github.com>2017-05-25 16:21:26 -0700
commit0a3438068e4b853e4c42f83a4eb304ae53382e51 (patch)
tree226d7c720e9ac87107afeae19103e2bf90e57658
parente35191c28dd28b1fecb68d734b6375decbe1e44c (diff)
parent7b41250c9258f39551ea663fdf56492941597c43 (diff)
downloaddriver-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
-rw-r--r--src/main/scala/xyz/driver/core/database/database.scala17
-rw-r--r--src/main/scala/xyz/driver/core/database/package.scala16
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 = {