Reference to owner table in 'CheckConstraint' and 'DefaultConstraint'

This commit is contained in:
Andrew Golovashevich 2025-01-31 20:47:28 +03:00
parent 7a51863dca
commit 3673235beb
2 changed files with 36 additions and 32 deletions

View File

@ -7,32 +7,34 @@ import ru.landgrafhomyak.db.serdha0.api.misc.IntermediateColumn
import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType
import ru.landgrafhomyak.db.serdha0.api.misc.Expression import ru.landgrafhomyak.db.serdha0.api.misc.Expression
public interface CheckConstraint<TableUserExtension : Any> { public interface CheckConstraint<tUE : Any> {
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("name") @get:JvmName("name")
public val name: String public val name: String
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("table") @get:JvmName("table")
public val table: Table<TableUserExtension, *> public val table: Table<tUE, *>
public interface Creator<ConstraintUserExtension : Any, TargetTableUserExtension : Any> { public interface Creator<cUE : Any, ttUE : Any> {
public fun createCheckConstraint(scope: Scope<ConstraintUserExtension, TargetTableUserExtension>) public fun createCheckConstraint(scope: Scope<cUE, ttUE>)
public interface Scope<ConstraintUserExtension : Any, TargetTableUserExtension : Any> { public interface Scope<cUE : Any, ttUE : Any> {
public var result: IntermediateColumn<Boolean, DatabaseType.BOOLEAN, ConstraintUserExtension> public val tt: Table<ttUE, *>
public fun <RT, DT : DatabaseType<RT>> selectFromTargetTable(column: Column<RT, DT, TargetTableUserExtension>): IntermediateColumn<RT, DT, ConstraintUserExtension>
public fun <ReferencedTableUserExtension : Any, RT, DT : DatabaseType<RT>> followReference( public var result: IntermediateColumn<Boolean, DatabaseType.BOOLEAN, cUE>
ref: IntermediateColumn<*, DatabaseType.ROW_ID<ReferencedTableUserExtension>, ConstraintUserExtension>, public fun <RT, DT : DatabaseType<RT>> selectFromTargetTable(column: Column<RT, DT, ttUE>): IntermediateColumn<RT, DT, cUE>
column: Column<RT, DT, ReferencedTableUserExtension>
): IntermediateColumn<RT, DT, ReferencedTableUserExtension>
public val builtinExpressions: BuiltinExpressionsProvider<ConstraintUserExtension> public fun <rtUE : Any, RT, DT : DatabaseType<RT>> followReference(
public fun <ExpressionUserExtension : Any> mapColumns( ref: IntermediateColumn<*, DatabaseType.ROW_ID<rtUE>, cUE>,
expression: Expression<ExpressionUserExtension>, column: Column<RT, DT, rtUE>
input: Expression.InputLinker<ExpressionUserExtension, ConstraintUserExtension>, ): IntermediateColumn<RT, DT, rtUE>
output: Expression.OutputLinker<ExpressionUserExtension, ConstraintUserExtension>
public val builtinExpressions: BuiltinExpressionsProvider<cUE>
public fun <eUE : Any> mapColumns(
expression: Expression<eUE>,
input: Expression.InputLinker<eUE, cUE>,
output: Expression.OutputLinker<eUE, cUE>
) )
} }
} }

View File

@ -7,32 +7,34 @@ import ru.landgrafhomyak.db.serdha0.api.misc.IntermediateColumn
import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType
import ru.landgrafhomyak.db.serdha0.api.misc.Expression import ru.landgrafhomyak.db.serdha0.api.misc.Expression
public interface DefaultConstraint<TableUserExtension : Any> { public interface DefaultConstraint<tUE : Any> {
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("name") @get:JvmName("name")
public val name: String public val name: String
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("table") @get:JvmName("table")
public val table: Table<TableUserExtension, *> public val table: Table<tUE, *>
public interface Creator<ConstraintUserExtension : Any, RT, DT : DatabaseType<RT>, TargetTableUserExtension : Any> { public interface Creator<cUE : Any, RT, DT : DatabaseType<RT>, ttUE : Any> {
public fun createCheckConstraint(scope: Scope<ConstraintUserExtension, RT, DT, TargetTableUserExtension>) public fun createCheckConstraint(scope: Scope<cUE, RT, DT, ttUE>)
public interface Scope<ConstraintUserExtension : Any, rRT, rDT : DatabaseType<rRT>, TargetTableUserExtension : Any> { public interface Scope<cUE : Any, rRT, rDT : DatabaseType<rRT>, ttUE : Any> {
public var result: IntermediateColumn<rRT, rDT, ConstraintUserExtension> public val tt: Table<ttUE, *>
public fun <RT, DT : DatabaseType<RT>> selectFromTargetTable(column: Column<RT, DT, TargetTableUserExtension>): IntermediateColumn<RT, DT, ConstraintUserExtension>
public fun <ReferencedTableUserExtension : Any, RT, DT : DatabaseType<RT>> followReference( public var result: IntermediateColumn<rRT, rDT, cUE>
ref: IntermediateColumn<*, DatabaseType.ROW_ID<ReferencedTableUserExtension>, ConstraintUserExtension>, public fun <RT, DT : DatabaseType<RT>> selectFromTargetTable(column: Column<RT, DT, ttUE>): IntermediateColumn<RT, DT, cUE>
column: Column<RT, DT, ReferencedTableUserExtension>
): IntermediateColumn<RT, DT, ReferencedTableUserExtension>
public val builtinExpressions: BuiltinExpressionsProvider<ConstraintUserExtension> public fun <rtUE : Any, RT, DT : DatabaseType<RT>> followReference(
public fun <ExpressionUserExtension : Any> mapColumns( ref: IntermediateColumn<*, DatabaseType.ROW_ID<rtUE>, cUE>,
expression: Expression<ExpressionUserExtension>, column: Column<RT, DT, rtUE>
input: Expression.InputLinker<ExpressionUserExtension, ConstraintUserExtension>, ): IntermediateColumn<RT, DT, rtUE>
output: Expression.OutputLinker<ExpressionUserExtension, ConstraintUserExtension>
public val builtinExpressions: BuiltinExpressionsProvider<cUE>
public fun <eUE : Any> mapColumns(
expression: Expression<eUE>,
input: Expression.InputLinker<eUE, cUE>,
output: Expression.OutputLinker<eUE, cUE>
) )
} }
} }