Module provider interfaces
This commit is contained in:
parent
ef5c277bf1
commit
15bcebb049
@ -9,14 +9,14 @@ 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
|
||||||
|
|
||||||
public interface ModuleModifyingRound {
|
public interface ModuleCreator {
|
||||||
public fun interface CreateTable<TableUserExtension : Any> {
|
public interface CreateTable<TableUserExtension : Any> {
|
||||||
public fun createTable(creator: TableCreator<TableUserExtension>): TableUserExtension
|
public fun createTable(creator: TableCreator<TableUserExtension>): TableUserExtension
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun <TableUserExtension : Any> createTable(namespace: Namespace, name: String, initializer: CreateTable<TableUserExtension>): Table<TableUserExtension, Nothing>
|
public fun <TableUserExtension : Any> createTable(namespace: Namespace, name: String, initializer: CreateTable<TableUserExtension>): Table<TableUserExtension, Nothing>
|
||||||
|
|
||||||
public fun interface UpdateTable<TableNewUserExtension : Any, TableOldUserExtension : Any> {
|
public interface UpdateTable<TableNewUserExtension : Any, TableOldUserExtension : Any> {
|
||||||
public fun updateTable(oldTable: Table<TableOldUserExtension, *>, updater: TableUpdater<TableNewUserExtension, TableOldUserExtension>): TableNewUserExtension
|
public fun updateTable(oldTable: Table<TableOldUserExtension, *>, updater: TableUpdater<TableNewUserExtension, TableOldUserExtension>): TableNewUserExtension
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -49,25 +49,25 @@ public interface ModuleModifyingRound {
|
|||||||
initializer: UpdateTable<TableNewUserExtension, TableOldUserExtension>
|
initializer: UpdateTable<TableNewUserExtension, TableOldUserExtension>
|
||||||
): Table<TableNewUserExtension, TableOldUserExtension>
|
): Table<TableNewUserExtension, TableOldUserExtension>
|
||||||
|
|
||||||
public fun interface CreateSelect<QueryUserWrapper : Any> {
|
public interface CreateSelect<QueryUserWrapper : Any> {
|
||||||
public fun createSelect(creator: SelectCreator<QueryUserWrapper>): QueryUserWrapper
|
public fun createSelect(creator: SelectCreator<QueryUserWrapper>): QueryUserWrapper
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun <QueryUserWrapper : Any> createSelect(initializer: CreateSelect<QueryUserWrapper>): Select<QueryUserWrapper>
|
public fun <QueryUserWrapper : Any> createSelect(initializer: CreateSelect<QueryUserWrapper>): Select<QueryUserWrapper>
|
||||||
|
|
||||||
public fun interface CreateInsert<TableUserExtension : Any, QueryUserWrapper : Any> {
|
public interface CreateInsert<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||||
public fun createInsert(table: Table<TableUserExtension, *>, creator: InsertCreator<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
public fun createInsert(table: Table<TableUserExtension, *>, creator: InsertCreator<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createInsert(table: Table<TableUserExtension, *>, initializer: CreateInsert<TableUserExtension, QueryUserWrapper>): Insert<QueryUserWrapper>
|
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createInsert(table: Table<TableUserExtension, *>, initializer: CreateInsert<TableUserExtension, QueryUserWrapper>): Insert<QueryUserWrapper>
|
||||||
|
|
||||||
public fun interface CreateUpdate<TableUserExtension : Any, QueryUserWrapper : Any> {
|
public interface CreateUpdate<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||||
public fun createUpdate(table: Table<TableUserExtension, *>, creator: UpdateCreator<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
public fun createUpdate(table: Table<TableUserExtension, *>, creator: UpdateCreator<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||||
}
|
}
|
||||||
|
|
||||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createUpdate(table: Table<TableUserExtension, *>, initializer: CreateUpdate<TableUserExtension, QueryUserWrapper>): Update<QueryUserWrapper>
|
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createUpdate(table: Table<TableUserExtension, *>, initializer: CreateUpdate<TableUserExtension, QueryUserWrapper>): Update<QueryUserWrapper>
|
||||||
|
|
||||||
public fun interface CreateDelete<TableUserExtension : Any, QueryUserWrapper : Any> {
|
public interface CreateDelete<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||||
public fun createDelete(table: Table<TableUserExtension, *>, creator: DeleteCreator<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
public fun createDelete(table: Table<TableUserExtension, *>, creator: DeleteCreator<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||||
}
|
}
|
||||||
|
|
@ -1,9 +1,17 @@
|
|||||||
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 fun <NewModuleUserExtension : Any> modify(
|
public interface CreateModule<ModuleUserExtension : Any> {
|
||||||
|
public fun createModule(oldModule: ModuleTemplate<ModuleUserExtension>, rootNs: Namespace, updater: ModuleCreator): ModuleUserExtension
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface UpgradeModule<OldModuleUserExtension : Any, NewModuleUserExtension : Any> {
|
||||||
|
public fun createModule(oldModule: ModuleTemplate<OldModuleUserExtension>, rootNs: Namespace, updater: ModuleCreator): NewModuleUserExtension
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun <NewModuleUserExtension : Any> upgrade(
|
||||||
newVersionKey: String,
|
newVersionKey: String,
|
||||||
updater: (oldModule: ModuleTemplate<ModuleUserExtension>, rootNs: Namespace, updater: ModuleModifyingRound) -> NewModuleUserExtension
|
updater: UpgradeModule<ModuleUserExtension, NewModuleUserExtension>
|
||||||
): ModuleTemplate<NewModuleUserExtension>
|
): ModuleTemplate<NewModuleUserExtension>
|
||||||
|
|
||||||
public val versionKey: String
|
public val versionKey: String
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.runtime
|
package ru.landgrafhomyak.serdha.api.v0.runtime
|
||||||
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.ddl.ModuleModifyingRound
|
import ru.landgrafhomyak.serdha.api.v0.ddl.ModuleCreator
|
||||||
import ru.landgrafhomyak.serdha.api.v0.ddl.ModuleTemplate
|
import ru.landgrafhomyak.serdha.api.v0.ddl.ModuleTemplate
|
||||||
import ru.landgrafhomyak.serdha.api.v0.ddl.Namespace
|
import ru.landgrafhomyak.serdha.api.v0.ddl.Namespace
|
||||||
|
|
||||||
@Suppress("SpellCheckingInspection")
|
@Suppress("SpellCheckingInspection")
|
||||||
public interface UnsynchronizedDatabase {
|
public interface UnsynchronizedDatabase {
|
||||||
public fun <ModuleUserExtension : Any> createModule(initialVersionKey: String, content: (rootNs: Namespace, updater: ModuleModifyingRound) -> ModuleUserExtension): ModuleTemplate<ModuleUserExtension>
|
public fun <ModuleUserExtension : Any> createModule(initialVersionKey: String, content: ModuleTemplate.CreateModule<ModuleUserExtension>): ModuleTemplate<ModuleUserExtension>
|
||||||
|
|
||||||
public suspend fun <ModuleUserExtension : Any> synchronize(conent: ModuleTemplate<ModuleUserExtension>): SynchronizedDatabase<ModuleUserExtension>
|
public suspend fun <ModuleUserExtension : Any> synchronize(conent: ModuleTemplate<ModuleUserExtension>): SynchronizedDatabase<ModuleUserExtension>
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user