From c27f795b87358736012f833a1435ff108f86a987 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich <landgrafhomyak@gmail.com> Date: Fri, 20 Dec 2024 19:33:49 +0300 Subject: [PATCH] Module templates creating interface --- .../serdha/api/v0/ddl/ModuleTemplate.kt | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) 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 23587eb..2751fb3 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,18 +1,25 @@ package ru.landgrafhomyak.serdha.api.v0.ddl public interface ModuleTemplate<ModuleUserExtension : Any> { + public interface Creator { + public fun <NewModuleUserExtension : Any> createTemplate( + versionKey: String, + updater: CreateModule<NewModuleUserExtension>, + ): ModuleTemplate<NewModuleUserExtension> + + public fun <OldModuleUserExtension : Any, NewModuleUserExtension : Any> upgradeTemplate( + versionKey: String, + updater: UpgradeModule<OldModuleUserExtension, NewModuleUserExtension>, + ): ModuleTemplate<NewModuleUserExtension> + } + public interface CreateModule<ModuleUserExtension : Any> { - public fun createModule(oldModule: ModuleTemplate<ModuleUserExtension>, rootNs: Namespace, updater: ModuleCreator): ModuleUserExtension + public fun createModule(rootNs: Namespace, creator: ModuleCreator): ModuleUserExtension } public interface UpgradeModule<OldModuleUserExtension : Any, NewModuleUserExtension : Any> { - public fun createModule(oldModule: ModuleTemplate<OldModuleUserExtension>, rootNs: Namespace, updater: ModuleCreator): NewModuleUserExtension + public fun upgradeModule(oldModule: Module<OldModuleUserExtension>, rootNs: Namespace, updater: ModuleCreator): NewModuleUserExtension } - public fun <NewModuleUserExtension : Any> upgrade( - newVersionKey: String, - updater: UpgradeModule<ModuleUserExtension, NewModuleUserExtension> - ): ModuleTemplate<NewModuleUserExtension> - public val versionKey: String } \ No newline at end of file