Renaming 'Expression' to 'IntermediateColumn' and then 'RuntimeExpression' to 'Expression', added support for expressions and other improvements in 'SELECT'
This commit is contained in:
parent
a0243487f8
commit
838c674fe0
@ -0,0 +1,4 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.misc
|
||||
|
||||
public interface BuiltinExpressionsProvider<OwnerQueryUserExtension: Any> {
|
||||
}
|
@ -1,7 +1,41 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.misc
|
||||
|
||||
public interface Expression<RT, DT : DatabaseType<RT>, OwnerBuilderUserExtension : Any> {
|
||||
public interface Builder<OwnerBuilderUserExtension : Any> {
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.Row
|
||||
|
||||
public interface Expression<ExpressionUserExtension : Any> {
|
||||
public val userExtension: ExpressionUserExtension
|
||||
|
||||
public interface RuntimeExpressionInput<RT, DT : DatabaseType<RT>, ExpressionUserExtension : Any> : Column<RT, DT, ExpressionUserExtension>
|
||||
public interface RuntimeExpressionOutput<RT, DT : DatabaseType<RT>, ExpressionUserExtension : Any> : Input.Column<RT, DT, ExpressionUserExtension>
|
||||
|
||||
public fun interface InputLinker<ExpressionUserExtension : Any, QueryUserExtension : Any> {
|
||||
public fun link(linker: Scope<ExpressionUserExtension, QueryUserExtension>)
|
||||
|
||||
public interface Scope<ExpressionUserExtension : Any, QueryUserExtension : Any> {
|
||||
public operator fun <RT, DT : DatabaseType<RT>> set(p: RuntimeExpressionInput<RT, DT, ExpressionUserExtension>, e: IntermediateColumn<RT, DT, QueryUserExtension>)
|
||||
}
|
||||
}
|
||||
|
||||
public fun interface OutputLinker<ExpressionUserExtension : Any, QueryUserExtension : Any> {
|
||||
public fun link(linker: Scope<ExpressionUserExtension, QueryUserExtension>)
|
||||
|
||||
public interface Scope<ExpressionUserExtension : Any, QueryUserExtension : Any> {
|
||||
public operator fun <RT, DT : DatabaseType<RT>> get(p: RuntimeExpressionOutput<RT, DT, ExpressionUserExtension>): IntermediateColumn<RT, DT, QueryUserExtension>
|
||||
}
|
||||
}
|
||||
|
||||
public interface Creator<ExpressionUserExtension : Any> {
|
||||
public fun createExpression(creator: Scope<ExpressionUserExtension>): ExpressionUserExtension
|
||||
|
||||
public interface Scope<ExpressionUserExtension : Any> {
|
||||
public fun <RT, DT : DatabaseType<RT>> input(name: String, type: DT): RuntimeExpressionInput<RT, DT, ExpressionUserExtension>
|
||||
public fun <RT, DT : DatabaseType<RT>> output(name: String, type: DT): RuntimeExpressionOutput<RT, DT, ExpressionUserExtension>
|
||||
public var action: Action<ExpressionUserExtension>
|
||||
}
|
||||
}
|
||||
|
||||
public interface Action<ExpressionUserExtension : Any> {
|
||||
public fun calculate(input: Row<ExpressionUserExtension>, output: ParametersSetter<ExpressionUserExtension>)
|
||||
}
|
||||
}
|
@ -1,9 +1,9 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.misc
|
||||
|
||||
public interface Input<RT, DT : DatabaseType<RT>, OwnerQueryUserExtension : Any> : Expression<RT, DT, OwnerQueryUserExtension> {
|
||||
public interface Input<RT, DT : DatabaseType<RT>, OwnerQueryUserExtension : Any> : IntermediateColumn<RT, DT, OwnerQueryUserExtension> {
|
||||
public val name: String
|
||||
public val userWrapper: OwnerQueryUserExtension
|
||||
|
||||
public interface QueryParam<RT, DT : DatabaseType<RT>, OwnerQueryUserExtension : Any> : Expression<RT, DT, OwnerQueryUserExtension>
|
||||
public interface Column<RT, DT : DatabaseType<RT>, OwnerQueryUserExtension : Any> : Expression<RT, DT, OwnerQueryUserExtension>
|
||||
public interface QueryParam<RT, DT : DatabaseType<RT>, OwnerQueryUserExtension : Any> : IntermediateColumn<RT, DT, OwnerQueryUserExtension>
|
||||
public interface Column<RT, DT : DatabaseType<RT>, OwnerQueryUserExtension : Any> : IntermediateColumn<RT, DT, OwnerQueryUserExtension>
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.misc
|
||||
|
||||
public interface IntermediateColumn<RT, DT : DatabaseType<RT>, OwnerBuilderUserExtension : Any> {
|
||||
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.misc
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.Row
|
||||
|
||||
public interface RuntimeExpression<ExpressionUserExtension : Any> {
|
||||
public val userExtension: ExpressionUserExtension
|
||||
|
||||
public interface RuntimeExpressionInput<RT, DT : DatabaseType<RT>, ExpressionUserExtension : Any> : Column<RT, DT, ExpressionUserExtension>
|
||||
public interface RuntimeExpressionOutput<RT, DT : DatabaseType<RT>, ExpressionUserExtension : Any> : Input.QueryParam<RT, DT, ExpressionUserExtension>
|
||||
|
||||
public fun interface InputLinker<ExpressionUserExtension : Any, QueryUserExtension : Any> {
|
||||
public fun link(linker: Scope<ExpressionUserExtension, QueryUserExtension>)
|
||||
|
||||
public interface Scope<ExpressionUserExtension : Any, QueryUserExtension : Any> {
|
||||
public operator fun <RT, DT : DatabaseType<RT>> set(p: RuntimeExpressionInput<RT, DT, ExpressionUserExtension>, e: Expression<RT, DT, QueryUserExtension>)
|
||||
}
|
||||
}
|
||||
|
||||
public fun interface OutputLinker<ExpressionUserExtension : Any, QueryUserExtension : Any> {
|
||||
public fun link(linker: Scope<ExpressionUserExtension, QueryUserExtension>)
|
||||
|
||||
public interface Scope<ExpressionUserExtension : Any, QueryUserExtension : Any> {
|
||||
public operator fun <RT, DT : DatabaseType<RT>> get(p: RuntimeExpressionOutput<RT, DT, ExpressionUserExtension>): Expression<RT, DT, QueryUserExtension>
|
||||
}
|
||||
}
|
||||
|
||||
public interface Creator<ExpressionUserExtension : Any> {
|
||||
public fun createExpression(creator: Scope<ExpressionUserExtension>): ExpressionUserExtension
|
||||
|
||||
public interface Scope<ExpressionUserExtension : Any> {
|
||||
public fun <RT, DT : DatabaseType<RT>> input(name: String, type: DT): RuntimeExpressionInput<RT, DT, ExpressionUserExtension>
|
||||
public fun <RT, DT : DatabaseType<RT>> output(name: String, type: DT): RuntimeExpressionOutput<RT, DT, ExpressionUserExtension>
|
||||
public var action: Action<ExpressionUserExtension>
|
||||
}
|
||||
}
|
||||
|
||||
public interface Action<ExpressionUserExtension : Any> {
|
||||
public fun calculate(input: Row<ExpressionUserExtension>, output: ParametersSetter<ExpressionUserExtension>)
|
||||
}
|
||||
}
|
@ -1,3 +1,3 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.misc
|
||||
|
||||
public interface SelectedColumn<RT, DT : DatabaseType<RT>, @Suppress("unused") OwnerTableUserExtension : Any, OwnerBuilderUserExtension : Any> : Expression<RT, DT, OwnerBuilderUserExtension>
|
||||
public interface SelectedColumn<RT, DT : DatabaseType<RT>, @Suppress("unused") OwnerTableUserExtension : Any, OwnerBuilderUserExtension : Any> : IntermediateColumn<RT, DT, OwnerBuilderUserExtension>
|
@ -1,7 +1,9 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.queries
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Expression
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Column
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.IntermediateColumn
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Expression
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.SelectedTable
|
||||
|
||||
public interface SelectQuery<QueryUserExtension : Any> : _Selectable<QueryUserExtension> {
|
||||
@ -13,11 +15,20 @@ public interface SelectQuery<QueryUserExtension : Any> : _Selectable<QueryUserEx
|
||||
|
||||
@Suppress("ClassName")
|
||||
public interface _CommonSelectCreatorScope<QueryUserExtension : Any> {
|
||||
public fun where(expression: Expression<Boolean, DatabaseType.BOOLEAN, QueryUserExtension>)
|
||||
public fun where(expression: IntermediateColumn<Boolean, DatabaseType.BOOLEAN, QueryUserExtension>)
|
||||
public fun orderBy(order: Order, vararg expression: IntermediateColumn<*, *, QueryUserExtension>)
|
||||
|
||||
public var limit: UInt
|
||||
|
||||
public var offset: ULong
|
||||
|
||||
public fun <RT, DT : DatabaseType<RT>> returnColumn(expr: IntermediateColumn<RT, DT, QueryUserExtension>): Column<RT, DT, QueryUserExtension>
|
||||
|
||||
public fun <ExpressionUserExtension : Any> mapColumns(
|
||||
expression: Expression<ExpressionUserExtension>,
|
||||
input: Expression.InputLinker<ExpressionUserExtension, QueryUserExtension>,
|
||||
output: Expression.OutputLinker<ExpressionUserExtension, QueryUserExtension>
|
||||
)
|
||||
}
|
||||
|
||||
public interface JoinCreator<QueryUserExtension : Any, LeftTableUserExtension : Any, RightTableUserExtension : Any> : _CommonSelectCreatorScope<QueryUserExtension> {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.queries
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Expression
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.BuiltinExpressionsProvider
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.IntermediateColumn
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Column
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider
|
||||
@ -11,14 +12,14 @@ import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
|
||||
public interface _CommonCreateQueryScope<QueryUserExtension : Any> {
|
||||
public val types: DatabaseTypesProvider
|
||||
|
||||
public val expressionBuilder: Expression.Builder<QueryUserExtension>
|
||||
public val expressionBuilder: BuiltinExpressionsProvider<QueryUserExtension>
|
||||
|
||||
public interface SubqueryParametersSetter<SubqueryUserExtension : Any, QueryUserExtension : Any> : ParametersSetter<SubqueryUserExtension> {
|
||||
public operator fun <RT, DT : DatabaseType<RT>> set(c: Input.QueryParam<RT, DT, QueryUserExtension>, value: Expression<RT, DT, QueryUserExtension>)
|
||||
public operator fun <RT, DT : DatabaseType<RT>> set(c: Input.QueryParam<RT, DT, QueryUserExtension>, value: IntermediateColumn<RT, DT, QueryUserExtension>)
|
||||
}
|
||||
|
||||
public interface _ReturningClauseScope<QueryUserExtension : Any> {
|
||||
public fun <RT, DT : DatabaseType<RT>> returnExpression(expression: Expression<RT, DT, QueryUserExtension>): Column<RT, DT, QueryUserExtension>
|
||||
public fun <RT, DT : DatabaseType<RT>> returnExpression(expression: IntermediateColumn<RT, DT, QueryUserExtension>): Column<RT, DT, QueryUserExtension>
|
||||
|
||||
public var isDistinct: Boolean
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.queries
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Expression
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.IntermediateColumn
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Column
|
||||
import ru.landgrafhomyak.serdha.api.v0.table.UniqueIndex
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||
@ -12,9 +12,9 @@ public interface _CreateInsertOrCopyQueryScope<QueryUserExtension : Any, TargetT
|
||||
|
||||
@Suppress("ClassName")
|
||||
public interface _UpsertClauseScope<QueryUserExtension : Any, TargetTableUserExtension : Any> {
|
||||
public fun <RT, DT : DatabaseType<RT>> oldColumnValue(c: Column<RT, DT, TargetTableUserExtension>): Expression<RT, DT, QueryUserExtension>
|
||||
public fun <RT, DT : DatabaseType<RT>> oldColumnValue(c: Column<RT, DT, TargetTableUserExtension>): IntermediateColumn<RT, DT, QueryUserExtension>
|
||||
|
||||
public fun <RT, DT : DatabaseType<RT>> updateColumn(c: Column<RT, DT, TargetTableUserExtension>, e: Expression<RT, DT, QueryUserExtension>)
|
||||
public fun <RT, DT : DatabaseType<RT>> updateColumn(c: Column<RT, DT, TargetTableUserExtension>, e: IntermediateColumn<RT, DT, QueryUserExtension>)
|
||||
}
|
||||
|
||||
public fun onConflictUpdate(u: UniqueIndex<TargetTableUserExtension>, c: (_UpsertClauseScope<QueryUserExtension, TargetTableUserExtension>) -> Unit)
|
||||
@ -27,7 +27,7 @@ public interface _CreateInsertOrCopyQueryScope<QueryUserExtension : Any, TargetT
|
||||
|
||||
@Suppress("ClassName")
|
||||
public interface _ReturningUpdatedClauseScope<QueryUserExtension : Any, TargetTableUserExtension : Any> : _CommonCreateQueryScope._ReturningClauseScope<QueryUserExtension> {
|
||||
public fun <RT, DT : DatabaseType<RT>> oldColumnValue(c: Column<RT, DT, TargetTableUserExtension>): Expression<RT, DT, QueryUserExtension>
|
||||
public fun <RT, DT : DatabaseType<RT>> oldColumnValue(c: Column<RT, DT, TargetTableUserExtension>): IntermediateColumn<RT, DT, QueryUserExtension>
|
||||
}
|
||||
|
||||
public val returningUpdated: _ReturningUpdatedClauseScope<QueryUserExtension, TargetTableUserExtension>
|
||||
|
@ -1,12 +1,12 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.table
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.BuiltinExpressionsProvider
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Column
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Expression
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider
|
||||
|
||||
public interface CreateTableScope<TableUserExtension : Any> {
|
||||
public val expressionBuilder: Expression.Builder<TableUserExtension>
|
||||
public val expressionBuilder: BuiltinExpressionsProvider<TableUserExtension>
|
||||
|
||||
public val types: DatabaseTypesProvider
|
||||
|
||||
|
@ -1,12 +1,13 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.table
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.BuiltinExpressionsProvider
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Column
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Expression
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.IntermediateColumn
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||
|
||||
|
||||
public interface UpdateTableScope<TableNewUserExtension : Any, TableOldUserExtension : Any> : CreateTableScope<TableNewUserExtension> {
|
||||
public val oldExpressionBuilder: Expression.Builder<TableOldUserExtension>
|
||||
public val oldExpressionBuilder: BuiltinExpressionsProvider<TableOldUserExtension>
|
||||
|
||||
public fun <RT, DT : DatabaseType<RT>> keepColumn(c: Column<RT, DT, TableOldUserExtension>): Column<RT, DT, TableNewUserExtension>
|
||||
public fun <RT, DT : DatabaseType<RT>> keepColumnUntilUpgrading(c: Column<RT, DT, TableOldUserExtension>): Column<RT, DT, TableNewUserExtension>
|
||||
|
Loading…
Reference in New Issue
Block a user