All Downloads are FREE. Search and download functionalities are using the official Maven repository.

slick.additions.codegen.EntityGenerationRules.scala Maven / Gradle / Ivy

package slick.additions.codegen

import slick.additions.codegen.ScalaMetaDsl._


/** Uses `slick-additions-entity` `Lookup` for foreign key fields.
  *
  * Generated code requires `slick-additions-entity`.
  */
trait EntityGenerationRules extends GenerationRules {
  override def extraImports = "slick.additions.entity.Lookup" :: super.extraImports

  override def baseColumnType(currentTableMetadata: TableMetadata, all: Seq[TableMetadata]) =
    Function.unlift { column =>
      super.baseColumnType(currentTableMetadata, all).lift(column).map { keyType =>
        currentTableMetadata.foreignKeys.find(_.fkColumn == column.name) match {
          case None     => keyType
          case Some(fk) => typ"Lookup".typeApply(keyType, typ"${modelClassName(fk.pkTable)}")
        }
      }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy