Module templates creating interface
This commit is contained in:
parent
4d54242286
commit
c27f795b87
@ -1,18 +1,25 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.ddl
|
package ru.landgrafhomyak.serdha.api.v0.ddl
|
||||||
|
|
||||||
public interface ModuleTemplate<ModuleUserExtension : Any> {
|
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 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 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
|
public val versionKey: String
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user