diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleModifyingRound.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleCreator.kt similarity index 88% rename from src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleModifyingRound.kt rename to src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleCreator.kt index c4ab6d1..cb777ea 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleModifyingRound.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleCreator.kt @@ -9,14 +9,14 @@ 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 interface ModuleCreator { + public interface CreateTable { public fun createTable(creator: TableCreator): TableUserExtension } public fun createTable(namespace: Namespace, name: String, initializer: CreateTable): Table - public fun interface UpdateTable { + public interface UpdateTable { public fun updateTable(oldTable: Table, updater: TableUpdater): TableNewUserExtension } @@ -49,25 +49,25 @@ public interface ModuleModifyingRound { initializer: UpdateTable ): Table - public fun interface CreateSelect { + public interface CreateSelect { public fun createSelect(creator: SelectCreator): QueryUserWrapper } public fun createSelect(initializer: CreateSelect): Select - public fun interface CreateInsert { + public interface CreateInsert { public fun createInsert(table: Table, creator: InsertCreator): QueryUserWrapper } public fun createInsert(table: Table, initializer: CreateInsert): Insert - public fun interface CreateUpdate { + public interface CreateUpdate { public fun createUpdate(table: Table, creator: UpdateCreator): QueryUserWrapper } public fun createUpdate(table: Table, initializer: CreateUpdate): Update - public fun interface CreateDelete { + public interface CreateDelete { public fun createDelete(table: Table, creator: DeleteCreator): QueryUserWrapper } 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 1fa9cd7..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,9 +1,17 @@ package ru.landgrafhomyak.serdha.api.v0.ddl public interface ModuleTemplate { - public fun modify( + 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) -> NewModuleUserExtension + updater: UpgradeModule ): ModuleTemplate public val versionKey: String diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/UnsynchronizedDatabase.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/UnsynchronizedDatabase.kt index 07d26a9..7132522 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/UnsynchronizedDatabase.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/UnsynchronizedDatabase.kt @@ -1,12 +1,12 @@ package ru.landgrafhomyak.serdha.api.v0.runtime -import ru.landgrafhomyak.serdha.api.v0.ddl.ModuleModifyingRound +import ru.landgrafhomyak.serdha.api.v0.ddl.ModuleCreator import ru.landgrafhomyak.serdha.api.v0.ddl.ModuleTemplate import ru.landgrafhomyak.serdha.api.v0.ddl.Namespace @Suppress("SpellCheckingInspection") public interface UnsynchronizedDatabase { - public fun createModule(initialVersionKey: String, content: (rootNs: Namespace, updater: ModuleModifyingRound) -> ModuleUserExtension): ModuleTemplate + public fun createModule(initialVersionKey: String, content: ModuleTemplate.CreateModule): ModuleTemplate public suspend fun synchronize(conent: ModuleTemplate): SynchronizedDatabase } \ No newline at end of file