SourceCodeGenerator

slick.codegen.SourceCodeGenerator
See theSourceCodeGenerator companion object

A customizable code generator for working with Slick.

For usage information please see the corresponding part of the Slick documentation.

The implementation is structured into a small hierarchy of sub-generators responsible for different fragments of the complete output. The implementation of each sub-generator can be swapped out for a customized one by overriding the corresponding factory method. SourceCodeGenerator contains a factory method Table, which it uses to generate a sub-generator for each table. The sub-generator Table in turn contains sub-generators for Table classes, entity case classes, columns, key, indices, etc. Custom sub-generators can easily be added as well.

Within the sub-generators the relevant part of the Slick data model can be accessed to drive the code generation.

Of coures it makes sense to integrate this into your build process.

Attributes

model

Slick data model for which code should be generated.

Companion:
object
Source:
SourceCodeGenerator.scala
Graph
Supertypes
class AbstractGenerator[String, String, String]
trait GeneratorHelpers[String, String, String]
class Object
trait Matchable
class Any

Members list

Concise view

Basic customization overrides

abstract case class AbstractTableDef(model: Table)

Code generator for table related code

Code generator for table related code

Attributes

model

corresponding Slick meta model component

Inherited from:
AbstractGenerator
Source:
AbstractGenerator.scala
Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Known subtypes
def Table: Table => Table

Table generator factory. Override for customization.

Table generator factory. Override for customization.

Attributes

Source:
SourceCodeGenerator.scala
def code: String

Generates code for the complete model (not wrapped in a package yet)

Generates code for the complete model (not wrapped in a package yet)

Attributes

Inherited from:
AbstractSourceCodeGenerator
Source:
AbstractSourceCodeGenerator.scala
def codeForContainer: String

Generates code for the container class (not wrapped in a package yet)

Generates code for the container class (not wrapped in a package yet)

Attributes

Inherited from:
AbstractSourceCodeGenerator
Source:
AbstractSourceCodeGenerator.scala
def codeForDDL: String

Generates code for the DDL statement.

Generates code for the DDL statement.

Attributes

Inherited from:
AbstractSourceCodeGenerator
Source:
AbstractSourceCodeGenerator.scala
def codePerTable: Map[String, String]

Generates a map that associates the table name with its generated code (not wrapped in a package yet).

Generates a map that associates the table name with its generated code (not wrapped in a package yet).

Attributes

Inherited from:
AbstractSourceCodeGenerator
Source:
AbstractSourceCodeGenerator.scala
def entityName: String => String

Maps database table name to entity case class name

Maps database table name to entity case class name

Attributes

Inherited from:
AbstractGenerator
Source:
AbstractGenerator.scala
def packageCode(profile: String, pkg: String, container: String, parentType: Option[String]): String

Generates code providing the data model as trait and object in a Scala package

Generates code providing the data model as trait and object in a Scala package

Attributes

container

The name of a trait and an object the generated code will be placed in within the specified package.

pkg

Scala package the generated code is placed in

profile

Slick profile that is imported in the generated package (e.g. slick.jdbc.H2Profile)

Inherited from:
OutputHelpers
Source:
OutputHelpers.scala
def packageContainerCode(profile: String, pkg: String, container: String): String

Generates code providing the stand-alone slick data model for immediate use.

Generates code providing the stand-alone slick data model for immediate use.

Attributes

container

The name of a trait and an object the generated code will be placed in within the specified package.

pkg

Scala package the generated code is placed in

profile

Slick profile that is imported in the generated package (e.g. scala.slick.driver.H2Driver)

Inherited from:
OutputHelpers
Source:
OutputHelpers.scala
def packageTableCode(tableName: String, tableCode: String, pkg: String, container: String): String

Generates code for the given table. The tableName and tableCode parameters should come from the #codePerTable map.

Generates code for the given table. The tableName and tableCode parameters should come from the #codePerTable map.

Attributes

container

The name of the container

pkg

Scala package the generated code is placed in

tableCode

: the generated code for the table.

tableName

: the name of the table

Inherited from:
OutputHelpers
Source:
OutputHelpers.scala
def tableName: String => String

Maps database table name to Table class and value name

Maps database table name to Table class and value name

Attributes

Inherited from:
AbstractGenerator
Source:
AbstractGenerator.scala

Output

def writeStringToFile(content: String, folder: String, pkg: String, fileName: String): Unit

Writes given content to a file. Ensures the file ends with a newline character.

Writes given content to a file. Ensures the file ends with a newline character.

Attributes

Inherited from:
OutputHelpers
Source:
OutputHelpers.scala
def writeToFile(profile: String, folder: String, pkg: String, container: String, fileName: String): Unit

Generates code and writes it to a file. Creates a folder structure for the given package inside the given srcFolder and places the new file inside or overrides the existing one.

Generates code and writes it to a file. Creates a folder structure for the given package inside the given srcFolder and places the new file inside or overrides the existing one.

Attributes

container

The name of a trait and an object the generated code will be placed in within the specified package.

fileName

Name of the output file, to which the code will be written

folder

target folder, in which the package structure folders are placed

pkg

Scala package the generated code is placed in (a subfolder structure will be created within srcFolder)

profile

Slick profile that is imported in the generated package (e.g. slick.jdbc.H2Profile)

Inherited from:
OutputHelpers
Source:
OutputHelpers.scala
def writeToMultipleFiles(profile: String, folder: String, pkg: String, container: String): Unit

Generates code and writes it to multiple files. Creates a folder structure for the given package inside the given srcFolder and places the new files inside or overrides the existing one.

Generates code and writes it to multiple files. Creates a folder structure for the given package inside the given srcFolder and places the new files inside or overrides the existing one.

Attributes

container

The name of a trait and an object the generated code will be placed in within the specified package.

folder

target folder, in which the output files are placed

pkg

Scala package the generated code is placed in (a subfolder structure will be created within srcFolder)

profile

Slick profile that is imported in the generated package (e.g. scala.slick.driver.H2Driver)

Inherited from:
OutputHelpers
Source:
OutputHelpers.scala

Type members

Classlikes

Attributes

Source:
SourceCodeGenerator.scala
Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any

Inherited classlikes

abstract class AbstractSourceCodeTableDef(model: Table) extends AbstractTableDef

Attributes

Inherited from:
AbstractSourceCodeGenerator
Source:
AbstractSourceCodeGenerator.scala
Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Known subtypes
implicit class StringExtensions(val str: String)

Slick code generator string extension methods. (Warning: Not unicode-safe, uses String#apply)

Slick code generator string extension methods. (Warning: Not unicode-safe, uses String#apply)

Attributes

Inherited from:
GeneratorHelpers
Source:
AbstractGenerator.scala
Graph
Supertypes
class Object
trait Matchable
class Any

Types

Table generator virtual class

Table generator virtual class

Attributes

Source:
SourceCodeGenerator.scala

Value members

Inherited methods

def docWithCode(doc: String, code: String): String

Assemble doc comment with scala code

Assemble doc comment with scala code

Attributes

Inherited from:
StringGeneratorHelpers
Source:
AbstractSourceCodeGenerator.scala
def foreignKeysPerTable: Map[String, List[String]]
def indent(code: String): String

Attributes

Inherited from:
GeneratorHelpers
Source:
AbstractGenerator.scala
final def optionType(t: String): String

Wrap the given type into an Option type

Wrap the given type into an Option type

Attributes

Inherited from:
StringGeneratorHelpers
Source:
AbstractSourceCodeGenerator.scala
def parentType: Option[String]

The parent type of the generated main trait. This can be overridden in subclasses.

The parent type of the generated main trait. This can be overridden in subclasses.

Attributes

Inherited from:
OutputHelpers
Source:
OutputHelpers.scala
def parseType(tpe: String): String

Generates code for a qualified Scala type

Generates code for a qualified Scala type

Attributes

Inherited from:
StringGeneratorHelpers
Source:
AbstractSourceCodeGenerator.scala
def rootTraitCode(profile: String, pkg: String, container: String): String

Attributes

Inherited from:
OutputHelpers
Source:
OutputHelpers.scala
def shouldQuoteIdentifier(s: String): Boolean
def termName(name: String): String

Marks a String as a TermName (e.g. for escaping scala keywords)

Marks a String as a TermName (e.g. for escaping scala keywords)

Attributes

Inherited from:
StringGeneratorHelpers
Source:
AbstractSourceCodeGenerator.scala
protected def tuple(i: Int): String
def typeName(name: String): String

Marks a String as a TypeName (e.g. for escaping scala keywords)

Marks a String as a TypeName (e.g. for escaping scala keywords)

Attributes

Inherited from:
StringGeneratorHelpers
Source:
AbstractSourceCodeGenerator.scala

Inherited fields

val ddlEnabled: Boolean

Enables DDL Generation.

Enables DDL Generation.

Attributes

Inherited from:
AbstractGenerator
Source:
AbstractGenerator.scala
val scalaKeywords: Seq[String]

Words that are reserved keywords in Scala

Words that are reserved keywords in Scala

Attributes

Inherited from:
GeneratorHelpers
Source:
AbstractGenerator.scala

Existing term member names in Table[_] that do not take parameters

Existing term member names in Table[_] that do not take parameters

Attributes

Inherited from:
GeneratorHelpers
Source:
AbstractGenerator.scala
final lazy val tables: Seq[Table]

Table code generators.

Table code generators.

Attributes

Inherited from:
AbstractGenerator
Source:
AbstractGenerator.scala
final lazy val tablesByName: Map[QualifiedName, Table]

Table code generators indexed by db table name.

Table code generators indexed by db table name.

Attributes

Inherited from:
AbstractGenerator
Source:
AbstractGenerator.scala

Implicits

Inherited implicits

final implicit def StringExtensions(str: String): StringExtensions

Slick code generator string extension methods. (Warning: Not unicode-safe, uses String#apply)

Slick code generator string extension methods. (Warning: Not unicode-safe, uses String#apply)

Attributes

Inherited from:
GeneratorHelpers
Source:
AbstractGenerator.scala