[history/serdha] Module provider interfaces
This commit is contained in:
parent
b0f41097d2
commit
15bd20fe87
@ -0,0 +1,78 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.ddl
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.Delete
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.DeleteCreator
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.Insert
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.InsertCreator
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.Select
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.SelectCreator
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.Update
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.UpdateCreator
|
||||
|
||||
public interface ModuleCreator {
|
||||
public interface CreateTable<TableUserExtension : Any> {
|
||||
public fun createTable(creator: TableCreator<TableUserExtension>): TableUserExtension
|
||||
}
|
||||
|
||||
public fun <TableUserExtension : Any> createTable(namespace: Namespace, name: String, initializer: CreateTable<TableUserExtension>): Table<TableUserExtension, Nothing>
|
||||
|
||||
public interface UpdateTable<TableNewUserExtension : Any, TableOldUserExtension : Any> {
|
||||
public fun updateTable(oldTable: Table<TableOldUserExtension, *>, updater: TableUpdater<TableNewUserExtension, TableOldUserExtension>): TableNewUserExtension
|
||||
}
|
||||
|
||||
public fun <TableNewUserExtension : Any, TableOldUserExtension : Any> updateTable(
|
||||
oldTable: Table<TableOldUserExtension, *>,
|
||||
initializer: UpdateTable<TableNewUserExtension, TableOldUserExtension>
|
||||
): Table<TableNewUserExtension, TableOldUserExtension>
|
||||
|
||||
public fun <TableNewUserExtension : Any, TableOldUserExtension : Any> renameTable(
|
||||
table: Table<TableNewUserExtension, TableOldUserExtension>,
|
||||
newName: String
|
||||
): Table<TableNewUserExtension, TableOldUserExtension>
|
||||
|
||||
public fun <TableNewUserExtension : Any, TableOldUserExtension : Any> renameTable(
|
||||
table: Table<TableNewUserExtension, TableOldUserExtension>,
|
||||
newNamespace: Namespace,
|
||||
newName: String
|
||||
): Table<TableNewUserExtension, TableOldUserExtension>
|
||||
|
||||
public fun <TableNewUserExtension : Any, TableOldUserExtension : Any> updateAndRenameTable(
|
||||
table: Table<TableOldUserExtension, *>,
|
||||
newName: String,
|
||||
initializer: UpdateTable<TableNewUserExtension, TableOldUserExtension>
|
||||
): Table<TableNewUserExtension, TableOldUserExtension>
|
||||
|
||||
public fun <TableNewUserExtension : Any, TableOldUserExtension : Any> updateAndRenameTable(
|
||||
table: Table<TableNewUserExtension, TableOldUserExtension>,
|
||||
newNamespace: Namespace,
|
||||
newName: String,
|
||||
initializer: UpdateTable<TableNewUserExtension, TableOldUserExtension>
|
||||
): Table<TableNewUserExtension, TableOldUserExtension>
|
||||
|
||||
public interface CreateSelect<QueryUserWrapper : Any> {
|
||||
public fun createSelect(creator: SelectCreator<QueryUserWrapper>): QueryUserWrapper
|
||||
}
|
||||
|
||||
public fun <QueryUserWrapper : Any> createSelect(initializer: CreateSelect<QueryUserWrapper>): Select<QueryUserWrapper>
|
||||
|
||||
public interface CreateInsert<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||
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 interface CreateUpdate<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||
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 interface CreateDelete<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||
public fun createDelete(table: Table<TableUserExtension, *>, creator: DeleteCreator<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||
}
|
||||
|
||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createDelete(table: Table<TableUserExtension, *>, initializer: CreateDelete<TableUserExtension, QueryUserWrapper>): Delete<QueryUserWrapper>
|
||||
|
||||
public fun <ModuleUserExtension : Any> substituteModule(rootNs: Namespace, template: ModuleTemplate<ModuleUserExtension>): Module<ModuleUserExtension>
|
||||
public fun <ModuleUserExtension : Any> upgradeModule(oldModule: Module<*>, rootNs: Namespace, template: ModuleTemplate<ModuleUserExtension>): Module<ModuleUserExtension>
|
||||
}
|
@ -1,78 +0,0 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.ddl
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.Delete
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.DeleteCreator
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.Insert
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.InsertCreator
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.Select
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.SelectCreator
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.Update
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.UpdateCreator
|
||||
|
||||
public interface ModuleModifyingRound {
|
||||
public fun interface CreateTable<TableUserWrapper : Any> {
|
||||
public fun createTable(creator: TableCreator<TableUserWrapper>): TableUserWrapper
|
||||
}
|
||||
|
||||
public fun <TableUserWrapper : Any> createTable(namespace: Namespace, name: String, initializer: CreateTable<TableUserWrapper>): Table<TableUserWrapper, Nothing>
|
||||
|
||||
public fun interface UpdateTable<TableNewUserWrapper : Any, TableOldUserWrapper : Any> {
|
||||
public fun updateTable(oldTable: Table<TableOldUserWrapper, *>, updater: TableUpdater<TableNewUserWrapper, TableOldUserWrapper>): TableNewUserWrapper
|
||||
}
|
||||
|
||||
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateTable(
|
||||
oldTable: Table<TableOldUserWrapper, *>,
|
||||
initializer: UpdateTable<TableNewUserWrapper, TableOldUserWrapper>
|
||||
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
||||
|
||||
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> renameTable(
|
||||
table: Table<TableNewUserWrapper, TableOldUserWrapper>,
|
||||
newName: String
|
||||
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
||||
|
||||
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> renameTable(
|
||||
table: Table<TableNewUserWrapper, TableOldUserWrapper>,
|
||||
newNamespace: Namespace,
|
||||
newName: String
|
||||
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
||||
|
||||
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateAndRenameTable(
|
||||
table: Table<TableOldUserWrapper, *>,
|
||||
newName: String,
|
||||
initializer: UpdateTable<TableNewUserWrapper, TableOldUserWrapper>
|
||||
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
||||
|
||||
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateAndRenameTable(
|
||||
table: Table<TableNewUserWrapper, TableOldUserWrapper>,
|
||||
newNamespace: Namespace,
|
||||
newName: String,
|
||||
initializer: UpdateTable<TableNewUserWrapper, TableOldUserWrapper>
|
||||
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
||||
|
||||
public fun interface CreateSelect<QueryUserWrapper : Any> {
|
||||
public fun createSelect(creator: SelectCreator<QueryUserWrapper>): QueryUserWrapper
|
||||
}
|
||||
|
||||
public fun <QueryUserWrapper : Any> createSelect(initializer: CreateSelect<QueryUserWrapper>): Select<QueryUserWrapper>
|
||||
|
||||
public fun interface CreateInsert<TableUserWrapper : Any, QueryUserWrapper : Any> {
|
||||
public fun createInsert(table: Table<TableUserWrapper, *>, creator: InsertCreator<TableUserWrapper, QueryUserWrapper>): QueryUserWrapper
|
||||
}
|
||||
|
||||
public fun <TableUserWrapper : Any, QueryUserWrapper : Any> createInsert(table: Table<TableUserWrapper, *>, initializer: CreateInsert<TableUserWrapper, QueryUserWrapper>): Insert<QueryUserWrapper>
|
||||
|
||||
public fun interface CreateUpdate<TableUserWrapper : Any, QueryUserWrapper : Any> {
|
||||
public fun createUpdate(table: Table<TableUserWrapper, *>, creator: UpdateCreator<TableUserWrapper, QueryUserWrapper>): QueryUserWrapper
|
||||
}
|
||||
|
||||
public fun <TableUserWrapper : Any, QueryUserWrapper : Any> createUpdate(table: Table<TableUserWrapper, *>, initializer: CreateUpdate<TableUserWrapper, QueryUserWrapper>): Update<QueryUserWrapper>
|
||||
|
||||
public fun interface CreateDelete<TableUserWrapper : Any, QueryUserWrapper : Any> {
|
||||
public fun createDelete(table: Table<TableUserWrapper, *>, creator: DeleteCreator<TableUserWrapper, QueryUserWrapper>): QueryUserWrapper
|
||||
}
|
||||
|
||||
public fun <TableUserWrapper : Any, QueryUserWrapper : Any> createDelete(table: Table<TableUserWrapper, *>, initializer: CreateDelete<TableUserWrapper, QueryUserWrapper>): Delete<QueryUserWrapper>
|
||||
|
||||
public fun <W : Any> substituteModule(rootNs: Namespace, template: ModuleTemplate<W>): Module<W>
|
||||
public fun <W : Any> upgradeModule(oldModule: Module<*>, rootNs: Namespace, template: ModuleTemplate<W>): Module<W>
|
||||
}
|
@ -1,10 +1,18 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.ddl
|
||||
|
||||
public interface ModuleTemplate<W : Any> {
|
||||
public fun <NW : Any> modify(
|
||||
public interface ModuleTemplate<ModuleUserExtension : Any> {
|
||||
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,
|
||||
updater: (oldModule: ModuleTemplate<W>, rootNs: Namespace, updater: ModuleModifyingRound) -> NW
|
||||
): ModuleTemplate<NW>
|
||||
updater: UpgradeModule<ModuleUserExtension, NewModuleUserExtension>
|
||||
): ModuleTemplate<NewModuleUserExtension>
|
||||
|
||||
public val versionKey: String
|
||||
}
|
Loading…
Reference in New Issue
Block a user