[history/serdha] DELETE, fixes, auto-transactions
This commit is contained in:
parent
fe23959d9a
commit
b0f41097d2
@ -1,7 +1,11 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.ddl
|
package ru.landgrafhomyak.serdha.api.v0.ddl
|
||||||
|
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.runtime.SynchronizedDatabase
|
||||||
|
|
||||||
public interface Module<W : Any> {
|
public interface Module<W : Any> {
|
||||||
public val wrapper: W
|
public val wrapper: W
|
||||||
|
|
||||||
public val versionKey: String
|
public val versionKey: String
|
||||||
|
|
||||||
|
public val ownerDatabase: SynchronizedDatabase<*>
|
||||||
}
|
}
|
@ -1,5 +1,7 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.ddl
|
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.Insert
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.InsertCreator
|
import ru.landgrafhomyak.serdha.api.v0.dml.InsertCreator
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.Select
|
import ru.landgrafhomyak.serdha.api.v0.dml.Select
|
||||||
@ -8,15 +10,19 @@ 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 ModuleModifyingRound {
|
||||||
public fun <TableUserWrapper : Any> createTable(
|
public fun interface CreateTable<TableUserWrapper : Any> {
|
||||||
namespace: Namespace,
|
public fun createTable(creator: TableCreator<TableUserWrapper>): TableUserWrapper
|
||||||
name: String,
|
}
|
||||||
initializer: (TableCreator<TableUserWrapper>) -> TableUserWrapper
|
|
||||||
): Table<TableUserWrapper, Nothing>
|
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(
|
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateTable(
|
||||||
oldTable: Table<TableOldUserWrapper, *>,
|
oldTable: Table<TableOldUserWrapper, *>,
|
||||||
initializer: (TableUpdater<TableNewUserWrapper, TableOldUserWrapper>) -> TableNewUserWrapper
|
initializer: UpdateTable<TableNewUserWrapper, TableOldUserWrapper>
|
||||||
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
||||||
|
|
||||||
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> renameTable(
|
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> renameTable(
|
||||||
@ -33,19 +39,39 @@ public interface ModuleModifyingRound {
|
|||||||
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateAndRenameTable(
|
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateAndRenameTable(
|
||||||
table: Table<TableOldUserWrapper, *>,
|
table: Table<TableOldUserWrapper, *>,
|
||||||
newName: String,
|
newName: String,
|
||||||
initializer: (TableUpdater<TableNewUserWrapper, TableOldUserWrapper>) -> TableNewUserWrapper
|
initializer: UpdateTable<TableNewUserWrapper, TableOldUserWrapper>
|
||||||
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
||||||
|
|
||||||
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateAndRenameTable(
|
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateAndRenameTable(
|
||||||
table: Table<TableNewUserWrapper, TableOldUserWrapper>,
|
table: Table<TableNewUserWrapper, TableOldUserWrapper>,
|
||||||
newNamespace: Namespace,
|
newNamespace: Namespace,
|
||||||
newName: String,
|
newName: String,
|
||||||
initializer: (TableUpdater<TableNewUserWrapper, TableOldUserWrapper>) -> TableNewUserWrapper
|
initializer: UpdateTable<TableNewUserWrapper, TableOldUserWrapper>
|
||||||
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
): Table<TableNewUserWrapper, TableOldUserWrapper>
|
||||||
|
|
||||||
public fun <QueryUserWrapper : Any> createSelect(initializer: (SelectCreator<QueryUserWrapper>) -> QueryUserWrapper): Select<QueryUserWrapper>
|
public fun interface CreateSelect<QueryUserWrapper : Any> {
|
||||||
public fun <TableUserWrapper : Any, QueryUserWrapper : Any> createInsert(table: Table<TableUserWrapper, *>, initializer: (InsertCreator<TableUserWrapper, QueryUserWrapper>) -> QueryUserWrapper): Insert<QueryUserWrapper>
|
public fun createSelect(creator: SelectCreator<QueryUserWrapper>): QueryUserWrapper
|
||||||
public fun <TableUserWrapper : Any, QueryUserWrapper : Any> createUpdate(table: Table<TableUserWrapper, *>, initializer: (UpdateCreator<TableUserWrapper, QueryUserWrapper>) -> QueryUserWrapper): Update<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> substituteModule(rootNs: Namespace, template: ModuleTemplate<W>): Module<W>
|
||||||
public fun <W : Any> upgradeModule(oldModule: Module<*>, rootNs: Namespace, template: ModuleTemplate<W>): Module<W>
|
public fun <W : Any> upgradeModule(oldModule: Module<*>, rootNs: Namespace, template: ModuleTemplate<W>): Module<W>
|
||||||
|
@ -25,9 +25,15 @@ public interface TableCreator<TableUserWrapper : Any> {
|
|||||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> nullableColumn(name: String, type: DatabaseType): Column<RuntimeType?, DatabaseType, TableUserWrapper>
|
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> nullableColumn(name: String, type: DatabaseType): Column<RuntimeType?, DatabaseType, TableUserWrapper>
|
||||||
|
|
||||||
public fun index(name: String, vararg columns: Column<*, *, TableUserWrapper>): Index<TableUserWrapper>
|
public fun index(name: String, vararg columns: Column<*, *, TableUserWrapper>): Index<TableUserWrapper>
|
||||||
|
|
||||||
|
// todo not-null column uniqueness
|
||||||
public fun unique(name: String, distinctNulls: Boolean, vararg columns: Column<*, *, TableUserWrapper>): UniqueConstraint<TableUserWrapper>
|
public fun unique(name: String, distinctNulls: Boolean, vararg columns: Column<*, *, TableUserWrapper>): UniqueConstraint<TableUserWrapper>
|
||||||
public fun check(name: String, constraint: Expression<Boolean, ColumnType.BOOLEAN, TableUserWrapper>): CheckConstraint<TableUserWrapper>
|
public fun check(name: String, constraint: Expression<Boolean, ColumnType.BOOLEAN, TableUserWrapper>): CheckConstraint<TableUserWrapper>
|
||||||
|
|
||||||
|
public fun rowIdColumn(): Column<RowId<TableUserWrapper>, ColumnType<RowId<TableUserWrapper>>, TableUserWrapper>
|
||||||
|
|
||||||
|
public fun rowIdUniqueConstraint(): UniqueConstraint<TableUserWrapper>
|
||||||
|
|
||||||
public fun <TargetTableUserWrapper : Any, ColumnType1 : ColumnType<*>> foreignKey(
|
public fun <TargetTableUserWrapper : Any, ColumnType1 : ColumnType<*>> foreignKey(
|
||||||
fromColumn: Column<*, ColumnType1, TableUserWrapper>,
|
fromColumn: Column<*, ColumnType1, TableUserWrapper>,
|
||||||
toTable: Table<TargetTableUserWrapper, *>,
|
toTable: Table<TargetTableUserWrapper, *>,
|
||||||
|
Loading…
Reference in New Issue
Block a user