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.Expression
public interface CheckConstraint<TableUserExtension : Any> {
public interface CheckConstraint<tUE : Any> {
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("name")
public val name: String
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("table")
public val table: Table<TableUserExtension, *>
public val table: Table<tUE, *>
public interface Creator<ConstraintUserExtension : Any, TargetTableUserExtension : Any> {
public fun createCheckConstraint(scope: Scope<ConstraintUserExtension, TargetTableUserExtension>)
public interface Creator<cUE : Any, ttUE : Any> {
public fun createCheckConstraint(scope: Scope<cUE, ttUE>)
public interface Scope<ConstraintUserExtension : Any, TargetTableUserExtension : Any> {
public var result: IntermediateColumn<Boolean, DatabaseType.BOOLEAN, ConstraintUserExtension>
public fun <RT, DT : DatabaseType<RT>> selectFromTargetTable(column: Column<RT, DT, TargetTableUserExtension>): IntermediateColumn<RT, DT, ConstraintUserExtension>
public interface Scope<cUE : Any, ttUE : Any> {
public val tt: Table<ttUE, *>
public fun <ReferencedTableUserExtension : Any, RT, DT : DatabaseType<RT>> followReference(
ref: IntermediateColumn<*, DatabaseType.ROW_ID<ReferencedTableUserExtension>, ConstraintUserExtension>,
column: Column<RT, DT, ReferencedTableUserExtension>
): IntermediateColumn<RT, DT, ReferencedTableUserExtension>
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 val builtinExpressions: BuiltinExpressionsProvider<ConstraintUserExtension>
public fun <ExpressionUserExtension : Any> mapColumns(
expression: Expression<ExpressionUserExtension>,
input: Expression.InputLinker<ExpressionUserExtension, ConstraintUserExtension>,
output: Expression.OutputLinker<ExpressionUserExtension, ConstraintUserExtension>
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 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.Expression
public interface DefaultConstraint<TableUserExtension : Any> {
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<TableUserExtension, *>
public val table: Table<tUE, *>
public interface Creator<ConstraintUserExtension : Any, RT, DT : DatabaseType<RT>, TargetTableUserExtension : Any> {
public fun createCheckConstraint(scope: Scope<ConstraintUserExtension, RT, DT, TargetTableUserExtension>)
public interface Creator<cUE : Any, RT, DT : DatabaseType<RT>, ttUE : Any> {
public fun createCheckConstraint(scope: Scope<cUE, RT, DT, ttUE>)
public interface Scope<ConstraintUserExtension : Any, rRT, rDT : DatabaseType<rRT>, TargetTableUserExtension : Any> {
public var result: IntermediateColumn<rRT, rDT, ConstraintUserExtension>
public fun <RT, DT : DatabaseType<RT>> selectFromTargetTable(column: Column<RT, DT, TargetTableUserExtension>): IntermediateColumn<RT, DT, ConstraintUserExtension>
public interface Scope<cUE : Any, rRT, rDT : DatabaseType<rRT>, ttUE : Any> {
public val tt: Table<ttUE, *>
public fun <ReferencedTableUserExtension : Any, RT, DT : DatabaseType<RT>> followReference(
ref: IntermediateColumn<*, DatabaseType.ROW_ID<ReferencedTableUserExtension>, ConstraintUserExtension>,
column: Column<RT, DT, ReferencedTableUserExtension>
): IntermediateColumn<RT, DT, ReferencedTableUserExtension>
public var result: IntermediateColumn<rRT, rDT, cUE>
public fun <RT, DT : DatabaseType<RT>> selectFromTargetTable(column: Column<RT, DT, ttUE>): IntermediateColumn<RT, DT, cUE>
public val builtinExpressions: BuiltinExpressionsProvider<ConstraintUserExtension>
public fun <ExpressionUserExtension : Any> mapColumns(
expression: Expression<ExpressionUserExtension>,
input: Expression.InputLinker<ExpressionUserExtension, ConstraintUserExtension>,
output: Expression.OutputLinker<ExpressionUserExtension, ConstraintUserExtension>
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 val builtinExpressions: BuiltinExpressionsProvider<cUE>
public fun <eUE : Any> mapColumns(
expression: Expression<eUE>,
input: Expression.InputLinker<eUE, cUE>,
output: Expression.OutputLinker<eUE, cUE>
)
}
}