diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/DatabaseType.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/DatabaseType.kt index d2d28cf..e67b160 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/DatabaseType.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/DatabaseType.kt @@ -8,10 +8,10 @@ import ru.landgrafhomyak.db.serdha0.api.table.Table /** * Descriptor of a database type. * - * @param RuntimeType Type in programming language to which database type is converted. + * @param RT Type in programming language to which database type is converted. */ @Suppress("ClassName", "RemoveRedundantQualifierName") -public interface DatabaseType<@Suppress("unused") RuntimeType> { +public interface DatabaseType<@Suppress("unused") RT> { @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("name") public val name: String @@ -35,7 +35,7 @@ public interface DatabaseType<@Suppress("unused") RuntimeType> { public interface Nullable> : DatabaseType - public interface ROW_ID : DatabaseType> + public interface ROW_ID : DatabaseType> public interface BOOLEAN : DatabaseType 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 38c5f02..4889fb4 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 @@ -20,13 +20,23 @@ public interface CreateTableScope { @Suppress("PropertyName") public val rowId_uniqueConstraint: UniqueIndex - public fun selfRowReference( - onDelete: ForeignRowReference.OnDeleteAction, - ): ForeignRowReference + public fun selfRowReference( + onDelete: ForeignRowReference.OnDelete, + ): ForeignRowReference, DatabaseType.ROW_ID> - public fun foreignRowReference( + public fun nullableSelfRowReference( + onDelete: ForeignRowReference.OnDelete, + ): ForeignRowReference?, DatabaseType.Nullable, DatabaseType.ROW_ID>> + + public fun foreignRowReference( columnName: String, - toTable: Table, - onDelete: ForeignRowReference.OnDeleteAction, - ): ForeignRowReference + toTable: Table, + onDelete: ForeignRowReference.OnDelete, + ): ForeignRowReference, DatabaseType.ROW_ID> + + public fun nullableForeignRowReference( + columnName: String, + toTable: Table, + onDelete: ForeignRowReference.OnDelete, + ): ForeignRowReference?, DatabaseType.Nullable, DatabaseType.ROW_ID>> } \ 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 9a3a0d9..3f60e9a 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 @@ -10,7 +10,7 @@ import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType * @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 : Column, DatabaseType.ROW_ID, ctUE> { +public interface ForeignRowReference?, DT : DatabaseType> : Column, DatabaseType.ROW_ID, ctUE> { /** * Table that contains references. For debugging. */ @@ -29,7 +29,7 @@ public interface ForeignRowReference : Column : CreateTableScope> changeDefaultValue(c: Column, d: DefaultConstraint): DefaultConstraint public fun deleteDefaultValue(i: DefaultConstraint) - public fun keepForeignRowReference( - frr: ForeignRowReference, - onDelete: ForeignRowReference.OnDeleteAction? = null - ): ForeignRowReference + public fun ?, DT : DatabaseType> keepForeignRowReference( + frr: ForeignRowReference, + onDelete: ForeignRowReference.OnDelete? = null + ): ForeignRowReference public fun keepForeignRowReferenceToUpdatedTable( - frr: ForeignRowReference, + frr: ForeignRowReference, DatabaseType.ROW_ID>, updatedTable: Table, - onDelete: ForeignRowReference.OnDeleteAction? = null - ): ForeignRowReference + onDelete: ForeignRowReference.OnDelete? = null + ): ForeignRowReference, DatabaseType.ROW_ID> - public fun renameAndKeepForeignRowReference( - frr: ForeignRowReference, - onDelete: ForeignRowReference.OnDeleteAction? = null - ): ForeignRowReference + public fun keepNullableForeignRowReferenceToUpdatedTable( + frr: ForeignRowReference?, DatabaseType.Nullable, DatabaseType.ROW_ID>>, + updatedTable: Table, + onDelete: ForeignRowReference.OnDelete? = null + ): ForeignRowReference, DatabaseType.ROW_ID> + + public fun ?, DT : DatabaseType> renameAndKeepForeignRowReference( + frr: ForeignRowReference, + onDelete: ForeignRowReference.OnDelete? = null + ): ForeignRowReference public fun renameAndKeepForeignRowReferenceToUpdatedTable( - frr: ForeignRowReference, + frr: ForeignRowReference, DatabaseType.ROW_ID>, updatedTable: Table, - onDelete: ForeignRowReference.OnDeleteAction? = null - ): ForeignRowReference + onDelete: ForeignRowReference.OnDelete? = null + ): ForeignRowReference, DatabaseType.ROW_ID> - public fun deleteForeignRowReference(frr: ForeignRowReference) + public fun renameAndKeepNullableForeignRowReferenceToUpdatedTable( + frr: ForeignRowReference?, DatabaseType.Nullable, DatabaseType.ROW_ID>>, + updatedTable: Table, + onDelete: ForeignRowReference.OnDelete? = null + ): ForeignRowReference?, DatabaseType.Nullable, DatabaseType.ROW_ID>> - public fun keepForeignRowReferenceUntilUpgraded( - frr: ForeignRowReference, - onDelete: ForeignRowReference.OnDeleteAction? = null - ): ForeignRowReference + public fun deleteForeignRowReference(frr: ForeignRowReference) + + public fun ?, DT : DatabaseType> keepForeignRowReferenceUntilUpgraded( + frr: ForeignRowReference, + onDelete: ForeignRowReference.OnDelete? = null + ): ForeignRowReference public fun keepForeignRowReferenceToUpdatedTableUntilUpgraded( - frr: ForeignRowReference, + frr: ForeignRowReference, DatabaseType.ROW_ID>, updatedTable: Table, - onDelete: ForeignRowReference.OnDeleteAction? = null - ): ForeignRowReference + onDelete: ForeignRowReference.OnDelete? = null + ): ForeignRowReference, DatabaseType.ROW_ID> + + public fun keepNullableForeignRowReferenceToUpdatedTableUntilUpgraded( + frr: ForeignRowReference?, DatabaseType.Nullable, DatabaseType.ROW_ID>>, + updatedTable: Table, + onDelete: ForeignRowReference.OnDelete? = null + ): ForeignRowReference?, DatabaseType.Nullable, DatabaseType.ROW_ID>> } \ No newline at end of file