diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/CreateModuleScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/CreateModuleScope.kt index 6fa127a..52aab05 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/CreateModuleScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/CreateModuleScope.kt @@ -6,7 +6,6 @@ import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement import ru.landgrafhomyak.db.skeleton1.api.statement._Statement import ru.landgrafhomyak.db.skeleton1.api.table.Table import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow -import ru.landgrafhomyak.db.skeleton1.api.table.TableConstructor public interface CreateModuleScope { @@ -17,7 +16,7 @@ public interface CreateModuleScope { public fun createTable( lifeTime: Table.LifeTime = Table.LifeTime.DATABASE_SCOPE, namespace: Namespace = this.rootNs, - name: String, initializer: TableConstructor + name: String, initializer: Table.Constructor ): Table public fun moduleScopedObject(namespace: Namespace = this.rootNs, name: String): ModuleScopedObject diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/UpgradeModuleScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/UpgradeModuleScope.kt index 44cf17d..7ac8ab6 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/UpgradeModuleScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/UpgradeModuleScope.kt @@ -5,7 +5,6 @@ import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement import ru.landgrafhomyak.db.skeleton1.api.statement._Statement import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow import ru.landgrafhomyak.db.skeleton1.api.table.Table -import ru.landgrafhomyak.db.skeleton1.api.table.TableUpgrade public interface UpgradeModuleScope : CreateModuleScope { @@ -15,23 +14,23 @@ public interface UpgradeModuleScope : CreateMo public fun keepAndRenameTable(table: Table, newNamespace: Namespace): Table public fun keepAndRenameTable(table: Table, newNamespace: Namespace, newName: String): Table - public fun upgradeTable(oldTable: Table, upgrade: TableUpgrade): Table + public fun upgradeTable(oldTable: Table, upgrade: Table.Upgrade): Table public fun upgradeAndRenameTable( table: Table, newName: String, - upgrade: TableUpgrade + upgrade: Table.Upgrade ): Table public fun upgradeAndRenameTable( table: Table, newNamespace: Namespace, - upgrade: TableUpgrade + upgrade: Table.Upgrade ): Table public fun upgradeAndRenameTable( table: Table, newNamespace: Namespace, - upgrade: TableUpgrade, + upgrade: Table.Upgrade, newName: String ): Table @@ -49,7 +48,7 @@ public interface UpgradeModuleScope : CreateMo public fun importAndUpgradeTable( namespace: Namespace = this.rootNs, name: String, table: Table, - upgrade: TableUpgrade + upgrade: Table.Upgrade ): Table public fun keepModule(module: Module): Module diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/Table.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/Table.kt index eee04bc..820cdea 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/Table.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/Table.kt @@ -36,4 +36,12 @@ public interface Table { @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getLifeTime") public val lifeTime: LifeTime + + public interface Constructor { + public fun createTable(context: TableConstructorScope): tUE + } + + public interface Upgrade { + public fun upgradeTable(oldTable: toUE, context: TableUpgradeScope): tnUE + } } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableConstructor.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableConstructor.kt deleted file mode 100644 index 08f51a3..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableConstructor.kt +++ /dev/null @@ -1,28 +0,0 @@ -package ru.landgrafhomyak.db.skeleton1.api.table - -import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi -import ru.landgrafhomyak.db.skeleton1.api.DatabaseType -import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement -import ru.landgrafhomyak.db.skeleton1.api.statement._Statement -import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow - - -public interface TableConstructor { - public fun createTable(context: Scope): tUE - - public interface Scope { - public fun column(name: String, type: DatabaseType.ImplementationsProvider, manualCreate: Boolean = false): Column - public fun columnWithBoundType(name: String, foreign: Column): Column - - public fun tableScopedObject(name: String): TableScopedObject - - public fun addAlterStatement(stmt: _Statement.Void2Void<*, RK>) - public fun addAlterStatement(stmt: RawStatement.Void2Void.ImplementationsProvider<*>) - - @LowLevelApi - public fun _addAlterStatement(stmt: _Statement.Void2Void): InputRow._Scope - - @LowLevelApi - public fun _addAlterStatement(stmt: RawStatement.Params2Void.ImplementationsProvider): InputRow._Scope - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableConstructorScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableConstructorScope.kt new file mode 100644 index 0000000..a5c9bdf --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableConstructorScope.kt @@ -0,0 +1,24 @@ +package ru.landgrafhomyak.db.skeleton1.api.table + +import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi +import ru.landgrafhomyak.db.skeleton1.api.DatabaseType +import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement +import ru.landgrafhomyak.db.skeleton1.api.statement._Statement +import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow + + +public interface TableConstructorScope { + public fun column(name: String, type: DatabaseType.ImplementationsProvider, manualCreate: Boolean = false): Column + public fun columnWithBoundType(name: String, foreign: Column): Column + + public fun tableScopedObject(name: String): TableScopedObject + + public fun addAlterStatement(stmt: _Statement.Void2Void<*, RK>) + public fun addAlterStatement(stmt: RawStatement.Void2Void.ImplementationsProvider<*>) + + @LowLevelApi + public fun _addAlterStatement(stmt: _Statement.Void2Void): InputRow._Scope + + @LowLevelApi + public fun _addAlterStatement(stmt: RawStatement.Params2Void.ImplementationsProvider): InputRow._Scope +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableUpgrade.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableUpgrade.kt deleted file mode 100644 index e260bf0..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableUpgrade.kt +++ /dev/null @@ -1,39 +0,0 @@ -package ru.landgrafhomyak.db.skeleton1.api.table - -import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi -import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement -import ru.landgrafhomyak.db.skeleton1.api.statement._Statement -import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow - - -public interface TableUpgrade { - public fun upgradeTable(oldTable: toUE, context: Scope): tnUE - - public interface Scope : TableConstructor.Scope { - public fun keepColumn(c: Column): Column - public fun renameColumn(c: Column, newName: String): Column - public fun removeColumn(c: Column<*, toUE, RK>) - public fun removeColumnAfterUpgrade(c: Column): Column - - public fun keepColumnWithBoundType(c: Column): Column - public fun unbindAndKeepColumnWithBoundType(c: Column): Column - public fun renameColumnWithBoundType(c: Column, newName: String): Column - public fun unbindAndRenameColumnWithBoundType(c: Column, newName: String): Column - public fun removeColumnWithBoundType(c: Column<*, toUE, RK>) - public fun removeColumnWithBoundTypeAfterUpgrade(c: Column): Column - - public fun keepTableScopedObject(obj: TableScopedObject): TableScopedObject - public fun renameTableScopedObject(obj: TableScopedObject, newName: String): TableScopedObject - public fun removeTableScopedObject(obj: TableScopedObject): TableScopedObject - - - public fun addAlterStatementAfterUpgrade(stmt: _Statement.Void2Void<*, RK>) - public fun addAlterStatementAfterUpgrade(stmt: RawStatement.Void2Void.ImplementationsProvider<*>) - - @LowLevelApi - public fun _addAlterStatementAfterUpgrade(stmt: _Statement.Params2Void): InputRow._Scope - - @LowLevelApi - public fun _addAlterStatementAfterUpgrade(stmt: RawStatement.Params2Void.ImplementationsProvider): InputRow._Scope - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableUpgradeScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableUpgradeScope.kt new file mode 100644 index 0000000..57c5d9f --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableUpgradeScope.kt @@ -0,0 +1,34 @@ +package ru.landgrafhomyak.db.skeleton1.api.table + +import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi +import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement +import ru.landgrafhomyak.db.skeleton1.api.statement._Statement +import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow + +public interface TableUpgradeScope : TableConstructorScope { + public fun keepColumn(c: Column): Column + public fun renameColumn(c: Column, newName: String): Column + public fun removeColumn(c: Column<*, toUE, RK>) + public fun removeColumnAfterUpgrade(c: Column): Column + + public fun keepColumnWithBoundType(c: Column): Column + public fun unbindAndKeepColumnWithBoundType(c: Column): Column + public fun renameColumnWithBoundType(c: Column, newName: String): Column + public fun unbindAndRenameColumnWithBoundType(c: Column, newName: String): Column + public fun removeColumnWithBoundType(c: Column<*, toUE, RK>) + public fun removeColumnWithBoundTypeAfterUpgrade(c: Column): Column + + public fun keepTableScopedObject(obj: TableScopedObject): TableScopedObject + public fun renameTableScopedObject(obj: TableScopedObject, newName: String): TableScopedObject + public fun removeTableScopedObject(obj: TableScopedObject): TableScopedObject + + + public fun addAlterStatementAfterUpgrade(stmt: _Statement.Void2Void<*, RK>) + public fun addAlterStatementAfterUpgrade(stmt: RawStatement.Void2Void.ImplementationsProvider<*>) + + @LowLevelApi + public fun _addAlterStatementAfterUpgrade(stmt: _Statement.Params2Void): InputRow._Scope + + @LowLevelApi + public fun _addAlterStatementAfterUpgrade(stmt: RawStatement.Params2Void.ImplementationsProvider): InputRow._Scope +} \ No newline at end of file