diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/CreateTableScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/CreateTableScope.kt index 9e417a2..38c5f02 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/CreateTableScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/CreateTableScope.kt @@ -3,32 +3,30 @@ package ru.landgrafhomyak.db.serdha0.api.table import ru.landgrafhomyak.db.serdha0.api.misc.Column import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType -public interface CreateTableScope { +public interface CreateTableScope { public val types: DatabaseType.Provider - public fun > column(name: String, type: DT): Column + public fun > column(name: String, type: DT): Column - public fun index(name: String, vararg columns: Column<*, *, TableUserExtension>): Index + public fun index(name: String, vararg columns: Column<*, *, tUE>): Index - public fun uniqueIndex(name: String, distinctNulls: Boolean, vararg columns: Column<*, *, TableUserExtension>): UniqueIndex - public fun checkConstraint(name: String, creator: CheckConstraint.Creator, recheckExistingRows: Boolean = false): CheckConstraint - public fun > defaultValue(c: Column, creator: DefaultConstraint.Creator): DefaultConstraint + public fun uniqueIndex(name: String, distinctNulls: Boolean, vararg columns: Column<*, *, tUE>): UniqueIndex + public fun checkConstraint(name: String, creator: CheckConstraint.Creator, recheckExistingRows: Boolean = false): CheckConstraint + public fun > defaultValue(c: Column, creator: DefaultConstraint.Creator): DefaultConstraint @Suppress("PropertyName") - public val rowId_column: Column, DatabaseType>, TableUserExtension> + public val rowId_column: Column, DatabaseType>, tUE> @Suppress("PropertyName") - public val rowId_uniqueConstraint: UniqueIndex + public val rowId_uniqueConstraint: UniqueIndex public fun selfRowReference( onDelete: ForeignRowReference.OnDeleteAction, - toColumn: Column, DatabaseType.ROW_ID, TargetTableUserWrapper>, - ): ForeignRowReference + ): ForeignRowReference public fun foreignRowReference( - fromColumn: Column, DatabaseType.ROW_ID, TableUserExtension>, + columnName: String, toTable: Table, - toColumn: Column, DatabaseType.ROW_ID, TargetTableUserWrapper>, onDelete: ForeignRowReference.OnDeleteAction, - ): ForeignRowReference + ): ForeignRowReference } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/ForeignRowReference.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/ForeignRowReference.kt index 8489df1..9a3a0d9 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/ForeignRowReference.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/ForeignRowReference.kt @@ -7,37 +7,23 @@ import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType /** * Descriptor of a reference to row in another table (== foreign key to `INTEGER PRIMARY KEY AUTOINCREMENT`). Used for schema manipulations. * - * @param ContainerTableUserExtension Type of [owner table's][ForeignRowReference.fromTable] user expression for static reporting errors when this descriptor passed to wrong table. - * @param TargetTableUserExtension Type of [target table's][ForeignRowReference.toTable] user expression for static reporting errors when this descriptor passed to wrong table. + * @param ctUE Type of [owner table's][ForeignRowReference.fromTable] user expression for static reporting errors when this descriptor passed to wrong table. + * @param ttUE Type of [target table's][ForeignRowReference.toTable] user expression for static reporting errors when this descriptor passed to wrong table. */ -public interface ForeignRowReference { +public interface ForeignRowReference : Column, DatabaseType.ROW_ID, ctUE> { /** * Table that contains references. For debugging. */ @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("fromTable") - public val fromTable: Table - - /** - * Column in [ForeignRowReference.fromTable] which references row in [ForeignRowReference.toTable]. For debugging. - */ - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("fromColumn") - public val fromColumn: Column, DatabaseType.ROW_ID, ContainerTableUserExtension> + public val fromTable: Table /** * Table referenced by this foreign key. For debugging. */ @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("toTable") - public val toTable: Table - - /** - * Row id column in [ForeignRowReference.toTable]. For debugging. - */ - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("toColumn") - public val toColumn: Column, DatabaseType.ROW_ID, TargetTableUserExtension> + public val toTable: Table /** diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/UpdateTableScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/UpdateTableScope.kt index ee4ecda..e7caa4b 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/UpdateTableScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/UpdateTableScope.kt @@ -4,49 +4,60 @@ import ru.landgrafhomyak.db.serdha0.api.misc.Column import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType -public interface UpdateTableScope : CreateTableScope { - public fun > keepColumn(c: Column): Column - public fun > keepColumnUntilUpgrading(c: Column): Column - public fun > renameAndKeepColumn(c: Column, newName: String): Column - public fun deleteColumn(c: Column<*, *, TableOldUserExtension>) +public interface UpdateTableScope : CreateTableScope { + public fun > keepColumn(c: Column): Column + public fun > keepColumnUntilUpgraded(c: Column): Column + public fun > renameAndKeepColumn(c: Column, newName: String): Column + public fun deleteColumn(c: Column<*, *, toUE>) - public fun keepIndex(i: Index): Index - public fun renameAndKeepIndex(i: Index, newName: String): Index - public fun deleteIndex(i: Index) + public fun keepIndex(i: Index): Index + public fun renameAndKeepIndex(i: Index, newName: String): Index + public fun deleteIndex(i: Index) - public fun keepCheck(i: CheckConstraint): CheckConstraint - public fun renameAndKeepCheck(i: CheckConstraint, newName: String): CheckConstraint - public fun deleteCheck(i: CheckConstraint) + public fun keepCheck(i: CheckConstraint): CheckConstraint + public fun renameAndKeepCheck(i: CheckConstraint, newName: String): CheckConstraint + public fun deleteCheck(i: CheckConstraint) - public fun keepUniqueIndex(i: UniqueIndex): UniqueIndex - public fun renameAndKeepUniqueIndex(i: UniqueIndex, newName: String): UniqueIndex - public fun deleteUniqueIndex(i: UniqueIndex) + public fun keepUniqueIndex(i: UniqueIndex): UniqueIndex + public fun renameAndKeepUniqueIndex(i: UniqueIndex, newName: String): UniqueIndex + public fun deleteUniqueIndex(i: UniqueIndex) - public fun > keepDefaultValue(c: Column, d: DefaultConstraint): DefaultConstraint - public fun > changeDefaultValue(c: Column, d: DefaultConstraint): DefaultConstraint - public fun deleteDefaultValue(i: DefaultConstraint) + public fun > keepDefaultValue(c: Column, d: DefaultConstraint): DefaultConstraint + public fun > changeDefaultValue(c: Column, d: DefaultConstraint): DefaultConstraint + public fun deleteDefaultValue(i: DefaultConstraint) - public fun keepForeignRowReference( - frr: ForeignRowReference, + public fun keepForeignRowReference( + frr: ForeignRowReference, onDelete: ForeignRowReference.OnDeleteAction? = null - ): ForeignRowReference + ): ForeignRowReference - public fun keepForeignRowReferenceToUpdatedTable( - frr: ForeignRowReference, - updatedTable: Table, + public fun keepForeignRowReferenceToUpdatedTable( + frr: ForeignRowReference, + updatedTable: Table, onDelete: ForeignRowReference.OnDeleteAction? = null - ): ForeignRowReference + ): ForeignRowReference - public fun renameAndKeepForeignRowReference( - frr: ForeignRowReference, + public fun renameAndKeepForeignRowReference( + frr: ForeignRowReference, onDelete: ForeignRowReference.OnDeleteAction? = null - ): ForeignRowReference + ): ForeignRowReference - public fun renameAndKeepForeignRowReferenceToUpdatedTable( - frr: ForeignRowReference, - updatedTable: Table, + public fun renameAndKeepForeignRowReferenceToUpdatedTable( + frr: ForeignRowReference, + updatedTable: Table, onDelete: ForeignRowReference.OnDeleteAction? = null - ): ForeignRowReference + ): ForeignRowReference - public fun deleteForeignRowReference(frr: ForeignRowReference) + public fun deleteForeignRowReference(frr: ForeignRowReference) + + public fun keepForeignRowReferenceUntilUpgraded( + frr: ForeignRowReference, + onDelete: ForeignRowReference.OnDeleteAction? = null + ): ForeignRowReference + + public fun keepForeignRowReferenceToUpdatedTableUntilUpgraded( + frr: ForeignRowReference, + updatedTable: Table, + onDelete: ForeignRowReference.OnDeleteAction? = null + ): ForeignRowReference } \ No newline at end of file