[history/serdha] Module templates creating interface
This commit is contained in:
parent
f1f03815d5
commit
acc5aa8af5
@ -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
|
||||
}
|
Loading…
Reference in New Issue
Block a user