From 45a1f03dbad922b87a3ef609c2195d1294c3b894 Mon Sep 17 00:00:00 2001 From: Will Sargent Date: Sat, 25 Jan 2020 15:06:30 -0800 Subject: [PATCH 1/2] Update resolvers and move build files down for updates --- play-scala-isolated-slick-example/README.md | 2 +- play-scala-isolated-slick-example/build.sbt | 84 +++++++++++++++++-- .../modules/flyway/build.sbt | 20 ----- .../modules/slick/build.sbt | 39 --------- .../project/Build.scala | 32 ------- .../project/plugins.sbt | 2 +- 6 files changed, 79 insertions(+), 100 deletions(-) delete mode 100644 play-scala-isolated-slick-example/modules/flyway/build.sbt delete mode 100644 play-scala-isolated-slick-example/modules/slick/build.sbt delete mode 100644 play-scala-isolated-slick-example/project/Build.scala diff --git a/play-scala-isolated-slick-example/README.md b/play-scala-isolated-slick-example/README.md index da4b79550..067e98cc9 100644 --- a/play-scala-isolated-slick-example/README.md +++ b/play-scala-isolated-slick-example/README.md @@ -1,4 +1,4 @@ -# Play with Slick 3.1 +# Play with Slick 3.3 This project shows Play working with Slick. diff --git a/play-scala-isolated-slick-example/build.sbt b/play-scala-isolated-slick-example/build.sbt index 02b18aba7..2e659e2b9 100644 --- a/play-scala-isolated-slick-example/build.sbt +++ b/play-scala-isolated-slick-example/build.sbt @@ -1,14 +1,87 @@ -import play.core.PlayVersion.{ current => playVersion } +import com.github.tototoshi.sbt.slick.CodegenPlugin.autoImport.{slickCodegenDatabasePassword, slickCodegenDatabaseUrl, slickCodegenJdbcDriver} +import play.core.PlayVersion.{current => playVersion} +import _root_.slick.codegen.SourceCodeGenerator +import _root_.slick.{model => m} + +lazy val databaseUrl = sys.env.getOrElse("DB_DEFAULT_URL", "jdbc:h2:./test") +lazy val databaseUser = sys.env.getOrElse("DB_DEFAULT_USER", "sa") +lazy val databasePassword = sys.env.getOrElse("DB_DEFAULT_PASSWORD", "") + +version in ThisBuild := "1.1-SNAPSHOT" + +resolvers in ThisBuild ++= Seq( + "scalaz-bintray" at "https://dl.bintray.com/scalaz/releases", + Resolver.sonatypeRepo("releases"), + Resolver.sonatypeRepo("snapshots")) + +libraryDependencies in ThisBuild ++= Seq( + "javax.inject" % "javax.inject" % "1", + "joda-time" % "joda-time" % "2.10.2", + "org.joda" % "joda-convert" % "2.2.1", + "com.google.inject" % "guice" % "4.2.2" +) + +scalaVersion in ThisBuild := "2.13.1" +scalacOptions in ThisBuild ++= Seq( + "-encoding", "UTF-8", // yes, this is 2 args + "-deprecation", + "-feature", + "-unchecked", + "-Xlint", + "-Ywarn-numeric-widen" +) +javacOptions in ThisBuild ++= Seq("-source", "1.8", "-target", "1.8") + lazy val flyway = (project in file("modules/flyway")) .enablePlugins(FlywayPlugin) - .settings(Common.scalaSettings) + .settings( + libraryDependencies += "org.flywaydb" % "flyway-core" % "6.1.0", + flywayLocations := Seq("classpath:db/migration"), + flywayUrl := databaseUrl, + flywayUser := databaseUser, + flywayPassword := databasePassword, + flywayBaselineOnMigrate := true + ) lazy val api = (project in file("modules/api")) - .settings(Common.projectSettings) + lazy val slick = (project in file("modules/slick")) .enablePlugins(CodegenPlugin) - .settings(Common.projectSettings) + .settings( + libraryDependencies ++= Seq( + "com.zaxxer" % "HikariCP" % "3.3.1", + "com.typesafe.slick" %% "slick" % "3.3.2", + "com.typesafe.slick" %% "slick-hikaricp" % "3.3.2", + "com.github.tototoshi" %% "slick-joda-mapper" % "2.4.1" + ), + + slickCodegenDatabaseUrl := databaseUrl, + slickCodegenDatabaseUser := databaseUser, + slickCodegenDatabasePassword := databasePassword, + slickCodegenDriver := _root_.slick.jdbc.H2Profile, + slickCodegenJdbcDriver := "org.h2.Driver", + slickCodegenOutputPackage := "com.example.user.slick", + slickCodegenExcludedTables := Seq("schema_version"), + + slickCodegenCodeGenerator := { (model: m.Model) => + new SourceCodeGenerator(model) { + override def code = + "import com.github.tototoshi.slick.H2JodaSupport._\n" + "import org.joda.time.DateTime\n" + super.code + + override def Table = new Table(_) { + override def Column = new Column(_) { + override def rawType = model.tpe match { + case "java.sql.Timestamp" => "DateTime" // kill j.s.Timestamp + case _ => + super.rawType + } + } + } + } + }, + sourceGenerators in Compile += slickCodegen.taskValue + ) .aggregate(api) .dependsOn(api) @@ -16,13 +89,10 @@ lazy val root = (project in file(".")) .enablePlugins(PlayScala) .settings( name := """play-scala-isolated-slick-example""", - version := "1.1-SNAPSHOT", - scalaVersion := "2.13.1", TwirlKeys.templateImports += "com.example.user.User", libraryDependencies ++= Seq( guice, "com.h2database" % "h2" % "1.4.199", - "org.flywaydb" % "flyway-core" % "6.1.0", ws % Test, "org.scalatestplus.play" %% "scalatestplus-play" % "5.0.0" % Test ), diff --git a/play-scala-isolated-slick-example/modules/flyway/build.sbt b/play-scala-isolated-slick-example/modules/flyway/build.sbt deleted file mode 100644 index c1d3b0a7f..000000000 --- a/play-scala-isolated-slick-example/modules/flyway/build.sbt +++ /dev/null @@ -1,20 +0,0 @@ -// Database Migrations: -// run with "sbt flywayMigrate" -// http://flywaydb.org/getstarted/firststeps/sbt.html - -//$ export DB_DEFAULT_URL="jdbc:h2:/tmp/example.db" -//$ export DB_DEFAULT_USER="sa" -//$ export DB_DEFAULT_PASSWORD="" - -libraryDependencies += "org.flywaydb" % "flyway-core" % "5.2.4" - -lazy val databaseUrl = sys.env.getOrElse("DB_DEFAULT_URL", "jdbc:h2:./test") -lazy val databaseUser = sys.env.getOrElse("DB_DEFAULT_USER", "sa") -lazy val databasePassword = sys.env.getOrElse("DB_DEFAULT_PASSWORD", "") - -flywayLocations := Seq("classpath:db/migration") - -flywayUrl := databaseUrl -flywayUser := databaseUser -flywayPassword := databasePassword -flywayBaselineOnMigrate := true diff --git a/play-scala-isolated-slick-example/modules/slick/build.sbt b/play-scala-isolated-slick-example/modules/slick/build.sbt deleted file mode 100644 index 2b19cf7ab..000000000 --- a/play-scala-isolated-slick-example/modules/slick/build.sbt +++ /dev/null @@ -1,39 +0,0 @@ -import slick.codegen.SourceCodeGenerator -import slick.{ model => m } - -libraryDependencies ++= Seq( - "com.zaxxer" % "HikariCP" % "3.3.1", - "com.typesafe.slick" %% "slick" % "3.3.2", - "com.typesafe.slick" %% "slick-hikaricp" % "3.3.2", - "com.github.tototoshi" %% "slick-joda-mapper" % "2.4.1" -) - -lazy val databaseUrl = sys.env.getOrElse("DB_DEFAULT_URL", "jdbc:h2:./test") -lazy val databaseUser = sys.env.getOrElse("DB_DEFAULT_USER", "sa") -lazy val databasePassword = sys.env.getOrElse("DB_DEFAULT_PASSWORD", "") - -slickCodegenDatabaseUrl := databaseUrl -slickCodegenDatabaseUser := databaseUser -slickCodegenDatabasePassword := databasePassword -slickCodegenDriver := slick.jdbc.H2Profile -slickCodegenJdbcDriver := "org.h2.Driver" -slickCodegenOutputPackage := "com.example.user.slick" -slickCodegenExcludedTables := Seq("schema_version") - -slickCodegenCodeGenerator := { (model: m.Model) => - new SourceCodeGenerator(model) { - override def code = - "import com.github.tototoshi.slick.H2JodaSupport._\n" + "import org.joda.time.DateTime\n" + super.code - override def Table = new Table(_) { - override def Column = new Column(_) { - override def rawType = model.tpe match { - case "java.sql.Timestamp" => "DateTime" // kill j.s.Timestamp - case _ => - super.rawType - } - } - } - } -} - -sourceGenerators in Compile += slickCodegen.taskValue diff --git a/play-scala-isolated-slick-example/project/Build.scala b/play-scala-isolated-slick-example/project/Build.scala deleted file mode 100644 index cb24aa50d..000000000 --- a/play-scala-isolated-slick-example/project/Build.scala +++ /dev/null @@ -1,32 +0,0 @@ -import sbt.Keys._ -import sbt.{Resolver, _} - -object Common { - - def scalaSettings = Seq( - scalaVersion := "2.13.1", - scalacOptions ++= Seq( - "-encoding", "UTF-8", // yes, this is 2 args - "-deprecation", - "-feature", - "-unchecked", - "-Xlint", - "-Ywarn-numeric-widen" - ), - javacOptions ++= Seq("-source", "1.8", "-target", "1.8"), - ) - - def projectSettings = scalaSettings ++ Seq( - resolvers ++= Seq( - "scalaz-bintray" at "http://dl.bintray.com/scalaz/releases", - Resolver.sonatypeRepo("releases"), - Resolver.sonatypeRepo("snapshots")), - libraryDependencies ++= Seq( - "javax.inject" % "javax.inject" % "1", - "joda-time" % "joda-time" % "2.10.2", - "org.joda" % "joda-convert" % "2.2.1", - "com.google.inject" % "guice" % "4.2.2" - ), - scalacOptions in Test ++= Seq("-Yrangepos") - ) -} diff --git a/play-scala-isolated-slick-example/project/plugins.sbt b/play-scala-isolated-slick-example/project/plugins.sbt index 2db1a82bd..3c69f30ca 100644 --- a/play-scala-isolated-slick-example/project/plugins.sbt +++ b/play-scala-isolated-slick-example/project/plugins.sbt @@ -4,7 +4,7 @@ resolvers += "Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repos resolvers += "Flyway" at "https://flywaydb.org/repo" -resolvers += "Flyway" at "https://davidmweber.github.io/flyway-sbt.repo" +resolvers += "Flyway SBT" at "https://davidmweber.github.io/flyway-sbt.repo" // Database migration addSbtPlugin("io.github.davidmweber" % "flyway-sbt" % "6.0.7") From 5172e98a9cf11e7f392c752b0809efc81396c0b5 Mon Sep 17 00:00:00 2001 From: Will Sargent Date: Sat, 25 Jan 2020 15:56:06 -0800 Subject: [PATCH 2/2] update with test --- play-scala-isolated-slick-example/build.sbt | 1 + 1 file changed, 1 insertion(+) diff --git a/play-scala-isolated-slick-example/build.sbt b/play-scala-isolated-slick-example/build.sbt index 2e659e2b9..94f1427d0 100644 --- a/play-scala-isolated-slick-example/build.sbt +++ b/play-scala-isolated-slick-example/build.sbt @@ -94,6 +94,7 @@ lazy val root = (project in file(".")) guice, "com.h2database" % "h2" % "1.4.199", ws % Test, + "org.flywaydb" % "flyway-core" % "6.1.0" % Test, "org.scalatestplus.play" %% "scalatestplus-play" % "5.0.0" % Test ), fork in Test := true