diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/Column.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/Column.kt index 6435ef2..c2689e3 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/Column.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/Column.kt @@ -1,9 +1,9 @@ package ru.landgrafhomyak.serdha.api.v0.ddl -public interface Column, TableUserWrapper : Any> /*: Expression*/ { +public interface Column, TableUserExtension : Any> { public val name: String public val type: DatabaseType - public val table: Table + public val table: Table } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/TableCreator.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/TableCreator.kt index 6183c48..46f5a63 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/TableCreator.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/TableCreator.kt @@ -3,64 +3,52 @@ package ru.landgrafhomyak.serdha.api.v0.ddl import kotlin.jvm.JvmName import ru.landgrafhomyak.serdha.api.v0.Expression -public interface TableCreator { +public interface TableCreator { + public val expressionBuilder: Expression.Builder + /** * Offers column of type [D][type] with `NOT NULL` constraint named [name] and runtime type [RuntimeType]. * * @return Descriptor of offered column for future operations. */ - public fun > column(name: String, type: DatabaseType): Column + public fun > column(name: String, type: DatabaseType): Column - @Suppress("INAPPLICABLE_JVM_NAME") - @JvmName("nullableColumn\$notNull") - @Deprecated("This column can be not-null", replaceWith = ReplaceWith("this.column")) - public fun > nullableColumn(name: String, type: DatabaseType): Column = - this.nullableColumn(name, type) + public fun index(name: String, vararg columns: Column<*, *, TableUserExtension>): Index - /** - * Offers column of type [D][type] named [name] and runtime type [R?][RuntimeType]. - * - * @return Descriptor of offered column for future operations. - */ - public fun > nullableColumn(name: String, type: DatabaseType): Column + public fun unique(name: String, distinctNulls: Boolean, vararg columns: Column<*, *, TableUserExtension>): UniqueConstraint + public fun check(name: String, constraint: Expression): CheckConstraint - public fun index(name: String, vararg columns: Column<*, *, TableUserWrapper>): Index + public fun rowIdColumn(): Column, ColumnType>, TableUserExtension> - // todo not-null column uniqueness - public fun unique(name: String, distinctNulls: Boolean, vararg columns: Column<*, *, TableUserWrapper>): UniqueConstraint - public fun check(name: String, constraint: Expression): CheckConstraint - - public fun rowIdColumn(): Column, ColumnType>, TableUserWrapper> - - public fun rowIdUniqueConstraint(): UniqueConstraint + public fun rowIdUniqueConstraint(): UniqueConstraint public fun > foreignKey( - fromColumn: Column<*, ColumnType1, TableUserWrapper>, + fromColumn: Column<*, ColumnType1, TableUserExtension>, toTable: Table, toColumn: Column<*, ColumnType1, TargetTableUserWrapper>, onUpdate: ForeignKey.OnUpdateAction, onDelete: ForeignKey.OnDeleteAction - ): ForeignKey + ): ForeignKey public fun , ColumnType2 : ColumnType<*>> foreignKey( - fromColumn1: Column<*, ColumnType1, TableUserWrapper>, - fromColumn2: Column<*, ColumnType2, TableUserWrapper>, + fromColumn1: Column<*, ColumnType1, TableUserExtension>, + fromColumn2: Column<*, ColumnType2, TableUserExtension>, toTable: Table, toColumn1: Column<*, ColumnType1, TargetTableUserWrapper>, toColumn2: Column<*, ColumnType2, TargetTableUserWrapper>, onUpdate: ForeignKey.OnUpdateAction, onDelete: ForeignKey.OnDeleteAction - ): ForeignKey + ): ForeignKey public fun , ColumnType2 : ColumnType<*>, ColumnType3 : ColumnType<*>> foreignKey( - fromColumn1: Column<*, ColumnType1, TableUserWrapper>, - fromColumn2: Column<*, ColumnType2, TableUserWrapper>, - fromColumn3: Column<*, ColumnType3, TableUserWrapper>, + fromColumn1: Column<*, ColumnType1, TableUserExtension>, + fromColumn2: Column<*, ColumnType2, TableUserExtension>, + fromColumn3: Column<*, ColumnType3, TableUserExtension>, toTable: Table, toColumn1: Column<*, ColumnType1, TargetTableUserWrapper>, toColumn2: Column<*, ColumnType2, TargetTableUserWrapper>, toColumn3: Column<*, ColumnType3, TargetTableUserWrapper>, onUpdate: ForeignKey.OnUpdateAction, onDelete: ForeignKey.OnDeleteAction - ): ForeignKey + ): ForeignKey } \ No newline at end of file