diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleCreator.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleCreator.kt new file mode 100644 index 0000000..cb777ea --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleCreator.kt @@ -0,0 +1,78 @@ +package ru.landgrafhomyak.serdha.api.v0.ddl + +import ru.landgrafhomyak.serdha.api.v0.dml.Delete +import ru.landgrafhomyak.serdha.api.v0.dml.DeleteCreator +import ru.landgrafhomyak.serdha.api.v0.dml.Insert +import ru.landgrafhomyak.serdha.api.v0.dml.InsertCreator +import ru.landgrafhomyak.serdha.api.v0.dml.Select +import ru.landgrafhomyak.serdha.api.v0.dml.SelectCreator +import ru.landgrafhomyak.serdha.api.v0.dml.Update +import ru.landgrafhomyak.serdha.api.v0.dml.UpdateCreator + +public interface ModuleCreator { + public interface CreateTable { + public fun createTable(creator: TableCreator): TableUserExtension + } + + public fun createTable(namespace: Namespace, name: String, initializer: CreateTable): Table + + public interface UpdateTable { + public fun updateTable(oldTable: Table, updater: TableUpdater): TableNewUserExtension + } + + public fun updateTable( + oldTable: Table, + initializer: UpdateTable + ): Table + + public fun renameTable( + table: Table, + newName: String + ): Table + + public fun renameTable( + table: Table, + newNamespace: Namespace, + newName: String + ): Table + + public fun updateAndRenameTable( + table: Table, + newName: String, + initializer: UpdateTable + ): Table + + public fun updateAndRenameTable( + table: Table, + newNamespace: Namespace, + newName: String, + initializer: UpdateTable + ): Table + + public interface CreateSelect { + public fun createSelect(creator: SelectCreator): QueryUserWrapper + } + + public fun createSelect(initializer: CreateSelect): Select + + public interface CreateInsert { + public fun createInsert(table: Table, creator: InsertCreator): QueryUserWrapper + } + + public fun createInsert(table: Table, initializer: CreateInsert): Insert + + public interface CreateUpdate { + public fun createUpdate(table: Table, creator: UpdateCreator): QueryUserWrapper + } + + public fun createUpdate(table: Table, initializer: CreateUpdate): Update + + public interface CreateDelete { + public fun createDelete(table: Table, creator: DeleteCreator): QueryUserWrapper + } + + public fun createDelete(table: Table, initializer: CreateDelete): Delete + + public fun substituteModule(rootNs: Namespace, template: ModuleTemplate): Module + public fun upgradeModule(oldModule: Module<*>, rootNs: Namespace, template: ModuleTemplate): Module +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleModifyingRound.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleModifyingRound.kt deleted file mode 100644 index fd49760..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleModifyingRound.kt +++ /dev/null @@ -1,78 +0,0 @@ -package ru.landgrafhomyak.serdha.api.v0.ddl - -import ru.landgrafhomyak.serdha.api.v0.dml.Delete -import ru.landgrafhomyak.serdha.api.v0.dml.DeleteCreator -import ru.landgrafhomyak.serdha.api.v0.dml.Insert -import ru.landgrafhomyak.serdha.api.v0.dml.InsertCreator -import ru.landgrafhomyak.serdha.api.v0.dml.Select -import ru.landgrafhomyak.serdha.api.v0.dml.SelectCreator -import ru.landgrafhomyak.serdha.api.v0.dml.Update -import ru.landgrafhomyak.serdha.api.v0.dml.UpdateCreator - -public interface ModuleModifyingRound { - public fun interface CreateTable { - public fun createTable(creator: TableCreator): TableUserWrapper - } - - public fun createTable(namespace: Namespace, name: String, initializer: CreateTable): Table - - public fun interface UpdateTable { - public fun updateTable(oldTable: Table, updater: TableUpdater): TableNewUserWrapper - } - - public fun updateTable( - oldTable: Table, - initializer: UpdateTable - ): Table - - public fun renameTable( - table: Table, - newName: String - ): Table - - public fun renameTable( - table: Table, - newNamespace: Namespace, - newName: String - ): Table - - public fun updateAndRenameTable( - table: Table, - newName: String, - initializer: UpdateTable - ): Table - - public fun updateAndRenameTable( - table: Table, - newNamespace: Namespace, - newName: String, - initializer: UpdateTable - ): Table - - public fun interface CreateSelect { - public fun createSelect(creator: SelectCreator): QueryUserWrapper - } - - public fun createSelect(initializer: CreateSelect): Select - - public fun interface CreateInsert { - public fun createInsert(table: Table, creator: InsertCreator): QueryUserWrapper - } - - public fun createInsert(table: Table, initializer: CreateInsert): Insert - - public fun interface CreateUpdate { - public fun createUpdate(table: Table, creator: UpdateCreator): QueryUserWrapper - } - - public fun createUpdate(table: Table, initializer: CreateUpdate): Update - - public fun interface CreateDelete { - public fun createDelete(table: Table, creator: DeleteCreator): QueryUserWrapper - } - - public fun createDelete(table: Table, initializer: CreateDelete): Delete - - public fun substituteModule(rootNs: Namespace, template: ModuleTemplate): Module - public fun upgradeModule(oldModule: Module<*>, rootNs: Namespace, template: ModuleTemplate): Module -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleTemplate.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleTemplate.kt index cba1ba6..23587eb 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleTemplate.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleTemplate.kt @@ -1,10 +1,18 @@ package ru.landgrafhomyak.serdha.api.v0.ddl -public interface ModuleTemplate { - public fun modify( +public interface ModuleTemplate { + public interface CreateModule { + public fun createModule(oldModule: ModuleTemplate, rootNs: Namespace, updater: ModuleCreator): ModuleUserExtension + } + + public interface UpgradeModule { + public fun createModule(oldModule: ModuleTemplate, rootNs: Namespace, updater: ModuleCreator): NewModuleUserExtension + } + + public fun upgrade( newVersionKey: String, - updater: (oldModule: ModuleTemplate, rootNs: Namespace, updater: ModuleModifyingRound) -> NW - ): ModuleTemplate + updater: UpgradeModule + ): ModuleTemplate public val versionKey: String } \ No newline at end of file