From e30d8b75394c4dc95d0c57f324001c52f911e30d Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Wed, 24 May 2017 18:02:31 -0700 Subject: add base trait for all generated slick schemas --- src/main/scala/xyz/driver/core/database/database.scala | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/scala/xyz/driver/core/database/database.scala b/src/main/scala/xyz/driver/core/database/database.scala index b7a4165..4c65385 100644 --- a/src/main/scala/xyz/driver/core/database/database.scala +++ b/src/main/scala/xyz/driver/core/database/database.scala @@ -121,6 +121,16 @@ package database { def naturalKeyMapper[T] = MappedColumnType.base[Id[T], String](_.value, Id[T](_)) } + trait GeneratedTables extends ColumnTypes { + import slick.dbio._ + + val profile: JdbcProfile + def schema: profile.SchemaDescription + + def createNamespaceSchema: StreamingDBIO[Vector[Unit], Unit] + def dropNamespaceSchema: StreamingDBIO[Vector[Unit], Unit] + } + trait DatabaseObject extends ColumnTypes { def createTables(): Future[Unit] def disconnect(): Unit -- cgit v1.2.3 From 82fb75bd23642b46ab2a4d32c49e6967d9c5a7c0 Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Wed, 24 May 2017 18:03:26 -0700 Subject: add fixture trait for use in database component tests --- .../scala/xyz/driver/core/database/database.scala | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/scala/xyz/driver/core/database/database.scala b/src/main/scala/xyz/driver/core/database/database.scala index 4c65385..8d61899 100644 --- a/src/main/scala/xyz/driver/core/database/database.scala +++ b/src/main/scala/xyz/driver/core/database/database.scala @@ -131,6 +131,25 @@ package database { def dropNamespaceSchema: StreamingDBIO[Vector[Unit], Unit] } + 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 + + // Note: Does not call `super.beforeEach()` (for org.scalatest.BeforeAndAfterEach) + def beforeEach(): Unit = { + Await.result(slickDal.execute(tables.createNamespaceSchema >> tables.schema.create), Duration.Inf) + } + + // Note: Does not call `super.afterEach()` (for org.scalatest.BeforeAndAfterEach) + def afterEach(): Unit = { + Await.result(slickDal.execute(tables.schema.drop >> tables.dropNamespaceSchema), Duration.Inf) + } + } + trait DatabaseObject extends ColumnTypes { def createTables(): Future[Unit] def disconnect(): Unit -- cgit v1.2.3 From 576cce1fd5d58030a2c66bd3e93956c3e7cb770e Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Thu, 25 May 2017 15:46:51 -0700 Subject: make GeneratedTables a structural type --- src/main/scala/xyz/driver/core/database/database.scala | 10 ---------- src/main/scala/xyz/driver/core/database/package.scala | 12 +++++++++++- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/scala/xyz/driver/core/database/database.scala b/src/main/scala/xyz/driver/core/database/database.scala index 8d61899..6fbea03 100644 --- a/src/main/scala/xyz/driver/core/database/database.scala +++ b/src/main/scala/xyz/driver/core/database/database.scala @@ -121,16 +121,6 @@ package database { def naturalKeyMapper[T] = MappedColumnType.base[Id[T], String](_.value, Id[T](_)) } - trait GeneratedTables extends ColumnTypes { - import slick.dbio._ - - val profile: JdbcProfile - def schema: profile.SchemaDescription - - def createNamespaceSchema: StreamingDBIO[Vector[Unit], Unit] - def dropNamespaceSchema: StreamingDBIO[Vector[Unit], Unit] - } - trait CreateAndDropSchema { val slickDal: xyz.driver.core.database.SlickDal val tables: GeneratedTables diff --git a/src/main/scala/xyz/driver/core/database/package.scala b/src/main/scala/xyz/driver/core/database/package.scala index 791a688..a28d033 100644 --- a/src/main/scala/xyz/driver/core/database/package.scala +++ b/src/main/scala/xyz/driver/core/database/package.scala @@ -4,7 +4,8 @@ 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 { @@ -13,6 +14,15 @@ package object database { def drop: DBIOAction[Unit, NoStream, slick.dbio.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 = { // NOTE: SQL date does not have a time component, so this date // should only be interpreted in the running JVMs timezone. -- cgit v1.2.3 From 7b41250c9258f39551ea663fdf56492941597c43 Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Thu, 25 May 2017 16:11:31 -0700 Subject: disassociate createAndDropSchema from scalatest --- src/main/scala/xyz/driver/core/database/database.scala | 6 ++---- src/main/scala/xyz/driver/core/database/package.scala | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/scala/xyz/driver/core/database/database.scala b/src/main/scala/xyz/driver/core/database/database.scala index 6fbea03..8426309 100644 --- a/src/main/scala/xyz/driver/core/database/database.scala +++ b/src/main/scala/xyz/driver/core/database/database.scala @@ -129,13 +129,11 @@ package database { import scala.concurrent.Await import scala.concurrent.duration.Duration - // Note: Does not call `super.beforeEach()` (for org.scalatest.BeforeAndAfterEach) - def beforeEach(): Unit = { + def createSchema(): Unit = { Await.result(slickDal.execute(tables.createNamespaceSchema >> tables.schema.create), Duration.Inf) } - // Note: Does not call `super.afterEach()` (for org.scalatest.BeforeAndAfterEach) - def afterEach(): Unit = { + def dropSchema(): Unit = { Await.result(slickDal.execute(tables.schema.drop >> tables.dropNamespaceSchema), Duration.Inf) } } diff --git a/src/main/scala/xyz/driver/core/database/package.scala b/src/main/scala/xyz/driver/core/database/package.scala index a28d033..b39169d 100644 --- a/src/main/scala/xyz/driver/core/database/package.scala +++ b/src/main/scala/xyz/driver/core/database/package.scala @@ -10,8 +10,8 @@ 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 = { -- cgit v1.2.3