From 39a08fb2fafc4e4ade8ccc9f491dcbb8271ed7f7 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Thu, 13 Feb 2025 11:28:00 +0300 Subject: [PATCH] [history/serdha] Version of module template moved to constructor --- .../serdha0/api/module/ModuleTemplate.kt | 49 +++++++++++-------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/ModuleTemplate.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/ModuleTemplate.kt index 7653c14..837ac40 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/ModuleTemplate.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/ModuleTemplate.kt @@ -2,33 +2,42 @@ package ru.landgrafhomyak.db.serdha0.api.module import ru.landgrafhomyak.db.serdha0.api.runtime.Transaction -public interface ModuleTemplate<@Suppress("unused") ModuleUserExtension : Any> { - public interface Provider { - public fun createModuleTemplates(scope: CreateModuleTemplatesScope): UserExtension +public interface ModuleTemplate<@Suppress("unused") mUE : Any> { + public interface VersionsInitializer { + public fun createModuleTemplates(context: Scope): UE + + public interface Scope { + public fun createTemplate( + constructor: ModuleConstructor, + ): ModuleTemplate + + public fun upgradeTemplate( + oldModule: ModuleTemplate, + upgrade: ModuleUpgrade, + ): ModuleTemplate + + public fun upgradeTemplateAndMerge( + oldModule: ModuleTemplate, + upgrade: ModuleUpgrade, + mergeTo: ModuleTemplate + ): ModuleTemplate + } } - public interface CreateModuleTemplatesScope { - public fun createTemplate( - versionKey: String, - creator: ModuleCreator, - ): ModuleTemplate + public interface ModuleConstructor { + public val versionKey: String - public fun upgradeTemplate( - versionKey: String, - upgrade: ModuleUpgrade, - ): ModuleTemplate + public fun createSchema(context: CreateModuleScope): mUE + + public suspend fun initData(ext: mUE, transaction: Transaction) {} } - public interface ModuleCreator { - public fun createSchema(context: CreateModuleScope): ModuleUserExtension + public interface ModuleUpgrade { + public val versionKey: String - public suspend fun initData(ext: ModuleUserExtension, transaction: Transaction) {} - } + public fun upgradeSchema(context: UpgradeModuleScope): nmUE - public interface ModuleUpgrade { - public fun upgradeSchema(context: UpgradeModuleScope): NewModuleUserExtension - - public suspend fun upgradeData(ext: NewModuleUserExtension, transaction: Transaction) {} + public suspend fun upgradeData(ext: nmUE, transaction: Transaction) {} } public val versionKey: String