Unified DML creators

This commit is contained in:
Andrew Golovashevich 2024-11-29 22:10:24 +03:00
parent ae1430b696
commit ab93292246
30 changed files with 202 additions and 181 deletions

View File

@ -2,9 +2,9 @@ package ru.landgrafhomyak.serdha.api.v0.ddl
import ru.landgrafhomyak.serdha.api.v0.Expression import ru.landgrafhomyak.serdha.api.v0.Expression
public interface CheckConstraint<TableUserWrapper : Any> { public interface CheckConstraint<TableUserExtension : Any> {
public val name: String public val name: String
public val table: Table<TableUserWrapper, *> public val table: Table<TableUserExtension, *>
public val constraint: Expression<Boolean, ColumnType.BOOLEAN, TableUserWrapper> public val constraint: Expression<Boolean, ColumnType.BOOLEAN, TableUserExtension>
public val affectedColumns: List<Column<*, *, TableUserWrapper>> public val affectedColumns: List<Column<*, *, TableUserExtension>>
} }

View File

@ -1,9 +1,9 @@
package ru.landgrafhomyak.serdha.api.v0.ddl package ru.landgrafhomyak.serdha.api.v0.ddl
public interface Column<RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>, TableUserWrapper : Any> /*: Expression<RuntimeType, DatabaseType>*/ { public interface Column<RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>, TableUserExtension : Any> {
public val name: String public val name: String
public val type: DatabaseType public val type: DatabaseType
public val table: Table<TableUserWrapper, *> public val table: Table<TableUserExtension, *>
} }

View File

@ -2,11 +2,11 @@ package ru.landgrafhomyak.serdha.api.v0.ddl
import kotlin.jvm.JvmStatic import kotlin.jvm.JvmStatic
public interface ForeignKey<ContainerTableUserWrapper : Any, TargetTableUserWrapper : Any> { public interface ForeignKey<ContainerTableUserExtension : Any, TargetTableUserExtension : Any> {
public val fromTable: Table<ContainerTableUserWrapper, *> public val fromTable: Table<ContainerTableUserExtension, *>
public val fromColumns: List<Column<*, *, ContainerTableUserWrapper>> public val fromColumns: List<Column<*, *, ContainerTableUserExtension>>
public val toTable: Table<TargetTableUserWrapper, *> public val toTable: Table<TargetTableUserExtension, *>
public val toColumns: List<Column<*, *, TargetTableUserWrapper>> public val toColumns: List<Column<*, *, TargetTableUserExtension>>
public enum class OnUpdateAction { public enum class OnUpdateAction {
NO_ACTION, NO_ACTION,

View File

@ -1,7 +1,7 @@
package ru.landgrafhomyak.serdha.api.v0.ddl package ru.landgrafhomyak.serdha.api.v0.ddl
public interface Index<OwnerTableUserWrapper : Any> { public interface Index<OwnerTableUserExtension : Any> {
public val name: String public val name: String
public val table: Table<OwnerTableUserWrapper, *> public val table: Table<OwnerTableUserExtension, *>
public val columns: List<Column<*, *, OwnerTableUserWrapper>> public val columns: List<Column<*, *, OwnerTableUserExtension>>
} }

View File

@ -2,8 +2,8 @@ package ru.landgrafhomyak.serdha.api.v0.ddl
import ru.landgrafhomyak.serdha.api.v0.runtime.SynchronizedDatabase import ru.landgrafhomyak.serdha.api.v0.runtime.SynchronizedDatabase
public interface Module<W : Any> { public interface Module<ModuleUserExtension : Any> {
public val wrapper: W public val userExtension: ModuleUserExtension
public val versionKey: String public val versionKey: String

View File

@ -10,44 +10,44 @@ 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 interface CreateTable<TableUserWrapper : Any> { public fun interface CreateTable<TableUserExtension : Any> {
public fun createTable(creator: TableCreator<TableUserWrapper>): TableUserWrapper public fun createTable(creator: TableCreator<TableUserExtension>): TableUserExtension
} }
public fun <TableUserWrapper : Any> createTable(namespace: Namespace, name: String, initializer: CreateTable<TableUserWrapper>): Table<TableUserWrapper, Nothing> public fun <TableUserExtension : Any> createTable(namespace: Namespace, name: String, initializer: CreateTable<TableUserExtension>): Table<TableUserExtension, Nothing>
public fun interface UpdateTable<TableNewUserWrapper : Any, TableOldUserWrapper : Any> { public fun interface UpdateTable<TableNewUserExtension : Any, TableOldUserExtension : Any> {
public fun updateTable(oldTable: Table<TableOldUserWrapper, *>, updater: TableUpdater<TableNewUserWrapper, TableOldUserWrapper>): TableNewUserWrapper public fun updateTable(oldTable: Table<TableOldUserExtension, *>, updater: TableUpdater<TableNewUserExtension, TableOldUserExtension>): TableNewUserExtension
} }
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateTable( public fun <TableNewUserExtension : Any, TableOldUserExtension : Any> updateTable(
oldTable: Table<TableOldUserWrapper, *>, oldTable: Table<TableOldUserExtension, *>,
initializer: UpdateTable<TableNewUserWrapper, TableOldUserWrapper> initializer: UpdateTable<TableNewUserExtension, TableOldUserExtension>
): Table<TableNewUserWrapper, TableOldUserWrapper> ): Table<TableNewUserExtension, TableOldUserExtension>
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> renameTable( public fun <TableNewUserExtension : Any, TableOldUserExtension : Any> renameTable(
table: Table<TableNewUserWrapper, TableOldUserWrapper>, table: Table<TableNewUserExtension, TableOldUserExtension>,
newName: String newName: String
): Table<TableNewUserWrapper, TableOldUserWrapper> ): Table<TableNewUserExtension, TableOldUserExtension>
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> renameTable( public fun <TableNewUserExtension : Any, TableOldUserExtension : Any> renameTable(
table: Table<TableNewUserWrapper, TableOldUserWrapper>, table: Table<TableNewUserExtension, TableOldUserExtension>,
newNamespace: Namespace, newNamespace: Namespace,
newName: String newName: String
): Table<TableNewUserWrapper, TableOldUserWrapper> ): Table<TableNewUserExtension, TableOldUserExtension>
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateAndRenameTable( public fun <TableNewUserExtension : Any, TableOldUserExtension : Any> updateAndRenameTable(
table: Table<TableOldUserWrapper, *>, table: Table<TableOldUserExtension, *>,
newName: String, newName: String,
initializer: UpdateTable<TableNewUserWrapper, TableOldUserWrapper> initializer: UpdateTable<TableNewUserExtension, TableOldUserExtension>
): Table<TableNewUserWrapper, TableOldUserWrapper> ): Table<TableNewUserExtension, TableOldUserExtension>
public fun <TableNewUserWrapper : Any, TableOldUserWrapper : Any> updateAndRenameTable( public fun <TableNewUserExtension : Any, TableOldUserExtension : Any> updateAndRenameTable(
table: Table<TableNewUserWrapper, TableOldUserWrapper>, table: Table<TableNewUserExtension, TableOldUserExtension>,
newNamespace: Namespace, newNamespace: Namespace,
newName: String, newName: String,
initializer: UpdateTable<TableNewUserWrapper, TableOldUserWrapper> initializer: UpdateTable<TableNewUserExtension, TableOldUserExtension>
): Table<TableNewUserWrapper, TableOldUserWrapper> ): Table<TableNewUserExtension, TableOldUserExtension>
public fun interface CreateSelect<QueryUserWrapper : Any> { public fun interface CreateSelect<QueryUserWrapper : Any> {
public fun createSelect(creator: SelectCreator<QueryUserWrapper>): QueryUserWrapper public fun createSelect(creator: SelectCreator<QueryUserWrapper>): QueryUserWrapper
@ -55,24 +55,24 @@ public interface ModuleModifyingRound {
public fun <QueryUserWrapper : Any> createSelect(initializer: CreateSelect<QueryUserWrapper>): Select<QueryUserWrapper> public fun <QueryUserWrapper : Any> createSelect(initializer: CreateSelect<QueryUserWrapper>): Select<QueryUserWrapper>
public fun interface CreateInsert<TableUserWrapper : Any, QueryUserWrapper : Any> { public fun interface CreateInsert<TableUserExtension : Any, QueryUserWrapper : Any> {
public fun createInsert(table: Table<TableUserWrapper, *>, creator: InsertCreator<TableUserWrapper, QueryUserWrapper>): QueryUserWrapper public fun createInsert(table: Table<TableUserExtension, *>, creator: InsertCreator<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
} }
public fun <TableUserWrapper : Any, QueryUserWrapper : Any> createInsert(table: Table<TableUserWrapper, *>, initializer: CreateInsert<TableUserWrapper, QueryUserWrapper>): Insert<QueryUserWrapper> public fun <TableUserExtension : Any, QueryUserWrapper : Any> createInsert(table: Table<TableUserExtension, *>, initializer: CreateInsert<TableUserExtension, QueryUserWrapper>): Insert<QueryUserWrapper>
public fun interface CreateUpdate<TableUserWrapper : Any, QueryUserWrapper : Any> { public fun interface CreateUpdate<TableUserExtension : Any, QueryUserWrapper : Any> {
public fun createUpdate(table: Table<TableUserWrapper, *>, creator: UpdateCreator<TableUserWrapper, QueryUserWrapper>): QueryUserWrapper public fun createUpdate(table: Table<TableUserExtension, *>, creator: UpdateCreator<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
} }
public fun <TableUserWrapper : Any, QueryUserWrapper : Any> createUpdate(table: Table<TableUserWrapper, *>, initializer: CreateUpdate<TableUserWrapper, QueryUserWrapper>): Update<QueryUserWrapper> public fun <TableUserExtension : Any, QueryUserWrapper : Any> createUpdate(table: Table<TableUserExtension, *>, initializer: CreateUpdate<TableUserExtension, QueryUserWrapper>): Update<QueryUserWrapper>
public fun interface CreateDelete<TableUserWrapper : Any, QueryUserWrapper : Any> { public fun interface CreateDelete<TableUserExtension : Any, QueryUserWrapper : Any> {
public fun createDelete(table: Table<TableUserWrapper, *>, creator: DeleteCreator<TableUserWrapper, QueryUserWrapper>): QueryUserWrapper public fun createDelete(table: Table<TableUserExtension, *>, creator: DeleteCreator<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
} }
public fun <TableUserWrapper : Any, QueryUserWrapper : Any> createDelete(table: Table<TableUserWrapper, *>, initializer: CreateDelete<TableUserWrapper, QueryUserWrapper>): Delete<QueryUserWrapper> public fun <TableUserExtension : Any, QueryUserWrapper : Any> createDelete(table: Table<TableUserExtension, *>, initializer: CreateDelete<TableUserExtension, QueryUserWrapper>): Delete<QueryUserWrapper>
public fun <W : Any> substituteModule(rootNs: Namespace, template: ModuleTemplate<W>): Module<W> public fun <ModuleUserExtension : Any> substituteModule(rootNs: Namespace, template: ModuleTemplate<ModuleUserExtension>): Module<ModuleUserExtension>
public fun <W : Any> upgradeModule(oldModule: Module<*>, rootNs: Namespace, template: ModuleTemplate<W>): Module<W> public fun <ModuleUserExtension : Any> upgradeModule(oldModule: Module<*>, rootNs: Namespace, template: ModuleTemplate<ModuleUserExtension>): Module<ModuleUserExtension>
} }

View File

@ -1,10 +1,10 @@
package ru.landgrafhomyak.serdha.api.v0.ddl package ru.landgrafhomyak.serdha.api.v0.ddl
public interface ModuleTemplate<W : Any> { public interface ModuleTemplate<ModuleUserExtension : Any> {
public fun <NW : Any> modify( public fun <NewModuleUserExtension : Any> modify(
newVersionKey: String, newVersionKey: String,
updater: (oldModule: ModuleTemplate<W>, rootNs: Namespace, updater: ModuleModifyingRound) -> NW updater: (oldModule: ModuleTemplate<ModuleUserExtension>, rootNs: Namespace, updater: ModuleModifyingRound) -> NewModuleUserExtension
): ModuleTemplate<NW> ): ModuleTemplate<NewModuleUserExtension>
public val versionKey: String public val versionKey: String
} }

View File

@ -1,3 +1,3 @@
package ru.landgrafhomyak.serdha.api.v0.ddl package ru.landgrafhomyak.serdha.api.v0.ddl
public interface RowId<OwnerTableUserWrapper: Any> public interface RowId<OwnerTableUserExtension: Any>

View File

@ -1,5 +1,5 @@
package ru.landgrafhomyak.serdha.api.v0.ddl package ru.landgrafhomyak.serdha.api.v0.ddl
public interface Table<UserWrapper : Any, PreviousUserWrapper: Any> { public interface Table<UserExtension : Any, PreviousUserExtension: Any> {
public val wrapper: UserWrapper public val userExtension: UserExtension
} }

View File

@ -3,18 +3,18 @@ package ru.landgrafhomyak.serdha.api.v0.ddl
import kotlin.jvm.JvmName import kotlin.jvm.JvmName
import ru.landgrafhomyak.serdha.api.v0.Expression import ru.landgrafhomyak.serdha.api.v0.Expression
public interface TableCreator<TableUserWrapper : Any> { public interface TableCreator<TableUserExtension : Any> {
/** /**
* Offers column of type [D][type] with `NOT NULL` constraint named [name] and runtime type [RuntimeType]. * Offers column of type [D][type] with `NOT NULL` constraint named [name] and runtime type [RuntimeType].
* *
* @return Descriptor of offered column for future operations. * @return Descriptor of offered column for future operations.
*/ */
public fun <RuntimeType : Any, DatabaseType : ColumnType<RuntimeType>> column(name: String, type: DatabaseType): Column<RuntimeType, DatabaseType, TableUserWrapper> public fun <RuntimeType : Any, DatabaseType : ColumnType<RuntimeType>> column(name: String, type: DatabaseType): Column<RuntimeType, DatabaseType, TableUserExtension>
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@JvmName("nullableColumn\$notNull") @JvmName("nullableColumn\$notNull")
@Deprecated("This column can be not-null", replaceWith = ReplaceWith("this.column")) @Deprecated("This column can be not-null", replaceWith = ReplaceWith("this.column"))
public fun <RuntimeType : Any, DatabaseType : ColumnType<RuntimeType>> nullableColumn(name: String, type: DatabaseType): Column<RuntimeType?, DatabaseType, TableUserWrapper> = public fun <RuntimeType : Any, DatabaseType : ColumnType<RuntimeType>> nullableColumn(name: String, type: DatabaseType): Column<RuntimeType?, DatabaseType, TableUserExtension> =
this.nullableColumn<RuntimeType?, DatabaseType>(name, type) this.nullableColumn<RuntimeType?, DatabaseType>(name, type)
/** /**
@ -22,45 +22,45 @@ public interface TableCreator<TableUserWrapper : Any> {
* *
* @return Descriptor of offered column for future operations. * @return Descriptor of offered column for future operations.
*/ */
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, TableUserExtension>
public fun index(name: String, vararg columns: Column<*, *, TableUserWrapper>): Index<TableUserWrapper> public fun index(name: String, vararg columns: Column<*, *, TableUserExtension>): Index<TableUserExtension>
// todo not-null column uniqueness // 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<*, *, TableUserExtension>): UniqueConstraint<TableUserExtension>
public fun check(name: String, constraint: Expression<Boolean, ColumnType.BOOLEAN, TableUserWrapper>): CheckConstraint<TableUserWrapper> public fun check(name: String, constraint: Expression<Boolean, ColumnType.BOOLEAN, TableUserExtension>): CheckConstraint<TableUserExtension>
public fun rowIdColumn(): Column<RowId<TableUserWrapper>, ColumnType<RowId<TableUserWrapper>>, TableUserWrapper> public fun rowIdColumn(): Column<RowId<TableUserExtension>, ColumnType<RowId<TableUserExtension>>, TableUserExtension>
public fun rowIdUniqueConstraint(): UniqueConstraint<TableUserWrapper> public fun rowIdUniqueConstraint(): UniqueConstraint<TableUserExtension>
public fun <TargetTableUserWrapper : Any, ColumnType1 : ColumnType<*>> foreignKey( public fun <TargetTableUserWrapper : Any, ColumnType1 : ColumnType<*>> foreignKey(
fromColumn: Column<*, ColumnType1, TableUserWrapper>, fromColumn: Column<*, ColumnType1, TableUserExtension>,
toTable: Table<TargetTableUserWrapper, *>, toTable: Table<TargetTableUserWrapper, *>,
toColumn: Column<*, ColumnType1, TargetTableUserWrapper>, toColumn: Column<*, ColumnType1, TargetTableUserWrapper>,
onUpdate: ForeignKey.OnUpdateAction, onUpdate: ForeignKey.OnUpdateAction,
onDelete: ForeignKey.OnDeleteAction onDelete: ForeignKey.OnDeleteAction
): ForeignKey<TableUserWrapper, TargetTableUserWrapper> ): ForeignKey<TableUserExtension, TargetTableUserWrapper>
public fun <TargetTableUserWrapper : Any, ColumnType1 : ColumnType<*>, ColumnType2 : ColumnType<*>> foreignKey( public fun <TargetTableUserWrapper : Any, ColumnType1 : ColumnType<*>, ColumnType2 : ColumnType<*>> foreignKey(
fromColumn1: Column<*, ColumnType1, TableUserWrapper>, fromColumn1: Column<*, ColumnType1, TableUserExtension>,
fromColumn2: Column<*, ColumnType2, TableUserWrapper>, fromColumn2: Column<*, ColumnType2, TableUserExtension>,
toTable: Table<TargetTableUserWrapper, *>, toTable: Table<TargetTableUserWrapper, *>,
toColumn1: Column<*, ColumnType1, TargetTableUserWrapper>, toColumn1: Column<*, ColumnType1, TargetTableUserWrapper>,
toColumn2: Column<*, ColumnType2, TargetTableUserWrapper>, toColumn2: Column<*, ColumnType2, TargetTableUserWrapper>,
onUpdate: ForeignKey.OnUpdateAction, onUpdate: ForeignKey.OnUpdateAction,
onDelete: ForeignKey.OnDeleteAction onDelete: ForeignKey.OnDeleteAction
): ForeignKey<TableUserWrapper, TargetTableUserWrapper> ): ForeignKey<TableUserExtension, TargetTableUserWrapper>
public fun <TargetTableUserWrapper : Any, ColumnType1 : ColumnType<*>, ColumnType2 : ColumnType<*>, ColumnType3 : ColumnType<*>> foreignKey( public fun <TargetTableUserWrapper : Any, ColumnType1 : ColumnType<*>, ColumnType2 : ColumnType<*>, ColumnType3 : ColumnType<*>> foreignKey(
fromColumn1: Column<*, ColumnType1, TableUserWrapper>, fromColumn1: Column<*, ColumnType1, TableUserExtension>,
fromColumn2: Column<*, ColumnType2, TableUserWrapper>, fromColumn2: Column<*, ColumnType2, TableUserExtension>,
fromColumn3: Column<*, ColumnType3, TableUserWrapper>, fromColumn3: Column<*, ColumnType3, TableUserExtension>,
toTable: Table<TargetTableUserWrapper, *>, toTable: Table<TargetTableUserWrapper, *>,
toColumn1: Column<*, ColumnType1, TargetTableUserWrapper>, toColumn1: Column<*, ColumnType1, TargetTableUserWrapper>,
toColumn2: Column<*, ColumnType2, TargetTableUserWrapper>, toColumn2: Column<*, ColumnType2, TargetTableUserWrapper>,
toColumn3: Column<*, ColumnType3, TargetTableUserWrapper>, toColumn3: Column<*, ColumnType3, TargetTableUserWrapper>,
onUpdate: ForeignKey.OnUpdateAction, onUpdate: ForeignKey.OnUpdateAction,
onDelete: ForeignKey.OnDeleteAction onDelete: ForeignKey.OnDeleteAction
): ForeignKey<TableUserWrapper, TargetTableUserWrapper> ): ForeignKey<TableUserExtension, TargetTableUserWrapper>
} }

View File

@ -3,28 +3,28 @@ package ru.landgrafhomyak.serdha.api.v0.ddl
import ru.landgrafhomyak.serdha.api.v0.Expression import ru.landgrafhomyak.serdha.api.v0.Expression
public interface TableUpdater<TableNewUserWrapper : Any, TableOldUserWrapper : Any> : TableCreator<TableNewUserWrapper> { public interface TableUpdater<TableNewUserExtension : Any, TableOldUserExtension : Any> : TableCreator<TableNewUserExtension> {
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> keepColumn(c: Column<RuntimeType, DatabaseType, TableOldUserWrapper>): Column<RuntimeType, DatabaseType, TableNewUserWrapper> public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> keepColumn(c: Column<RuntimeType, DatabaseType, TableOldUserExtension>): Column<RuntimeType, DatabaseType, TableNewUserExtension>
public fun <R, D : ColumnType<R & Any>> renameColumn(c: Column<R, D, TableOldUserWrapper>, newName: String): Column<R, D, TableNewUserWrapper> public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> renameColumn(c: Column<RuntimeType, DatabaseType, TableOldUserExtension>, newName: String): Column<RuntimeType, DatabaseType, TableNewUserExtension>
public fun <R, D : ColumnType<R & Any>> mapColumn(c: Column<R, D, TableNewUserWrapper>, newValue: Expression<R, D, TableNewUserWrapper>, where: Expression<Boolean, ColumnType.BOOLEAN, TableNewUserWrapper>?) public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> mapColumn(c: Column<RuntimeType, DatabaseType, TableNewUserExtension>, newValue: Expression<RuntimeType, DatabaseType, TableNewUserExtension>, where: Expression<Boolean, ColumnType.BOOLEAN, TableNewUserExtension>?)
public fun <R, D : ColumnType<R & Any>> mapColumn(c: Column<R, D, TableNewUserWrapper>, newValue: Expression<R, D, TableNewUserWrapper>): Unit = this.mapColumn(c, newValue, null) public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> mapColumn(c: Column<RuntimeType, DatabaseType, TableNewUserExtension>, newValue: Expression<RuntimeType, DatabaseType, TableNewUserExtension>): Unit = this.mapColumn(c, newValue, null)
public fun deleteColumn(c: Column<*, *, TableOldUserWrapper>) public fun deleteColumn(c: Column<*, *, TableOldUserExtension>)
public fun keepIndex(i: Index<TableOldUserWrapper>): Index<TableNewUserWrapper> public fun keepIndex(i: Index<TableOldUserExtension>): Index<TableNewUserExtension>
public fun renameIndex(i: Index<TableOldUserWrapper>, newName: String): Index<TableNewUserWrapper> public fun renameIndex(i: Index<TableOldUserExtension>, newName: String): Index<TableNewUserExtension>
public fun deleteIndex(i: Index<TableOldUserWrapper>) public fun deleteIndex(i: Index<TableOldUserExtension>)
public fun keepCheck(i: CheckConstraint<TableOldUserWrapper>): CheckConstraint<TableNewUserWrapper> public fun keepCheck(i: CheckConstraint<TableOldUserExtension>): CheckConstraint<TableNewUserExtension>
public fun renameCheck(i: CheckConstraint<TableOldUserWrapper>, newName: String): CheckConstraint<TableNewUserWrapper> public fun renameCheck(i: CheckConstraint<TableOldUserExtension>, newName: String): CheckConstraint<TableNewUserExtension>
public fun deleteCheck(i: CheckConstraint<TableOldUserWrapper>) public fun deleteCheck(i: CheckConstraint<TableOldUserExtension>)
public fun keepUnique(i: UniqueConstraint<TableOldUserWrapper>): UniqueConstraint<TableNewUserWrapper> public fun keepUnique(i: UniqueConstraint<TableOldUserExtension>): UniqueConstraint<TableNewUserExtension>
public fun renameUnique(i: UniqueConstraint<TableOldUserWrapper>, newName: String): UniqueConstraint<TableNewUserWrapper> public fun renameUnique(i: UniqueConstraint<TableOldUserExtension>, newName: String): UniqueConstraint<TableNewUserExtension>
public fun deleteUnique(i: UniqueConstraint<TableOldUserWrapper>) public fun deleteUnique(i: UniqueConstraint<TableOldUserExtension>)
public fun <TargetTableOldUserWrapper : Any, TargetTableNewUserWrapper : Any> keepForeignKeyToUpdatedTable(i: ForeignKey<TableOldUserWrapper, TargetTableOldUserWrapper>, updatedTable: Table<TargetTableNewUserWrapper, TargetTableOldUserWrapper>): ForeignKey<TableNewUserWrapper, TargetTableNewUserWrapper> public fun <TargetTableOldUserWrapper : Any, TargetTableNewUserWrapper : Any> keepForeignKeyToUpdatedTable(i: ForeignKey<TableOldUserExtension, TargetTableOldUserWrapper>, updatedTable: Table<TargetTableNewUserWrapper, TargetTableOldUserWrapper>): ForeignKey<TableNewUserExtension, TargetTableNewUserWrapper>
public fun <TargetTableUserWrapper : Any> keepForeignKey(i: ForeignKey<TableOldUserWrapper, TargetTableUserWrapper>): ForeignKey<TableNewUserWrapper, TargetTableUserWrapper> public fun <TargetTableUserWrapper : Any> keepForeignKey(i: ForeignKey<TableOldUserExtension, TargetTableUserWrapper>): ForeignKey<TableNewUserExtension, TargetTableUserWrapper>
public fun <TargetTableOldUserWrapper : Any, TargetTableNewUserWrapper : Any> renameForeignKeyToUpdatedTable(i: ForeignKey<TableOldUserWrapper, TargetTableOldUserWrapper>, updatedTable: Table<TargetTableNewUserWrapper, TargetTableOldUserWrapper>): ForeignKey<TableNewUserWrapper, TargetTableNewUserWrapper> public fun <TargetTableOldUserWrapper : Any, TargetTableNewUserWrapper : Any> renameForeignKeyToUpdatedTable(i: ForeignKey<TableOldUserExtension, TargetTableOldUserWrapper>, updatedTable: Table<TargetTableNewUserWrapper, TargetTableOldUserWrapper>): ForeignKey<TableNewUserExtension, TargetTableNewUserWrapper>
public fun <TargetTableUserWrapper : Any> renameForeignKey(i: ForeignKey<TableOldUserWrapper, TargetTableUserWrapper>): ForeignKey<TableNewUserWrapper, TargetTableUserWrapper> public fun <TargetTableUserWrapper : Any> renameForeignKey(i: ForeignKey<TableOldUserExtension, TargetTableUserWrapper>): ForeignKey<TableNewUserExtension, TargetTableUserWrapper>
public fun deleteForeignKey(i: ForeignKey<TableOldUserWrapper, *>) public fun deleteForeignKey(i: ForeignKey<TableOldUserExtension, *>)
} }

View File

@ -1,7 +1,7 @@
package ru.landgrafhomyak.serdha.api.v0.ddl package ru.landgrafhomyak.serdha.api.v0.ddl
public interface UniqueConstraint<OwnerTableUserWrapper : Any> { public interface UniqueConstraint<OwnerTableUserExtension : Any> {
public val name: String public val name: String
public val table: Table<OwnerTableUserWrapper, *> public val table: Table<OwnerTableUserExtension, *>
public val columns: List<Column<*, *, OwnerTableUserWrapper>> public val columns: List<Column<*, *, OwnerTableUserExtension>>
} }

View File

@ -1,5 +1,5 @@
package ru.landgrafhomyak.serdha.api.v0.dml package ru.landgrafhomyak.serdha.api.v0.dml
public interface Delete<QueryUserWrapper : Any> { public interface Delete<QueryUserExtension : Any> {
public val userWrapper: QueryUserWrapper public val userExtension: QueryUserExtension
} }

View File

@ -1,16 +1,14 @@
package ru.landgrafhomyak.serdha.api.v0.dml package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.Table
public interface DeleteCreator<TargetTableUserWrapper : Any, QueryUserWrapper : Any> { public interface DeleteCreator<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonQueryMethods<QueryUserExtension> {
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> selectColumn(column: Column<RuntimeType, DatabaseType, TargetTableUserWrapper>): SelectedColumn<RuntimeType, DatabaseType, TargetTableUserWrapper, QueryUserWrapper> public val targetTable: SelectedTable<TargetTableUserExtension, QueryUserExtension>
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> param(name: String, type: DatabaseType): InputParam<RuntimeType, DatabaseType, QueryUserWrapper> public fun where(expression: Expression<Boolean, ColumnType.BOOLEAN, QueryUserExtension>)
public fun where(expression: Expression<Boolean, ColumnType.BOOLEAN, QueryUserWrapper>) public fun limit(size: UInt)
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> returning(e: Expression<RuntimeType, DatabaseType, QueryUserWrapper>): Column<RuntimeType, DatabaseType, QueryUserWrapper> public val returning: _CommonQueryMethods._Returning<QueryUserExtension>
} }

View File

@ -3,7 +3,7 @@ package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
public interface InputParam<RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>, OwnerQueryUserWrapper : Any> : Expression<RuntimeType, DatabaseType, OwnerQueryUserWrapper> { public interface InputParam<RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>, OwnerQueryUserExtension : Any> : Expression<RuntimeType, DatabaseType, OwnerQueryUserExtension> {
public val name: String public val name: String
public val userWrapper: OwnerQueryUserWrapper public val userWrapper: OwnerQueryUserExtension
} }

View File

@ -1,5 +1,5 @@
package ru.landgrafhomyak.serdha.api.v0.dml package ru.landgrafhomyak.serdha.api.v0.dml
public interface Insert<UserWrapper : Any> { public interface Insert<UserExtension : Any> {
public val userWrapper: UserWrapper public val userExtension: UserExtension
} }

View File

@ -5,16 +5,22 @@ import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.UniqueConstraint import ru.landgrafhomyak.serdha.api.v0.ddl.UniqueConstraint
public interface InsertCreator<TargetTableUserWrapper : Any, QueryUserWrapper : Any> { public interface InsertCreator<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonQueryMethods<QueryUserExtension> {
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> insertTo(c: Column<RuntimeType, DatabaseType, TargetTableUserWrapper>): InputParam<RuntimeType, DatabaseType, QueryUserWrapper> public val insertedValues: SelectedTable<TargetTableUserExtension, QueryUserExtension>
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> selectColumn(c: Column<RuntimeType, DatabaseType, TargetTableUserWrapper>): SelectedColumn<RuntimeType, DatabaseType, TargetTableUserWrapper, QueryUserWrapper> public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> insert(column: Column<RuntimeType, DatabaseType, TargetTableUserExtension>, expression: Expression<RuntimeType, DatabaseType, QueryUserExtension>)
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> returning(e: Expression<RuntimeType, DatabaseType, QueryUserWrapper>): Column<RuntimeType, DatabaseType, QueryUserWrapper> public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> oldColumnValue(c: Column<RuntimeType, DatabaseType, QueryUserExtension>): Expression<RuntimeType?, DatabaseType, QueryUserExtension>
public interface UpsertCreator<TargetTableUserWrapper : Any, QueryUserWrapper : Any> : UpdateCreator<TargetTableUserWrapper, QueryUserWrapper> { public interface UpsertCreator<TargetTableUserExtension : Any, QueryUserExtension : Any> {
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> overwrittenColumn(c: Column<RuntimeType, DatabaseType, TargetTableUserWrapper>): SelectedColumn<RuntimeType, DatabaseType, TargetTableUserWrapper, QueryUserWrapper> public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> updateColumn(c: Column<RuntimeType, DatabaseType, TargetTableUserExtension>, e: Expression<RuntimeType, DatabaseType, QueryUserExtension>)
} }
public fun onConflict(u: UniqueConstraint<TargetTableUserWrapper>, c: UpsertCreator<TargetTableUserWrapper, QueryUserWrapper>.() -> Unit) public fun onConflictUpdate(u: UniqueConstraint<TargetTableUserExtension>, c: UpsertCreator<TargetTableUserExtension, QueryUserExtension>.() -> Unit)
public fun onConflictThrow(u: UniqueConstraint<TargetTableUserExtension>)
public fun onConflictIgnore(u: UniqueConstraint<TargetTableUserExtension>)
public val returning: _CommonQueryMethods._Returning<QueryUserExtension>
} }

View File

@ -1,5 +1,9 @@
package ru.landgrafhomyak.serdha.api.v0.dml package ru.landgrafhomyak.serdha.api.v0.dml
public interface Select<QueryUserWrapper : Any> { public interface Select<QueryUserExtension : Any> {
public val userWrapper: QueryUserWrapper public val userExtension: QueryUserExtension
public enum class Order {
ASC, DESC
}
} }

View File

@ -5,20 +5,11 @@ import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.Table import ru.landgrafhomyak.serdha.api.v0.ddl.Table
public interface SelectCreator<QueryUserWrapper : Any> { public interface SelectCreator<QueryUserExtension : Any> : _CommonQueryMethods<QueryUserExtension>, _CommonQueryMethods._Returning<QueryUserExtension>{
public fun <SelectedTableUserWrapper : Any> selectTable(t: Table<SelectedTableUserWrapper, *>): SelectedTable<SelectedTableUserWrapper, QueryUserWrapper> public fun where(expression: Expression<Boolean, ColumnType.BOOLEAN, QueryUserExtension>)
public fun <SelectedQueryUserWrapper : Any> selectQuery(t: Select<SelectedQueryUserWrapper>): SelectedTable<SelectedQueryUserWrapper, QueryUserWrapper>
public fun where(expression: Expression<Boolean, ColumnType.BOOLEAN, QueryUserWrapper>) public fun limit(size: UInt)
// default false @Suppress("SpellCheckingInspection")
public var isDistinct: Boolean public fun offsetedLimit(offset: ULong, size: UInt)
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> returnExpression(expression: Expression<RuntimeType, DatabaseType, QueryUserWrapper>): Column<RuntimeType, DatabaseType, QueryUserWrapper>
public fun orderBy(vararg columns: Column<*, *, QueryUserWrapper>)
public fun groupBy(vararg columns: Column<*, *, QueryUserWrapper>)
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> param(name: String, type: DatabaseType): InputParam<RuntimeType, DatabaseType, QueryUserWrapper>
} }

View File

@ -1,8 +0,0 @@
package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
public interface SelectedColumn<RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>, OwnerTableUserWrapper : Any, QueryUserWrapper : Any> : Expression<RuntimeType, DatabaseType, QueryUserWrapper> {
}

View File

@ -1,8 +1,9 @@
package ru.landgrafhomyak.serdha.api.v0.dml package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.Column import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
public interface SelectedTable<SelectedTableUserWrapper : Any, QueryUserWrapper : Any> { public interface SelectedTable<SelectedTableUserExtension : Any, QueryUserExtension : Any> {
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> selectColumn(column: Column<RuntimeType, DatabaseType, SelectedTableUserWrapper>): SelectedColumn<RuntimeType, DatabaseType, SelectedTableUserWrapper, QueryUserWrapper> public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> selectColumn(column: Column<RuntimeType, DatabaseType, SelectedTableUserExtension>): Expression<RuntimeType, DatabaseType, QueryUserExtension>
} }

View File

@ -1,4 +1,5 @@
package ru.landgrafhomyak.serdha.api.v0.dml package ru.landgrafhomyak.serdha.api.v0.dml
public interface Update<QueryUserWrapper : Any> { public interface Update<QueryUserExtension : Any> {
public val userExtension: QueryUserExtension
} }

View File

@ -5,13 +5,19 @@ import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.Table import ru.landgrafhomyak.serdha.api.v0.ddl.Table
public interface UpdateCreator<TargetTableUserWrapper : Any, QueryUserWrapper : Any> { public interface UpdateCreator<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonQueryMethods<QueryUserExtension> {
public fun <SelectedTableUserWrapper : Any> selectTable(t: Table<SelectedTableUserWrapper, *>): SelectedTable<SelectedTableUserWrapper, QueryUserWrapper> public val targetTable: SelectedTable<TargetTableUserExtension, QueryUserExtension>
public fun <SelectedQueryUserWrapper : Any> selectQuery(t: Select<SelectedQueryUserWrapper>): SelectedTable<SelectedQueryUserWrapper, QueryUserWrapper>
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> updateColumn(c: Column<RuntimeType, DatabaseType, TargetTableUserWrapper>, e: Expression<RuntimeType, DatabaseType, QueryUserWrapper>) public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> selectOldColumnValue(c: Column<RuntimeType, DatabaseType, TargetTableUserExtension>): Expression<RuntimeType, DatabaseType, QueryUserExtension>
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> param(name: String, type: DatabaseType): InputParam<RuntimeType, DatabaseType, QueryUserWrapper> public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> updateColumn(c: Column<RuntimeType, DatabaseType, TargetTableUserExtension>, e: Expression<RuntimeType, DatabaseType, QueryUserExtension>)
public fun where(expression: Expression<Boolean, ColumnType.BOOLEAN, QueryUserWrapper>) public fun where(expression: Expression<Boolean, ColumnType.BOOLEAN, QueryUserExtension>)
public fun limit(size: UInt)
@Suppress("SpellCheckingInspection")
public fun offsetedLimit(offset: ULong, size: UInt)
public val returning: _CommonQueryMethods._Returning<QueryUserExtension>
} }

View File

@ -0,0 +1,23 @@
package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.Table
@Suppress("ClassName")
public interface _CommonQueryMethods<QueryUserExtension : Any> {
public fun <SelectedTableUserExtension : Any> selectTable(t: Table<SelectedTableUserExtension, *>): SelectedTable<SelectedTableUserExtension, QueryUserExtension>
public fun <SelectedQueryUserExtension : Any> selectQuery(t: Select<SelectedQueryUserExtension>): SelectedTable<SelectedQueryUserExtension, QueryUserExtension>
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> param(name: String, type: DatabaseType): InputParam<RuntimeType, DatabaseType, QueryUserExtension>
public interface _Returning<QueryUserExtension : Any> {
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType & Any>> returnExpression(expression: Expression<RuntimeType, DatabaseType, QueryUserExtension>): Column<RuntimeType, DatabaseType, QueryUserExtension>
public val isDistinct: Boolean
public fun orderBy(order: Select.Order, vararg columns: Expression<*, *, QueryUserExtension>)
public fun groupBy(vararg columns: Expression<*, *, QueryUserExtension>)
}
}

View File

@ -1,19 +1,18 @@
package ru.landgrafhomyak.serdha.api.v0.runtime package ru.landgrafhomyak.serdha.api.v0.runtime
import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.dml.InputParam import ru.landgrafhomyak.serdha.api.v0.dml.InputParam
public interface ParametersSetter<QueryUserWrapper : Any> { public interface ParametersSetter<QueryUserExtension : Any> {
public operator fun <RuntimeType> set(c: InputParam<RuntimeType, *, QueryUserWrapper>, value: RuntimeType) public operator fun <RuntimeType> set(c: InputParam<RuntimeType, *, QueryUserExtension>, value: RuntimeType)
public operator fun set(c: InputParam<Byte, *, QueryUserWrapper>, value: Byte): Unit = this.set<Byte>(c, value) public operator fun set(c: InputParam<Byte, *, QueryUserExtension>, value: Byte): Unit = this.set<Byte>(c, value)
public operator fun set(c: InputParam<UByte, *, QueryUserWrapper>, value: UByte): Unit = this.set<UByte>(c, value) public operator fun set(c: InputParam<UByte, *, QueryUserExtension>, value: UByte): Unit = this.set<UByte>(c, value)
public operator fun set(c: InputParam<Short, *, QueryUserWrapper>, value: Short): Unit = this.set<Short>(c, value) public operator fun set(c: InputParam<Short, *, QueryUserExtension>, value: Short): Unit = this.set<Short>(c, value)
public operator fun set(c: InputParam<UShort, *, QueryUserWrapper>, value: UShort): Unit = this.set<UShort>(c, value) public operator fun set(c: InputParam<UShort, *, QueryUserExtension>, value: UShort): Unit = this.set<UShort>(c, value)
public operator fun set(c: InputParam<Int, *, QueryUserWrapper>, value: Int): Unit = this.set<Int>(c, value) public operator fun set(c: InputParam<Int, *, QueryUserExtension>, value: Int): Unit = this.set<Int>(c, value)
public operator fun set(c: InputParam<UInt, *, QueryUserWrapper>, value: UInt): Unit = this.set<UInt>(c, value) public operator fun set(c: InputParam<UInt, *, QueryUserExtension>, value: UInt): Unit = this.set<UInt>(c, value)
public operator fun set(c: InputParam<Long, *, QueryUserWrapper>, value: Long): Unit = this.set<Long>(c, value) public operator fun set(c: InputParam<Long, *, QueryUserExtension>, value: Long): Unit = this.set<Long>(c, value)
public operator fun set(c: InputParam<ULong, *, QueryUserWrapper>, value: ULong): Unit = this.set<ULong>(c, value) public operator fun set(c: InputParam<ULong, *, QueryUserExtension>, value: ULong): Unit = this.set<ULong>(c, value)
public operator fun set(c: InputParam<Char, *, QueryUserWrapper>, value: Char): Unit = this.set<Char>(c, value) public operator fun set(c: InputParam<Char, *, QueryUserExtension>, value: Char): Unit = this.set<Char>(c, value)
public operator fun set(c: InputParam<Boolean, *, QueryUserWrapper>, value: Boolean): Unit = this.set<Boolean>(c, value) public operator fun set(c: InputParam<Boolean, *, QueryUserExtension>, value: Boolean): Unit = this.set<Boolean>(c, value)
} }

View File

@ -2,17 +2,17 @@ package ru.landgrafhomyak.serdha.api.v0.runtime
import ru.landgrafhomyak.serdha.api.v0.ddl.Column import ru.landgrafhomyak.serdha.api.v0.ddl.Column
public interface Row<QueryUserWrapper : Any> { public interface Row<QueryUserExtension : Any> {
public operator fun <RuntimeType> get(c: Column<RuntimeType, *, QueryUserWrapper>): RuntimeType public operator fun <RuntimeType> get(c: Column<RuntimeType, *, QueryUserExtension>): RuntimeType
public operator fun get(c: Column<Byte, *, QueryUserWrapper>): Byte = this.get<Byte>(c) public operator fun get(c: Column<Byte, *, QueryUserExtension>): Byte = this.get<Byte>(c)
public operator fun get(c: Column<UByte, *, QueryUserWrapper>): UByte = this.get<UByte>(c) public operator fun get(c: Column<UByte, *, QueryUserExtension>): UByte = this.get<UByte>(c)
public operator fun get(c: Column<Short, *, QueryUserWrapper>): Short = this.get<Short>(c) public operator fun get(c: Column<Short, *, QueryUserExtension>): Short = this.get<Short>(c)
public operator fun get(c: Column<UShort, *, QueryUserWrapper>): UShort = this.get<UShort>(c) public operator fun get(c: Column<UShort, *, QueryUserExtension>): UShort = this.get<UShort>(c)
public operator fun get(c: Column<Int, *, QueryUserWrapper>): Int = this.get<Int>(c) public operator fun get(c: Column<Int, *, QueryUserExtension>): Int = this.get<Int>(c)
public operator fun get(c: Column<UInt, *, QueryUserWrapper>): UInt = this.get<UInt>(c) public operator fun get(c: Column<UInt, *, QueryUserExtension>): UInt = this.get<UInt>(c)
public operator fun get(c: Column<Long, *, QueryUserWrapper>): Long = this.get<Long>(c) public operator fun get(c: Column<Long, *, QueryUserExtension>): Long = this.get<Long>(c)
public operator fun get(c: Column<ULong, *, QueryUserWrapper>): ULong = this.get<ULong>(c) public operator fun get(c: Column<ULong, *, QueryUserExtension>): ULong = this.get<ULong>(c)
public operator fun get(c: Column<Char, *, QueryUserWrapper>): Char = this.get<Char>(c) public operator fun get(c: Column<Char, *, QueryUserExtension>): Char = this.get<Char>(c)
public operator fun get(c: Column<Boolean, *, QueryUserWrapper>): Boolean = this.get<Boolean>(c) public operator fun get(c: Column<Boolean, *, QueryUserExtension>): Boolean = this.get<Boolean>(c)
} }

View File

@ -7,7 +7,7 @@ import ru.landgrafhomyak.serdha.api.v0.dml.Insert
import ru.landgrafhomyak.serdha.api.v0.dml.Select import ru.landgrafhomyak.serdha.api.v0.dml.Select
import ru.landgrafhomyak.serdha.api.v0.dml.Update import ru.landgrafhomyak.serdha.api.v0.dml.Update
public interface SynchronizedDatabase<W : Any> : Module<W> { public interface SynchronizedDatabase<DatabaseUserExtension : Any> : Module<DatabaseUserExtension> {
@Suppress("FunctionName") @Suppress("FunctionName")
@LowLevelApi @LowLevelApi
public suspend fun _startTransaction(): Transaction public suspend fun _startTransaction(): Transaction

View File

@ -6,7 +6,7 @@ import ru.landgrafhomyak.serdha.api.v0.ddl.Namespace
@Suppress("SpellCheckingInspection") @Suppress("SpellCheckingInspection")
public interface UnsynchronizedDatabase { public interface UnsynchronizedDatabase {
public fun <W : Any> createModule(initialVersionKey: String, content: (rootNs: Namespace, updater: ModuleModifyingRound) -> W): ModuleTemplate<W> public fun <ModuleUserExtension : Any> createModule(initialVersionKey: String, content: (rootNs: Namespace, updater: ModuleModifyingRound) -> ModuleUserExtension): ModuleTemplate<ModuleUserExtension>
public suspend fun <W : Any> synchronize(conent: ModuleTemplate<W>): SynchronizedDatabase<W> public suspend fun <ModuleUserExtension : Any> synchronize(conent: ModuleTemplate<ModuleUserExtension>): SynchronizedDatabase<ModuleUserExtension>
} }

View File

@ -4,7 +4,7 @@ import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
@Suppress("ClassName", "FunctionName") @Suppress("ClassName", "FunctionName")
@LowLevelApi @LowLevelApi
public interface _ParametersSetter<QueryUserWrapper : Any, out Result> : ParametersSetter<QueryUserWrapper> { public interface _ParametersSetter<QueryUserExtension : Any, out Result> : ParametersSetter<QueryUserExtension> {
@LowLevelApi @LowLevelApi
public suspend fun _execute(): Result public suspend fun _execute(): Result

View File

@ -4,7 +4,7 @@ import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
@Suppress("ClassName") @Suppress("ClassName")
@LowLevelApi @LowLevelApi
public interface _ResultSet<QueryUserWrapper : Any> : Row<QueryUserWrapper> { public interface _ResultSet<QueryUserExtension : Any> : Row<QueryUserExtension> {
@Suppress("FunctionName") @Suppress("FunctionName")
@LowLevelApi @LowLevelApi
public suspend fun _next(): Boolean public suspend fun _next(): Boolean