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

skinny.orm.feature.DynamicTableNameFeature.scala Maven / Gradle / Ivy

package skinny.orm.feature

import skinny.orm._
import scalikejdbc._

/**
 * Provides #withTableNmae APIs.
 */
trait DynamicTableNameFeature[Entity]
    extends DynamicTableNameFeatureWithId[Long, Entity] { self: SkinnyMapperBase[Entity] with IdFeature[Long] =>

}

trait DynamicTableNameFeatureWithId[Id, Entity] { self: SkinnyMapperBase[Entity] with IdFeature[Id] =>

  /**
   * Appends join definition on runtime.
   *
   * @param tableName table name
   * @return self
   */
  def withTableName(tableName: String): DynamicTableNameFeatureWithId[Id, Entity] with FinderFeatureWithId[Id, Entity] with QueryingFeatureWithId[Id, Entity] = {
    val _self = this
    val dynamicTableName = tableName

    new SkinnyMapperBase[Entity] with IdFeature[Id] with DynamicTableNameFeatureWithId[Id, Entity] with FinderFeatureWithId[Id, Entity] with QueryingFeatureWithId[Id, Entity] {
      override def defaultAlias = _self.defaultAlias
      override val tableName = dynamicTableName
      override def columnNames = _self.columnNames

      override def primaryKeyField = _self.primaryKeyField
      override def primaryKeyFieldName = _self.primaryKeyFieldName

      override def rawValueToId(value: Any) = _self.rawValueToId(value)
      override def idToRawValue(id: Id) = _self.idToRawValue(id)

      override def defaultScope(alias: Alias[Entity]) = _self.defaultScope(alias)
      //override def singleSelectQuery = _self.singleSelectQuery

      def extract(rs: WrappedResultSet, n: ResultName[Entity]) = _self.extract(rs, n)
    }
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy