Allowed subqueries in 'CheckConstraint' and 'ColumnDefaultValue'
This commit is contained in:
parent
af338b5dc1
commit
f1368a2feb
@ -0,0 +1,40 @@
|
||||
package ru.landgrafhomyak.db.serdha0.api.misc
|
||||
|
||||
import ru.landgrafhomyak.db.serdha0.api.queries._Query
|
||||
import ru.landgrafhomyak.db.serdha0.api.runtime.OutputRow
|
||||
import ru.landgrafhomyak.db.serdha0.api.table.RowId
|
||||
import ru.landgrafhomyak.db.serdha0.api.table.Table
|
||||
|
||||
public interface RowExpression<ttUE : Any, @Suppress("unused") R> {
|
||||
public val targetTable: Table<ttUE, *>
|
||||
|
||||
public interface RowExportsConstructor<rUE : Any, ttUE : Any> {
|
||||
public fun createRowExports(context: Scope<rUE, ttUE>): rUE
|
||||
|
||||
public interface Scope<rUE : Any, ttUE : Any> {
|
||||
public val tt: Table<ttUE, *>
|
||||
|
||||
public fun <RT, DT : DatabaseType<RT>> selectFromTargetTable(column: Column<RT, DT, ttUE>): Column<RT, DT, rUE>
|
||||
|
||||
public fun <rtUE : Any, RT, DT : DatabaseType<RT>> followReference(
|
||||
ref: Column<*, *, rUE>,
|
||||
column: Column<RT, DT, rtUE>
|
||||
): Column<RT, DT, rUE>
|
||||
|
||||
public fun <rtUE : Any, RT : Any, DT : DatabaseType<RT>> followReferenceNullable(
|
||||
ref: Column<RowId<rtUE>, DatabaseType.ROW_ID<rtUE>, rUE>,
|
||||
column: Column<RT, DT, rtUE>
|
||||
): Column<RT?, DatabaseType.Nullable<RT, DT>, rUE>
|
||||
}
|
||||
}
|
||||
|
||||
public interface Constructor<ttUE : Any, rUE : Any, R> {
|
||||
public val rowExports: RowExportsConstructor<rUE, ttUE>
|
||||
|
||||
public fun createRowExpression(internalQueries: _Query.Constructor.Scope, runtimeQueries: _Query.Constructor.Scope): Action<rUE, R>
|
||||
}
|
||||
|
||||
public interface Action<rUE : Any, R> {
|
||||
public suspend fun calculateRow(rowUE: rUE, row: OutputRow<rUE>): R
|
||||
}
|
||||
}
|
@ -1,39 +1,7 @@
|
||||
package ru.landgrafhomyak.db.serdha0.api.table
|
||||
|
||||
import kotlin.jvm.JvmName
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.Column
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.IntermediateColumn
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.Mapper
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.RowExpression
|
||||
|
||||
public interface CheckConstraint<tUE : Any> {
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@get:JvmName("name")
|
||||
public interface CheckConstraint<ttUE : Any> : RowExpression<ttUE, Boolean> {
|
||||
public val name: String
|
||||
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@get:JvmName("table")
|
||||
public val table: Table<tUE, *>
|
||||
|
||||
public interface Creator<cUE : Any, ttUE : Any> {
|
||||
public fun createCheckConstraint(scope: Scope<cUE, ttUE>)
|
||||
|
||||
public interface Scope<cUE : Any, ttUE : Any> {
|
||||
public val tt: Table<ttUE, *>
|
||||
|
||||
public var result: IntermediateColumn<Boolean, DatabaseType.BOOLEAN, cUE>
|
||||
public fun <RT, DT : DatabaseType<RT>> selectFromTargetTable(column: Column<RT, DT, ttUE>): IntermediateColumn<RT, DT, cUE>
|
||||
|
||||
public fun <rtUE : Any, RT, DT : DatabaseType<RT>> followReference(
|
||||
ref: IntermediateColumn<*, DatabaseType.ROW_ID<rtUE>, cUE>,
|
||||
column: Column<RT, DT, rtUE>
|
||||
): IntermediateColumn<RT, DT, rtUE>
|
||||
|
||||
public fun <eUE : Any> mapColumns(
|
||||
expression: Mapper<eUE>,
|
||||
input: ru.landgrafhomyak.db.serdha0.api.misc.Expression.Map.InputLinker<eUE, cUE>,
|
||||
output: ru.landgrafhomyak.db.serdha0.api.misc.Expression.Map.OutputLinker<eUE, cUE>
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
package ru.landgrafhomyak.db.serdha0.api.table
|
||||
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.RowExpression
|
||||
|
||||
public interface ColumnDefaultValue<ttUE : Any, R> : RowExpression<ttUE, R> {
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
package ru.landgrafhomyak.db.serdha0.api.table
|
||||
|
||||
import kotlin.jvm.JvmName
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.Column
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.IntermediateColumn
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.Mapper
|
||||
|
||||
public interface DefaultConstraint<tUE : Any> {
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@get:JvmName("name")
|
||||
public val name: String
|
||||
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@get:JvmName("table")
|
||||
public val table: Table<tUE, *>
|
||||
|
||||
public interface Creator<cUE : Any, RT, DT : DatabaseType<RT>, ttUE : Any> {
|
||||
public fun createCheckConstraint(scope: Scope<cUE, RT, DT, ttUE>)
|
||||
|
||||
public interface Scope<cUE : Any, rRT, rDT : DatabaseType<rRT>, ttUE : Any> {
|
||||
public val tt: Table<ttUE, *>
|
||||
|
||||
public var result: IntermediateColumn<rRT, rDT, cUE>
|
||||
public fun <RT, DT : DatabaseType<RT>> selectFromTargetTable(column: Column<RT, DT, ttUE>): IntermediateColumn<RT, DT, cUE>
|
||||
|
||||
public fun <rtUE : Any, RT, DT : DatabaseType<RT>> followReference(
|
||||
ref: IntermediateColumn<*, DatabaseType.ROW_ID<rtUE>, cUE>,
|
||||
column: Column<RT, DT, rtUE>
|
||||
): IntermediateColumn<RT, DT, rtUE>
|
||||
|
||||
public fun <eUE : Any> mapColumns(
|
||||
expression: Mapper<eUE>,
|
||||
input: ru.landgrafhomyak.db.serdha0.api.misc.Expression.Map.InputLinker<eUE, cUE>,
|
||||
output: ru.landgrafhomyak.db.serdha0.api.misc.Expression.Map.OutputLinker<eUE, cUE>
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
@ -2,6 +2,7 @@ package ru.landgrafhomyak.db.serdha0.api.table
|
||||
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.Column
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.RowExpression
|
||||
|
||||
|
||||
public interface TableConstructor<TableUserExtension : Any> {
|
||||
@ -16,8 +17,8 @@ public interface TableConstructor<TableUserExtension : Any> {
|
||||
public fun index(name: String, vararg columns: Column<*, *, tUE>): Index<tUE>
|
||||
|
||||
public fun uniqueIndex(name: String, distinctNulls: Boolean, vararg columns: Column<*, *, tUE>): UniqueIndex<tUE>
|
||||
public fun <cUE : Any> checkConstraint(name: String, creator: CheckConstraint.Creator<cUE, tUE>, recheckExistingRows: Boolean = false): CheckConstraint<tUE>
|
||||
public fun <cUE : Any, RT : Any, DT : DatabaseType<RT>> defaultValue(c: Column<RT, DT, tUE>, creator: DefaultConstraint.Creator<cUE, RT, DT, tUE>): DefaultConstraint<tUE>
|
||||
public fun checkConstraint(name: String, constructor: RowExpression.Constructor<tUE, *, Boolean>, recheckExistingRows: Boolean = false): CheckConstraint<tUE>
|
||||
public fun <RT : Any> defaultValue(c: Column<RT, *, tUE>, creator: RowExpression.Constructor<tUE, *, RT>): ColumnDefaultValue<tUE, RT>
|
||||
|
||||
@Suppress("PropertyName")
|
||||
public val rowId_column: Column<RowId<tUE>, DatabaseType<RowId<tUE>>, tUE>
|
||||
|
@ -4,7 +4,7 @@ import ru.landgrafhomyak.db.serdha0.api.misc.Column
|
||||
import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType
|
||||
|
||||
|
||||
public interface UpdateTableScope<tnUE : Any, toUE : Any> : CreateTableScope<tnUE> {
|
||||
public interface UpdateTableScope<tnUE : Any, toUE : Any> : TableConstructor.Scope<tnUE> {
|
||||
public fun <RT, DT : DatabaseType<RT>> keepColumn(c: Column<RT, DT, toUE>): Column<RT, DT, tnUE>
|
||||
public fun <RT, DT : DatabaseType<RT>> keepColumnUntilUpgraded(c: Column<RT, DT, toUE>): Column<RT, DT, tnUE>
|
||||
public fun <RT, DT : DatabaseType<RT>> renameAndKeepColumn(c: Column<RT, DT, toUE>, newName: String): Column<RT, DT, tnUE>
|
||||
@ -22,9 +22,9 @@ public interface UpdateTableScope<tnUE : Any, toUE : Any> : CreateTableScope<tnU
|
||||
public fun renameAndKeepUniqueIndex(i: UniqueIndex<toUE>, newName: String): UniqueIndex<tnUE>
|
||||
public fun deleteUniqueIndex(i: UniqueIndex<toUE>)
|
||||
|
||||
public fun <RT, DT : DatabaseType<RT>> keepDefaultValue(c: Column<RT, DT, tnUE>, d: DefaultConstraint<toUE>): DefaultConstraint<tnUE>
|
||||
public fun <RT, DT : DatabaseType<RT>> changeDefaultValue(c: Column<RT, DT, tnUE>, d: DefaultConstraint<toUE>): DefaultConstraint<tnUE>
|
||||
public fun deleteDefaultValue(i: DefaultConstraint<toUE>)
|
||||
public fun <RT, DT : DatabaseType<RT>> keepDefaultValue(c: Column<RT, DT, tnUE>, d: ColumnDefaultValue<toUE, RT>): ColumnDefaultValue<tnUE, RT>
|
||||
public fun <RT, DT : DatabaseType<RT>> changeDefaultValue(c: Column<RT, DT, tnUE>, d: ColumnDefaultValue<toUE, RT>): ColumnDefaultValue<tnUE, RT>
|
||||
public fun deleteDefaultValue(i: ColumnDefaultValue<toUE, *>)
|
||||
|
||||
public fun <ttUE : Any, RT, DT : DatabaseType<RT>> keepForeignRowReference(
|
||||
frr: ForeignRowReference<toUE, ttUE, RT, DT>,
|
||||
|
Loading…
Reference in New Issue
Block a user