[history/serdha] Sub-querying inserts and separated schema and data manipulations at sync time
This commit is contained in:
parent
afa7ae3ec0
commit
b82c29b8eb
@ -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.SelectCreator
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.Update
|
import ru.landgrafhomyak.serdha.api.v0.dml.Update
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.UpdateCreator
|
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<TableUserExtension : Any> {
|
public interface CreateTable<TableUserExtension : Any> {
|
||||||
public fun createTable(creator: TableCreator<TableUserExtension>): TableUserExtension
|
public fun createTable(creator: TableCreator<TableUserExtension>): TableUserExtension
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.ddl
|
package ru.landgrafhomyak.serdha.api.v0.ddl
|
||||||
|
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.runtime.Transaction
|
||||||
|
|
||||||
public interface ModuleTemplate<ModuleUserExtension : Any> {
|
public interface ModuleTemplate<ModuleUserExtension : Any> {
|
||||||
public interface Creator {
|
public interface Creator {
|
||||||
public fun <NewModuleUserExtension : Any> createTemplate(
|
public fun <NewModuleUserExtension : Any> createTemplate(
|
||||||
@ -14,11 +16,17 @@ public interface ModuleTemplate<ModuleUserExtension : Any> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public interface CreateModule<ModuleUserExtension : Any> {
|
public interface CreateModule<ModuleUserExtension : Any> {
|
||||||
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<OldModuleUserExtension : Any, NewModuleUserExtension : Any> {
|
public interface UpgradeModule<OldModuleUserExtension : Any, NewModuleUserExtension : Any> {
|
||||||
public suspend fun upgradeModule(oldModule: Module<OldModuleUserExtension>, rootNs: Namespace, updater: ModuleCreator): NewModuleUserExtension
|
public fun upgradeSchema(oldModule: Module<OldModuleUserExtension>, rootNs: Namespace, updater: ModuleCreator): NewModuleUserExtension
|
||||||
|
|
||||||
|
public suspend fun upgradeData(ext: NewModuleUserExtension, transaction: Transaction) {}
|
||||||
|
|
||||||
|
public fun postUpgradeCleanupSchema(ext: NewModuleUserExtension, updater: ModuleCreator) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
public val versionKey: String
|
public val versionKey: String
|
||||||
|
Loading…
Reference in New Issue
Block a user