org.easysql.dsl
package org.easysql.dsl
Type members
Classlikes
case class AggFunctionExpr[T <: SqlDataType](name: String, args: List[Expr[_]], distinct: Boolean, attributes: Map[String, Expr[_]], orderBy: List[OrderBy]) extends Expr[T]
case class AliasExpr[T <: SqlDataType, Alias <: String](expr: Expr[T], name: Alias) extends SelectItem[T]
case class BetweenExpr[T <: SqlDataType](query: Expr[_], start: T | Expr[_] | SelectQuery[_, _], end: T | Expr[_] | SelectQuery[_, _], isNot: Boolean) extends Expr[Boolean]
case class BinaryExpr[T <: SqlDataType](left: Expr[_], operator: SqlBinaryOperator, right: Expr[_]) extends Expr[T]
case class CaseBranch[T <: SqlDataType](query: Expr[_], thenValue: T | Expr[T] | SelectQuery[(T), _])
case class CaseExpr[T <: SqlDataType](conditions: List[CaseBranch[T]], var default: T | Expr[T] | SelectQuery[(T), _]) extends Expr[T]
case class InListExpr[T <: SqlDataType](query: Expr[_], list: List[T | Expr[_] | SelectQuery[_, _]], isNot: Boolean) extends Expr[Boolean]
case class InSubQueryExpr[T <: SqlDataType](query: Expr[T], subQuery: SelectQuery[_, _], isNot: Boolean) extends Expr[Boolean]
case class JoinTableSchema(left: AnyTable, joinType: SqlJoinType, right: AnyTable, var onCondition: Option[Expr[_]]) extends AnyTable
case class OverExpr[T <: SqlDataType](function: AggFunctionExpr[_], partitionBy: ListBuffer[Expr[_]], orderBy: ListBuffer[OrderBy]) extends Expr[T]
case class PrimaryKeyColumnExpr[T <: SqlDataType](table: String, column: String, schema: TableSchema[_], var isIncr: Boolean) extends Expr[T]
case class SubQueryPredicateExpr[T <: SqlDataType](query: SelectQuery[_, _], predicate: SqlSubQueryPredicate) extends Expr[T]
case class TableColumnExpr[T <: SqlDataType](table: String, column: String, schema: TableSchema[_]) extends Expr[T]
Types
type ElementType[T <: Tuple, N <: Tuple, Name <: String] = (T, N) match {
case (t *: tt, n *: nt) => n == Name match {
case true => t match {
case SqlDataType => t
case Any => Nothing
}
case false => ElementType[tt, nt, Name]
}
case (EmptyTuple, EmptyTuple) => Nothing
}
type ExtractAliasNames[T <: Tuple] = T match {
case AliasExpr[_$11, n] *: t => n *: ExtractAliasNames[t]
case Any => EmptyTuple
}
type FindTypeByName[T <: Tuple, I <: Int, Name <: String] = I >= 0 match {
case true => Elem[T, I] match {
case (t, n) => n == Name match {
case true => t
case false => FindTypeByName[T, I - 1, Name]
}
case Any => Nothing
}
case false => Nothing
}
type InverseMap[X <: Tuple] = X match {
case SelectItem[x] *: t => x *: InverseMap[t]
case EmptyTuple => EmptyTuple
}
type QueryType[T <: Tuple | Expr[_] | TableSchema[_]] = T match {
case h *: t => h *: t
case Any => (T)
}
type RecursiveInverseMap[X <: Tuple] = X match {
case x *: t => x match {
case Tuple => Concat[RecursiveInverseMap[x], RecursiveInverseMap[t]]
case SelectItem[y] => y *: RecursiveInverseMap[t]
}
case EmptyTuple => EmptyTuple
}
Value members
Concrete methods
Givens
Givens
Extensions
Extensions
extension [T <: String](e: Expr[T])
extension [T <: SqlNumberType](e: Expr[T])
extension [T <: SqlDataType](e: TableColumnExpr[T] | ColumnExpr[T])
def to[V <: T](value: V | Expr[V] | SelectQuery[(V), _]): (TableColumnExpr[T] | ColumnExpr[T], V | Expr[V] | SelectQuery[(V), _])
extension (s: StringContext)
extension [E <: Product, T <: TableSchema[E]](t: T)
extension [T <: Int | Long](t: TableColumnExpr[T])