aboutsummaryrefslogtreecommitdiff
path: root/core-database/src/main/scala/xyz/driver/core/database/package.scala
diff options
context:
space:
mode:
Diffstat (limited to 'core-database/src/main/scala/xyz/driver/core/database/package.scala')
-rw-r--r--core-database/src/main/scala/xyz/driver/core/database/package.scala61
1 files changed, 61 insertions, 0 deletions
diff --git a/core-database/src/main/scala/xyz/driver/core/database/package.scala b/core-database/src/main/scala/xyz/driver/core/database/package.scala
new file mode 100644
index 0000000..aee14c6
--- /dev/null
+++ b/core-database/src/main/scala/xyz/driver/core/database/package.scala
@@ -0,0 +1,61 @@
+package xyz.driver.core
+
+import java.sql.{Date => SqlDate}
+import java.util.Calendar
+
+import date.{Date, Month}
+import slick.dbio._
+import slick.jdbc.JdbcProfile
+import slick.relational.RelationalProfile
+
+package object database {
+
+ type Schema = {
+ def create: DBIOAction[Unit, NoStream, Effect.Schema]
+ def drop: DBIOAction[Unit, NoStream, Effect.Schema]
+ }
+
+ @deprecated(
+ "sbt-slick-codegen 0.11.0+ no longer needs to generate these methods. Please use the new `CodegenTables` trait when upgrading.",
+ "driver-core 1.8.12")
+ 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]
+ }
+
+ /** A structural type for schema traits generated by sbt-slick-codegen.
+ * This will compile with codegen versions before 0.11.0, but note
+ * that methods in [[GeneratedTables]] are no longer generated.
+ */
+ type CodegenTables[Profile <: RelationalProfile] = {
+ val profile: Profile
+ def schema: profile.SchemaDescription
+ }
+
+ 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.
+ val cal = Calendar.getInstance()
+ cal.setTime(sqlDate)
+ Date(cal.get(Calendar.YEAR), Month(cal.get(Calendar.MONTH)), cal.get(Calendar.DAY_OF_MONTH))
+ }
+
+ private[database] def dateToSqlDate(date: Date): SqlDate = {
+ val cal = Calendar.getInstance()
+ cal.set(date.year, date.month, date.day, 0, 0, 0)
+ new SqlDate(cal.getTime.getTime)
+ }
+
+ @deprecated("Dal is deprecated. Please use Repository trait instead!", "1.8.26")
+ type Dal = Repository
+
+ @deprecated("SlickDal is deprecated. Please use SlickRepository class instead!", "1.8.26")
+ type SlickDal = SlickRepository
+
+ @deprecated("FutureDal is deprecated. Please use FutureRepository class instead!", "1.8.26")
+ type FutureDal = FutureRepository
+}