Skip to content

Plugin for using Driver's customized Slick schema code generator.

License

Notifications You must be signed in to change notification settings

driver-oss/slick-codegen-plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sbt plugin for slick schema code generation

Extends/customizes the Slick schema code generator and wraps it in a parameterized plugin. See original source code here.

Configuration

project/plugins.sbt

addSbtPlugin("xyz.driver" % "sbt-slick-codegen" % "0.10.2")

// Replace with the appropriate jdbc driver for your database:
libraryDependencies += "org.postgresql" % "postgresql" % "9.3-1104-jdbc41"

The jdbc-driver needs to be added separately to plugins.sbt and build.sbt as a dependency for the project and codegen, respectively.

Version 0.10.x requires sbt 1.0. For sbt 0.13, use 0.9.8

(also note that postgres jdbc driver 9.4.x will not expose columns in certain metadata "tables", causing generated code not to compile)

build.sbt

Minimally, define codegenURI, codegenPackage, and codegenOutputPath like so:

enablePlugins(CodegenPlugin)

codegenURI := "file:src/main/resources/conf/database.conf#database"

codegenPackage := "xyz.driver.schemas"

codegenOutputPath := (baseDirectory.value / "src" / "main" / "scala").getPath

Use settings -V codegen to view documentation for all available codegen settings.

Using

Local dev/testing instance with sqitch and docker

Code should be committed locally (rather than being placed in a sourceMangaged directory and being generated as part of build), so that it can be read, reviewed, and debugged. This requires having a locally accessible database running from which to generate code. Configure such a dabase like so:

  1. Install docker.

  2. Start a vanilla docker instance

docker run -it -d -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_DB=postgres -e POSTGRES_PASSWORD=postgres postgres

add 127.0.0.1 postgres postgres to /etc/hosts to make it accessible locally as "postgres".

  1. Configure database in typesafe config

If sqitch is already configured, modify step 1 to make docker instance look like the appropriate database in application.conf. For the above docker postgres instance, the following configuration will work:

database {
  driver = "slick.driver.PostgresDriver$"
  db {
    url = "jdbc:postgresql://postgres:5432/postgres"
    driver = org.postgresql.Driver
    user = "postgres"
    password = "postgres"

    # other options as appropriate
  }
}

In build.sbt make sure codegenURI := "typesafeConfig#database" where typesafeConfig is the url of the typesafe config and database is the name of the database configuration in that file to use.

  1. Run codegen with sbt genTables

Rememeber to run migrations first! If you just added a new schema/table in a migration, be sure to update codegenSchemaWhitelist. Other than automated code formatting, the output source shouldn't be modified, since genTables should be run every time the schema is updated and will overwrite any manual changes.

About

Plugin for using Driver's customized Slick schema code generator.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages