diff options
-rwxr-xr-x | README.md | 2 | ||||
-rw-r--r-- | project/Build.scala | 16 | ||||
-rw-r--r-- | src/main/scala/Example.scala | 7 | ||||
-rw-r--r-- | src/main/sql/create.sql | 4 |
4 files changed, 16 insertions, 13 deletions
@@ -1,3 +1,3 @@ -This code example shows how to setup sbt to use Slick's preconfigued code-generator for working with an existing database schema. `project/Build.scala` enables automatically as well as manually triggered code-generation. `src/main/scala/Example.scala` uses the generated code. The code is generated into file `target/scala-2.10/src_managed/slick/demo/Tables.scala`, which can be changed in the sbt script. It is usally wise to keep the generated Slick code under version control. +This code example shows how to setup sbt to use Slick's preconfigued code-generator for working with an existing database schema. `project/Build.scala` enables automatically as well as manually triggered code-generation. `src/main/scala/Example.scala` uses the generated code. The code is generated into file `target/scala-2.11/src_managed/slick/demo/Tables.scala`, which can be changed in the sbt script. It is usally wise to keep the generated Slick code under version control. Use `sbt run` to run the demo. diff --git a/project/Build.scala b/project/Build.scala index a7d27d9..17f055b 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -7,16 +7,18 @@ import Tests._ * database before compiling the projects code. */ object myBuild extends Build { + val slickVersion = "3.0.1" + lazy val mainProject = Project( id="main", base=file("."), settings = Project.defaultSettings ++ Seq( - scalaVersion := "2.10.3", + scalaVersion := "2.11.6", libraryDependencies ++= List( - "com.typesafe.slick" %% "slick" % "2.1.0", - "com.typesafe.slick" %% "slick-codegen" % "2.1.0-RC3", - "org.slf4j" % "slf4j-nop" % "1.6.4", - "com.h2database" % "h2" % "1.3.170" + "com.typesafe.slick" %% "slick" % slickVersion, + "com.typesafe.slick" %% "slick-codegen" % slickVersion, + "org.slf4j" % "slf4j-nop" % "1.7.12", + "com.h2database" % "h2" % "1.4.187" ), slick <<= slickCodeGenTask, // register manual sbt command sourceGenerators in Compile <+= slickCodeGenTask // register automatic code generation on every compile, remove for only manual use @@ -29,9 +31,9 @@ object myBuild extends Build { val outputDir = (dir / "slick").getPath // place generated files in sbt's managed sources folder val url = "jdbc:h2:mem:test;INIT=runscript from 'src/main/sql/create.sql'" // connection info for a pre-populated throw-away, in-memory db for this demo, which is freshly initialized on every run val jdbcDriver = "org.h2.Driver" - val slickDriver = "scala.slick.driver.H2Driver" + val slickDriver = "slick.driver.H2Driver" val pkg = "demo" - toError(r.run("scala.slick.codegen.SourceCodeGenerator", cp.files, Array(slickDriver, jdbcDriver, url, outputDir, pkg), s.log)) + toError(r.run("slick.codegen.SourceCodeGenerator", cp.files, Array(slickDriver, jdbcDriver, url, outputDir, pkg), s.log)) val fname = outputDir + "/demo/Tables.scala" Seq(file(fname)) } diff --git a/src/main/scala/Example.scala b/src/main/scala/Example.scala index ffa964b..3eaf9d3 100644 --- a/src/main/scala/Example.scala +++ b/src/main/scala/Example.scala @@ -2,7 +2,8 @@ object Tables extends{ // or just use object demo.Tables, which is hard-wired to val profile = scala.slick.driver.H2Driver
} with demo.Tables
import Tables._
-import Tables.profile.simple._
+import Tables.profile.api._
+import scala.concurrent.ExecutionContext.Implicits.global
object Example extends App {
// connection info for a pre-populated throw-away, in-memory db for this demo, which is freshly initialized on every run
@@ -13,8 +14,8 @@ object Example extends App { val q = Companies.join(Computers).on(_.id === _.manufacturerId)
.map{ case (co,cp) => (co.name, cp.name) }
- db.withTransaction { implicit session =>
- println( q.run.groupBy{ case (co,cp) => co }
+ db.run(q.result).foreach { result =>
+ println(result.groupBy{ case (co,cp) => co }
.mapValues(_.map{ case (co,cp) => cp })
.mkString("\n")
)
diff --git a/src/main/sql/create.sql b/src/main/sql/create.sql index 27d5034..22f290e 100644 --- a/src/main/sql/create.sql +++ b/src/main/sql/create.sql @@ -1,5 +1,5 @@ -create table "COMPUTERS" ("ID" INTEGER NOT NULL,"NAME" VARCHAR NOT NULL,"MANUFACTURER_ID" INTEGER NOT NULL); -create table "COMPANIES" ("ID" INTEGER NOT NULL,"NAME" VARCHAR NOT NULL); +create table IF NOT EXISTS "COMPUTERS" ("ID" INTEGER NOT NULL,"NAME" VARCHAR NOT NULL,"MANUFACTURER_ID" INTEGER NOT NULL); +create table IF NOT EXISTS "COMPANIES" ("ID" INTEGER NOT NULL,"NAME" VARCHAR NOT NULL); insert into "COMPANIES" values (1,'Apple Inc.'); |