[history/serdha] Sub-querying inserts and separated schema and data manipulations at sync time

This commit is contained in:
Andrew Golovashevich 2024-12-21 21:54:00 +03:00
parent afa7ae3ec0
commit b82c29b8eb
2 changed files with 11 additions and 4 deletions

View File

@ -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
} }

View File

@ -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