[history/serdha] Modules, namespaces and top-level interfaces
This commit is contained in:
parent
c4db335dac
commit
fe23959d9a
@ -0,0 +1,7 @@
|
|||||||
|
package ru.landgrafhomyak.serdha.api.v0.ddl
|
||||||
|
|
||||||
|
public interface Module<W : Any> {
|
||||||
|
public val wrapper: W
|
||||||
|
|
||||||
|
public val versionKey: String
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
package ru.landgrafhomyak.serdha.api.v0.ddl
|
||||||
|
|
||||||
|
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 <TableUserWrapper : Any> createTable(
|
||||||
|
namespace: Namespace,
|
||||||
|
name: String,
|
||||||
|
initializer: (TableCreator<TableUserWrapper>) -> TableUserWrapper
|
||||||
|
): Table<TableUserWrapper, Nothing>
|
||||||
|
|
||||||
|
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateTable(
|
||||||
|
oldTable: Table<TableOldUserWrapper, *>,
|
||||||
|
initializer: (TableUpdater<TableNewUserWrapper, TableOldUserWrapper>) -> TableNewUserWrapper
|
||||||
|
): 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: (TableUpdater<TableNewUserWrapper, TableOldUserWrapper>) -> TableNewUserWrapper
|
||||||
|
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
||||||
|
|
||||||
|
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateAndRenameTable(
|
||||||
|
table: Table<TableNewUserWrapper, TableOldUserWrapper>,
|
||||||
|
newNamespace: Namespace,
|
||||||
|
newName: String,
|
||||||
|
initializer: (TableUpdater<TableNewUserWrapper, TableOldUserWrapper>) -> TableNewUserWrapper
|
||||||
|
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
||||||
|
|
||||||
|
public fun <QueryUserWrapper : Any> createSelect(initializer: (SelectCreator<QueryUserWrapper>) -> QueryUserWrapper): Select<QueryUserWrapper>
|
||||||
|
public fun <TableUserWrapper : Any, QueryUserWrapper : Any> createInsert(table: Table<TableUserWrapper, *>, initializer: (InsertCreator<TableUserWrapper, QueryUserWrapper>) -> QueryUserWrapper): Insert<QueryUserWrapper>
|
||||||
|
public fun <TableUserWrapper : Any, QueryUserWrapper : Any> createUpdate(table: Table<TableUserWrapper, *>, initializer: (UpdateCreator<TableUserWrapper, QueryUserWrapper>) -> QueryUserWrapper): Update<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>
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package ru.landgrafhomyak.serdha.api.v0.ddl
|
||||||
|
|
||||||
|
public interface ModuleTemplate<W : Any> {
|
||||||
|
public fun <NW : Any> modify(
|
||||||
|
newVersionKey: String,
|
||||||
|
updater: (oldModule: ModuleTemplate<W>, rootNs: Namespace, updater: ModuleModifyingRound) -> NW
|
||||||
|
): ModuleTemplate<NW>
|
||||||
|
|
||||||
|
public val versionKey: String
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package ru.landgrafhomyak.serdha.api.v0.ddl
|
||||||
|
|
||||||
|
public interface Namespace {
|
||||||
|
@Suppress("SpellCheckingInspection")
|
||||||
|
public fun subnamespace(name: String): Namespace
|
||||||
|
|
||||||
|
public val name: String
|
||||||
|
|
||||||
|
public val path: List<String>
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user