Table creating scopes and lazy column deleting

This commit is contained in:
Andrew Golovashevich 2025-01-04 20:02:10 +03:00
parent 29f2435057
commit dfd1cd950d
4 changed files with 8 additions and 12 deletions

View File

@ -42,7 +42,7 @@ public interface CreateModuleScope {
* @see CreateModuleScope.createTransactionScopeTemporaryTable
* @see UpgradeModuleScope.TableUpgrade
*/
public fun createTable(creator: ru.landgrafhomyak.serdha.api.v0.ddl.table.TableCreator<TableUserExtension>): TableUserExtension
public fun createTable(creator: ru.landgrafhomyak.serdha.api.v0.ddl.table.CreateTableScope<TableUserExtension>): TableUserExtension
}
/**

View File

@ -1,7 +1,7 @@
package ru.landgrafhomyak.serdha.api.v0.ddl.module
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
import ru.landgrafhomyak.serdha.api.v0.ddl.table.TableUpdater
import ru.landgrafhomyak.serdha.api.v0.ddl.table.UpdateTableScope
/**
* Scope methods for upgrading [module template][ModuleTemplate].
@ -36,7 +36,7 @@ public interface UpgradeModuleScope : CreateModuleScope {
* @see UpgradeModuleScope.upgradeAndRenameTable
* @see UpgradeModuleScope.CreateTable
*/
public fun upgradeTable(oldTable: Table<TableOldUserExtension, *>, upgrader: TableUpdater<TableNewUserExtension, TableOldUserExtension>): TableNewUserExtension
public fun upgradeTable(oldTable: Table<TableOldUserExtension, *>, upgrader: UpdateTableScope<TableNewUserExtension, TableOldUserExtension>): TableNewUserExtension
}

View File

@ -5,18 +5,18 @@ import ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseType
import ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseTypesProvider
import ru.landgrafhomyak.serdha.api.v0.ddl.types.RowId
public interface TableCreator<TableUserExtension : Any> {
public interface CreateTableScope<TableUserExtension : Any> {
public val expressionBuilder: Expression.Builder<TableUserExtension>
public val types: DatabaseTypesProvider
public fun <RuntimeType, DatabaseType : ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseType<RuntimeType>> column(name: String, type: DatabaseType): Column<RuntimeType, DatabaseType, TableUserExtension>
public fun <RT, DT : DatabaseType<RT>> column(name: String, type: DT): Column<RT, DT, TableUserExtension>
public fun index(name: String, vararg columns: Column<*, *, TableUserExtension>): Index<TableUserExtension>
public fun uniqueIndex(name: String, distinctNulls: Boolean, vararg columns: Column<*, *, TableUserExtension>): UniqueIndex<TableUserExtension>
public fun checkConstraint(name: String, constraint: Expression<Boolean, DatabaseType.BOOLEAN, TableUserExtension>): CheckConstraint<TableUserExtension>
public fun <RuntimeType : Any, DatabaseType : ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseType<RuntimeType>> defaultValue(c: Column<RuntimeType, DatabaseType, TableUserExtension>, expr: Expression<RuntimeType, DatabaseType, TableUserExtension>): DefaultConstraint<RuntimeType, DatabaseType, TableUserExtension>
public fun <RT : Any, DT : DatabaseType<RT>> defaultValue(c: Column<RT, DT, TableUserExtension>, expr: Expression<RT, DT, TableUserExtension>): DefaultConstraint<RT, DT, TableUserExtension>
@Suppress("PropertyName")
public val rowId_column: Column<RowId<TableUserExtension>, DatabaseType<RowId<TableUserExtension>>, TableUserExtension>

View File

@ -4,15 +4,12 @@ import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseType
public interface TableUpdater<TableNewUserExtension : Any, TableOldUserExtension : Any> : TableCreator<TableNewUserExtension> {
public interface UpdateTableScope<TableNewUserExtension : Any, TableOldUserExtension : Any> : CreateTableScope<TableNewUserExtension> {
public val oldExpressionBuilder: Expression.Builder<TableOldUserExtension>
public fun <RT, DT : DatabaseType<RT>> keepColumn(c: Column<RT, DT, TableOldUserExtension>): Column<RT, DT, TableNewUserExtension>
public fun <RT, DT : DatabaseType<RT>> keepColumnUntilUpgrading(c: Column<RT, DT, TableOldUserExtension>): Column<RT, DT, TableNewUserExtension>
public fun <RT, DT : DatabaseType<RT>> renameAndKeepColumn(c: Column<RT, DT, TableOldUserExtension>, newName: String): Column<RT, DT, TableNewUserExtension>
public fun <RT, DT : DatabaseType<RT>> mapAndKeepColumn(c: Column<*, *, TableOldUserExtension>, newValue: Expression<RT, DT, TableOldUserExtension>, where: Expression<Boolean, DatabaseType.BOOLEAN, TableNewUserExtension>?): Column<RT, DT, TableNewUserExtension>
public fun <RT, DT : DatabaseType<RT>> mapAndKeepColumn(c: Column<*, *, TableOldUserExtension>, newValue: Expression<RT, DT, TableOldUserExtension>): Column<RT, DT, TableNewUserExtension> = this.mapAndKeepColumn(c, newValue, null)
public fun <RT, DT : DatabaseType<RT>> mapAndRenameAndKeepColumn(c: Column<*, *, TableOldUserExtension>, newName: String, newValue: Expression<RT, DT, TableOldUserExtension>, where: Expression<Boolean, DatabaseType.BOOLEAN, TableNewUserExtension>?): Column<RT, DT, TableNewUserExtension>
public fun <RT, DT : DatabaseType<RT>> mapAndRenameAndKeepColumn(c: Column<*, *, TableOldUserExtension>, newName: String, newValue: Expression<RT, DT, TableOldUserExtension>): Column<RT, DT, TableNewUserExtension> = this.mapAndRenameAndKeepColumn(c, newName, newValue, null)
public fun deleteColumn(c: Column<*, *, TableOldUserExtension>)
public fun keepIndex(i: Index<TableOldUserExtension>): Index<TableNewUserExtension>
@ -47,7 +44,6 @@ public interface TableUpdater<TableNewUserExtension : Any, TableOldUserExtension
onDelete: ForeignRowReference.OnDeleteAction? = null
): ForeignRowReference<TableNewUserExtension, TargetTableUserWrapper>
public fun <TargetTableOldUserWrapper : Any, TargetTableNewUserWrapper : Any> renameAndKeepForeignRowReferenceToUpdatedTable(
frr: ForeignRowReference<TableOldUserExtension, TargetTableOldUserWrapper>,
updatedTable: Table<TargetTableNewUserWrapper, TargetTableOldUserWrapper>,