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 index a4e08ca..8aef13f 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleCreator.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleCreator.kt @@ -8,9 +8,8 @@ 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 -import ru.landgrafhomyak.serdha.api.v0.runtime.Transaction -public interface ModuleCreator : Transaction { +public interface ModuleCreator { public interface CreateTable { public fun createTable(creator: TableCreator): TableUserExtension } 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 7327918..8a9f71b 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,5 +1,7 @@ package ru.landgrafhomyak.serdha.api.v0.ddl +import ru.landgrafhomyak.serdha.api.v0.runtime.Transaction + public interface ModuleTemplate { public interface Creator { public fun createTemplate( @@ -14,11 +16,17 @@ public interface ModuleTemplate { } public interface CreateModule { - public suspend fun createModule(rootNs: Namespace, creator: ModuleCreator): ModuleUserExtension + public fun createSchema(rootNs: Namespace, creator: ModuleCreator): ModuleUserExtension + + public suspend fun initData(ext: ModuleUserExtension, transaction: Transaction) {} } public interface UpgradeModule { - public suspend fun upgradeModule(oldModule: Module, rootNs: Namespace, updater: ModuleCreator): NewModuleUserExtension + public fun upgradeSchema(oldModule: Module, rootNs: Namespace, updater: ModuleCreator): NewModuleUserExtension + + public suspend fun upgradeData(ext: NewModuleUserExtension, transaction: Transaction) {} + + public fun postUpgradeCleanupSchema(ext: NewModuleUserExtension, updater: ModuleCreator) {} } public val versionKey: String