Join types & improvements in creating queries
This commit is contained in:
parent
5bc1f1dfca
commit
beea261325
@ -1,7 +1,7 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.module
|
package ru.landgrafhomyak.serdha.api.v0.module
|
||||||
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
||||||
import ru.landgrafhomyak.serdha.api.v0.queries.CreateQueryScope
|
import ru.landgrafhomyak.serdha.api.v0.queries.QueryCreator
|
||||||
import ru.landgrafhomyak.serdha.api.v0.runtime.SynchronizedDatabase
|
import ru.landgrafhomyak.serdha.api.v0.runtime.SynchronizedDatabase
|
||||||
import ru.landgrafhomyak.serdha.api.v0.runtime.Transaction
|
import ru.landgrafhomyak.serdha.api.v0.runtime.Transaction
|
||||||
import ru.landgrafhomyak.serdha.api.v0.table.CreateTableScope
|
import ru.landgrafhomyak.serdha.api.v0.table.CreateTableScope
|
||||||
@ -80,11 +80,15 @@ public interface CreateModuleScope {
|
|||||||
*/
|
*/
|
||||||
public fun <TableUserExtension : Any> createTransactionScopeTemporaryTable(namespace: Namespace, name: String, initializer: TableCreator<TableUserExtension>): Table<TableUserExtension, Nothing>
|
public fun <TableUserExtension : Any> createTransactionScopeTemporaryTable(namespace: Namespace, name: String, initializer: TableCreator<TableUserExtension>): Table<TableUserExtension, Nothing>
|
||||||
|
|
||||||
public val queries: CreateQueryScope
|
public val queries: QueryCreator.Scope
|
||||||
|
|
||||||
public val temporarySubqueries: CreateQueryScope
|
public val temporarySubqueries: QueryCreator.Scope
|
||||||
|
|
||||||
public val moduleConfiguringTemporaryQueries: CreateQueryScope
|
public val moduleConfiguringTemporaryQueries: QueryCreator.Scope
|
||||||
|
|
||||||
|
public fun <qUE : Any> createQuery(creator: QueryCreator<qUE>): qUE
|
||||||
|
|
||||||
|
public fun <qUE : Any> createModuleConfiguringTemporaryQuery(creator: QueryCreator<qUE>): qUE
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replaces [specified namespace][rootNs] with schema provided by [template].
|
* Replaces [specified namespace][rootNs] with schema provided by [template].
|
||||||
|
@ -1,22 +0,0 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.queries
|
|
||||||
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.misc._Selectable
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
|
||||||
|
|
||||||
public interface CreateQueryScope {
|
|
||||||
public fun <qUE : Any, tUE : Any> deleteSingleRow(table: Table<tUE, *>, creator: DeleteQuery.SingleRow.Creator<qUE, tUE>): DeleteQuery.SingleRow<qUE>
|
|
||||||
public fun <qUE : Any, tUE : Any, sUE : Any> deleteFromSubquery(table: Table<tUE, *>, selector: _Selectable<sUE>, creator: DeleteQuery.FromSubquery.Creator<qUE, tUE, sUE>): DeleteQuery.FromSubquery<qUE>
|
|
||||||
public fun <qUE : Any, tUE : Any> deleteMultipleRows(table: Table<tUE, *>, creator: DeleteQuery.MultipleRows.Creator<qUE, tUE>): DeleteQuery.MultipleRows<qUE>
|
|
||||||
|
|
||||||
public fun <qUE : Any, tUE : Any> insertSingleRow(table: Table<tUE, *>, creator: InsertQuery.SingleRow.Creator<qUE, tUE>): InsertQuery.SingleRow<qUE>
|
|
||||||
public fun <qUE : Any, tUE : Any, sUE : Any> insertFromSubquery(table: Table<tUE, *>, selector: _Selectable<sUE>, creator: InsertQuery.FromSubquery.Creator<qUE, tUE, sUE>): InsertQuery.FromSubquery<qUE>
|
|
||||||
public fun <qUE : Any, tUE : Any> insertMultipleRows(table: Table<tUE, *>, creator: InsertQuery.MultipleRows.Creator<qUE, tUE>): InsertQuery.MultipleRows<qUE>
|
|
||||||
|
|
||||||
public fun <qUE : Any, tUE : Any> select(table: _Selectable<tUE>, creator: SelectQuery.FromSubquery.Creator<qUE, tUE>): SelectQuery.FromSubquery<qUE>
|
|
||||||
public fun <qUE : Any, lUE : Any, rUE : Any> selectWithJoin(left: _Selectable<lUE>, right: _Selectable<rUE>, creator: SelectQuery.WithJoin.Creator<qUE, lUE, rUE>): SelectQuery.WithJoin<qUE>
|
|
||||||
|
|
||||||
public fun <qUE : Any, tUE : Any> updateSingleRow(table: Table<tUE, *>, creator: UpdateQuery.SingleRow.Creator<qUE, tUE>): UpdateQuery.SingleRow<qUE>
|
|
||||||
public fun <qUE : Any, tUE : Any, sUE : Any> updateFromSubquery(table: Table<tUE, *>, selector: _Selectable<sUE>, creator: UpdateQuery.FromSubquery.Creator<qUE, tUE, sUE>): UpdateQuery.FromSubquery<qUE>
|
|
||||||
public fun <qUE : Any, tUE : Any> updateMultipleRows(table: Table<tUE, *>, creator: UpdateQuery.MultipleRows.Creator<qUE, tUE>): UpdateQuery.MultipleRows<qUE>
|
|
||||||
|
|
||||||
}
|
|
@ -3,6 +3,7 @@ package ru.landgrafhomyak.serdha.api.v0.queries
|
|||||||
import ru.landgrafhomyak.serdha.api.v0.misc.Column
|
import ru.landgrafhomyak.serdha.api.v0.misc.Column
|
||||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||||
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.misc._Selectable
|
||||||
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
||||||
import ru.landgrafhomyak.serdha.api.v0.table.RowId
|
import ru.landgrafhomyak.serdha.api.v0.table.RowId
|
||||||
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
||||||
@ -10,6 +11,8 @@ import ru.landgrafhomyak.serdha.api.v0.table.Table
|
|||||||
public interface DeleteQuery<qUE : Any> : _Query<qUE> {
|
public interface DeleteQuery<qUE : Any> : _Query<qUE> {
|
||||||
public interface SingleRow<qUE : Any> : DeleteQuery<qUE>, _Query.Params2Table<qUE> {
|
public interface SingleRow<qUE : Any> : DeleteQuery<qUE>, _Query.Params2Table<qUE> {
|
||||||
public interface Creator<qUE : Any, ttUE : Any> {
|
public interface Creator<qUE : Any, ttUE : Any> {
|
||||||
|
public val targetTable: Table<ttUE, *>
|
||||||
|
|
||||||
public fun createDeleteSingleRowWithReturning(creator: Scope<qUE, ttUE>): qUE
|
public fun createDeleteSingleRowWithReturning(creator: Scope<qUE, ttUE>): qUE
|
||||||
|
|
||||||
public interface Scope<qUE : Any, ttUE : Any> {
|
public interface Scope<qUE : Any, ttUE : Any> {
|
||||||
@ -32,6 +35,9 @@ public interface DeleteQuery<qUE : Any> : _Query<qUE> {
|
|||||||
|
|
||||||
public interface FromSubquery<qUE : Any> : DeleteQuery<qUE>, _Query.Params2Table<qUE> {
|
public interface FromSubquery<qUE : Any> : DeleteQuery<qUE>, _Query.Params2Table<qUE> {
|
||||||
public interface Creator<qUE : Any, ttUE : Any, sUE : Any> {
|
public interface Creator<qUE : Any, ttUE : Any, sUE : Any> {
|
||||||
|
public val targetTable: Table<ttUE, *>
|
||||||
|
public val selector: _Selectable<sUE>
|
||||||
|
|
||||||
public fun createDeleteFromSubqueryWithReturning(creator: Scope<qUE, ttUE, sUE>): qUE
|
public fun createDeleteFromSubqueryWithReturning(creator: Scope<qUE, ttUE, sUE>): qUE
|
||||||
|
|
||||||
public interface Scope<qUE : Any, ttUE : Any, sUE : Any> {
|
public interface Scope<qUE : Any, ttUE : Any, sUE : Any> {
|
||||||
@ -56,8 +62,10 @@ public interface DeleteQuery<qUE : Any> : _Query<qUE> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public interface MultipleRows<qUE : Any> : DeleteQuery<qUE>, _Query.Table2Void<qUE> {
|
public interface MultipleRows<qUE : Any> : DeleteQuery<qUE>, _Query.Table2Void<qUE> {
|
||||||
public interface Creator<qUE : Any, tUE : Any> {
|
public interface Creator<qUE : Any, ttUE : Any> {
|
||||||
public fun createMultipleRows(creator: Scope<qUE, tUE>): qUE
|
public val targetTable: Table<ttUE, *>
|
||||||
|
|
||||||
|
public fun createMultipleRows(creator: Scope<qUE, ttUE>): qUE
|
||||||
|
|
||||||
public interface Scope<qUE : Any, ttUE : Any> {
|
public interface Scope<qUE : Any, ttUE : Any> {
|
||||||
public val tt: Table<ttUE, *>
|
public val tt: Table<ttUE, *>
|
||||||
|
@ -4,6 +4,7 @@ import ru.landgrafhomyak.serdha.api.v0.misc.Column
|
|||||||
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
||||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||||
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.misc._Selectable
|
||||||
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
||||||
import ru.landgrafhomyak.serdha.api.v0.table.UniqueIndex
|
import ru.landgrafhomyak.serdha.api.v0.table.UniqueIndex
|
||||||
|
|
||||||
@ -28,6 +29,8 @@ public interface InsertQuery<qUE : Any> : _Query<qUE> {
|
|||||||
|
|
||||||
public interface SingleRow<qUE : Any> : InsertQuery<qUE>, _Query.Params2Table<qUE> {
|
public interface SingleRow<qUE : Any> : InsertQuery<qUE>, _Query.Params2Table<qUE> {
|
||||||
public interface Creator<qUE : Any, ttUE : Any> {
|
public interface Creator<qUE : Any, ttUE : Any> {
|
||||||
|
public val targetTable: Table<ttUE, *>
|
||||||
|
|
||||||
public fun createInsertSingleRowWithReturning(creator: Scope<qUE, ttUE>): qUE
|
public fun createInsertSingleRowWithReturning(creator: Scope<qUE, ttUE>): qUE
|
||||||
|
|
||||||
public interface Scope<qUE : Any, ttUE : Any> : _CommonInsertCreatorScope<qUE, ttUE> {
|
public interface Scope<qUE : Any, ttUE : Any> : _CommonInsertCreatorScope<qUE, ttUE> {
|
||||||
@ -48,6 +51,9 @@ public interface InsertQuery<qUE : Any> : _Query<qUE> {
|
|||||||
|
|
||||||
public interface FromSubquery<qUE : Any> : InsertQuery<qUE>, _Query.Params2Table<qUE> {
|
public interface FromSubquery<qUE : Any> : InsertQuery<qUE>, _Query.Params2Table<qUE> {
|
||||||
public interface Creator<qUE : Any, ttUE : Any, sUE : Any> {
|
public interface Creator<qUE : Any, ttUE : Any, sUE : Any> {
|
||||||
|
public val targetTable: Table<ttUE, *>
|
||||||
|
public val selector: _Selectable<sUE>
|
||||||
|
|
||||||
public fun createInsertSingleRowWithReturning(creator: Scope<qUE, ttUE, sUE>): qUE
|
public fun createInsertSingleRowWithReturning(creator: Scope<qUE, ttUE, sUE>): qUE
|
||||||
|
|
||||||
public interface Scope<qUE : Any, ttUE : Any, sUE : Any> : _CommonInsertCreatorScope<qUE, ttUE> {
|
public interface Scope<qUE : Any, ttUE : Any, sUE : Any> : _CommonInsertCreatorScope<qUE, ttUE> {
|
||||||
@ -72,6 +78,7 @@ public interface InsertQuery<qUE : Any> : _Query<qUE> {
|
|||||||
|
|
||||||
public interface MultipleRows<qUE : Any> : InsertQuery<qUE>, _Query.Table2Void<qUE> {
|
public interface MultipleRows<qUE : Any> : InsertQuery<qUE>, _Query.Table2Void<qUE> {
|
||||||
public interface Creator<qUE : Any, ttUE : Any> {
|
public interface Creator<qUE : Any, ttUE : Any> {
|
||||||
|
public val targetTable: Table<ttUE, *>
|
||||||
public fun createInsertMultipleRows(creator: Scope<qUE, ttUE>): qUE
|
public fun createInsertMultipleRows(creator: Scope<qUE, ttUE>): qUE
|
||||||
|
|
||||||
public interface Scope<qUE : Any, ttUE : Any> : _CommonInsertCreatorScope<qUE, ttUE> {
|
public interface Scope<qUE : Any, ttUE : Any> : _CommonInsertCreatorScope<qUE, ttUE> {
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package ru.landgrafhomyak.serdha.api.v0.queries
|
||||||
|
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.misc._Selectable
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
||||||
|
|
||||||
|
public interface QueryCreator<qUE : Any> {
|
||||||
|
public fun createQuery(internalQueries: Scope, outQueries: Scope): qUE
|
||||||
|
|
||||||
|
public interface Scope {
|
||||||
|
public fun <qUE : Any, tUE : Any> deleteSingleRow(table: Table<tUE, *>, creator: DeleteQuery.SingleRow.Creator<qUE, tUE>): DeleteQuery.SingleRow<qUE>
|
||||||
|
public fun <qUE : Any, tUE : Any, sUE : Any> deleteFromSubquery(table: Table<tUE, *>, selector: _Selectable<sUE>, creator: DeleteQuery.FromSubquery.Creator<qUE, tUE, sUE>): DeleteQuery.FromSubquery<qUE>
|
||||||
|
public fun <qUE : Any, tUE : Any> deleteMultipleRows(table: Table<tUE, *>, creator: DeleteQuery.MultipleRows.Creator<qUE, tUE>): DeleteQuery.MultipleRows<qUE>
|
||||||
|
|
||||||
|
public fun <qUE : Any, tUE : Any> insertSingleRow(table: Table<tUE, *>, creator: InsertQuery.SingleRow.Creator<qUE, tUE>): InsertQuery.SingleRow<qUE>
|
||||||
|
public fun <qUE : Any, tUE : Any, sUE : Any> insertFromSubquery(table: Table<tUE, *>, selector: _Selectable<sUE>, creator: InsertQuery.FromSubquery.Creator<qUE, tUE, sUE>): InsertQuery.FromSubquery<qUE>
|
||||||
|
public fun <qUE : Any, tUE : Any> insertMultipleRows(table: Table<tUE, *>, creator: InsertQuery.MultipleRows.Creator<qUE, tUE>): InsertQuery.MultipleRows<qUE>
|
||||||
|
|
||||||
|
public fun <qUE : Any, tUE : Any> select(table: _Selectable<tUE>, creator: SelectQuery.FromTable.Creator<qUE, tUE>): SelectQuery.FromTable<qUE>
|
||||||
|
public fun <qUE : Any, lUE : Any, rUE : Any> selectWithJoin(left: _Selectable<lUE>, right: _Selectable<rUE>, creator: SelectQuery.WithJoin.Creator<qUE, lUE, rUE>): SelectQuery.WithJoin<qUE>
|
||||||
|
|
||||||
|
public fun <qUE : Any, tUE : Any> updateSingleRow(table: Table<tUE, *>, creator: UpdateQuery.SingleRow.Creator<qUE, tUE>): UpdateQuery.SingleRow<qUE>
|
||||||
|
public fun <qUE : Any, tUE : Any, sUE : Any> updateFromSubquery(table: Table<tUE, *>, selector: _Selectable<sUE>, creator: UpdateQuery.FromSubquery.Creator<qUE, tUE, sUE>): UpdateQuery.FromSubquery<qUE>
|
||||||
|
public fun <qUE : Any, tUE : Any> updateMultipleRows(table: Table<tUE, *>, creator: UpdateQuery.MultipleRows.Creator<qUE, tUE>): UpdateQuery.MultipleRows<qUE>
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@ import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
|||||||
import ru.landgrafhomyak.serdha.api.v0.misc.Expression
|
import ru.landgrafhomyak.serdha.api.v0.misc.Expression
|
||||||
import ru.landgrafhomyak.serdha.api.v0.misc.FiltersScope
|
import ru.landgrafhomyak.serdha.api.v0.misc.FiltersScope
|
||||||
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.misc._Selectable
|
||||||
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
||||||
|
|
||||||
public interface SelectQuery<qUE : Any> : _Query<qUE> {
|
public interface SelectQuery<qUE : Any> : _Query<qUE> {
|
||||||
@ -14,6 +15,19 @@ public interface SelectQuery<qUE : Any> : _Query<qUE> {
|
|||||||
ASC, DESC
|
ASC, DESC
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class JoinType(
|
||||||
|
public val leftNull: LeftNull,
|
||||||
|
public val join: Join
|
||||||
|
) {
|
||||||
|
public enum class LeftNull {
|
||||||
|
AS_ID, SKIP, JOIN_TO_NULL
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum class Join {
|
||||||
|
LEFT_TO_FIRST_RIGHT, LEFT_FOR_EACH_RIGHT, LEFT_FOR_EACH_RIGHT_OR_NULL,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Suppress("ClassName")
|
@Suppress("ClassName")
|
||||||
public interface _CommonSelectCreatorScope<qUE : Any> {
|
public interface _CommonSelectCreatorScope<qUE : Any> {
|
||||||
public val types: DatabaseType.Provider
|
public val types: DatabaseType.Provider
|
||||||
@ -39,6 +53,12 @@ public interface SelectQuery<qUE : Any> : _Query<qUE> {
|
|||||||
|
|
||||||
public interface WithJoin<qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> {
|
public interface WithJoin<qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> {
|
||||||
public interface Creator<qUE : Any, lsqUE : Any, rsqUE : Any> : _CommonSelectCreatorScope<qUE> {
|
public interface Creator<qUE : Any, lsqUE : Any, rsqUE : Any> : _CommonSelectCreatorScope<qUE> {
|
||||||
|
public val left: _Selectable<lsqUE>
|
||||||
|
public val right: _Selectable<rsqUE>
|
||||||
|
public val joinType: JoinType
|
||||||
|
public val referenceColumn: Column<*, *, lsqUE>
|
||||||
|
public val targetColumn: Column<*, *, rsqUE>
|
||||||
|
|
||||||
public fun createSelectWithJoin(creator: Scope<qUE, lsqUE, rsqUE>): qUE
|
public fun createSelectWithJoin(creator: Scope<qUE, lsqUE, rsqUE>): qUE
|
||||||
|
|
||||||
public interface Scope<qUE : Any, lsqUE : Any, rsqUE : Any> {
|
public interface Scope<qUE : Any, lsqUE : Any, rsqUE : Any> {
|
||||||
@ -50,17 +70,19 @@ public interface SelectQuery<qUE : Any> : _Query<qUE> {
|
|||||||
|
|
||||||
public fun <RT, DT : DatabaseType<RT>> selectColumnFromLeft(column: Column<RT, DT, lsqUE>): IntermediateColumn<RT, DT, qUE>
|
public fun <RT, DT : DatabaseType<RT>> selectColumnFromLeft(column: Column<RT, DT, lsqUE>): IntermediateColumn<RT, DT, qUE>
|
||||||
public fun <RT, DT : DatabaseType<RT>> selectColumnFromRight(column: Column<RT, DT, rsqUE>): IntermediateColumn<RT, DT, qUE>
|
public fun <RT, DT : DatabaseType<RT>> selectColumnFromRight(column: Column<RT, DT, rsqUE>): IntermediateColumn<RT, DT, qUE>
|
||||||
|
public fun <RT : Any, DT : DatabaseType<RT>> selectColumnFromRightAsNullable(column: Column<RT, DT, rsqUE>): IntermediateColumn<RT?, DatabaseType.Nullable<RT, DT>, qUE>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface FromSubquery<qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> {
|
public interface FromTable<qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> {
|
||||||
public interface Creator<qUE : Any, tUE : Any> {
|
public interface Creator<qUE : Any, tUE : Any> {
|
||||||
public val tUExt: tUE
|
public val table: _Selectable<tUE>
|
||||||
|
|
||||||
public fun createSelect(creator: Scope<qUE, tUE>): qUE
|
public fun createSelect(creator: Scope<qUE, tUE>): qUE
|
||||||
|
|
||||||
public interface Scope<qUE : Any, tUE : Any> : _CommonSelectCreatorScope<qUE> {
|
public interface Scope<qUE : Any, tUE : Any> : _CommonSelectCreatorScope<qUE> {
|
||||||
|
public val tUExt: tUE
|
||||||
public val subqueryParams: InputRow.WithRedirect<tUE, qUE>
|
public val subqueryParams: InputRow.WithRedirect<tUE, qUE>
|
||||||
|
|
||||||
public fun <RT, DT : DatabaseType<RT>> selectColumnFromSubquery(param: Column<RT, DT, tUE>): IntermediateColumn<RT, DT, qUE>
|
public fun <RT, DT : DatabaseType<RT>> selectColumnFromSubquery(param: Column<RT, DT, tUE>): IntermediateColumn<RT, DT, qUE>
|
||||||
|
@ -4,12 +4,14 @@ import ru.landgrafhomyak.serdha.api.v0.misc.Column
|
|||||||
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
||||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||||
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.misc._Selectable
|
||||||
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
||||||
|
|
||||||
public interface UpdateQuery<qUE : Any> : _Query<qUE> {
|
public interface UpdateQuery<qUE : Any> : _Query<qUE> {
|
||||||
public interface SingleRow<qUE : Any> : UpdateQuery<qUE>, _Query.Params2Table<qUE> {
|
public interface SingleRow<qUE : Any> : UpdateQuery<qUE>, _Query.Params2Table<qUE> {
|
||||||
public interface Creator<qUE : Any, ttIE : Any> {
|
public interface Creator<qUE : Any, ttUE : Any> {
|
||||||
public fun createUpdateSingleWithReturning(table: Table<ttIE, *>, creator: Scope<qUE, ttIE>): qUE
|
public val targetTable: Table<ttUE, *>
|
||||||
|
public fun createUpdateSingleWithReturning(table: Table<ttUE, *>, creator: Scope<qUE, ttUE>): qUE
|
||||||
|
|
||||||
public interface Scope<qUE : Any, ttUE : Any> {
|
public interface Scope<qUE : Any, ttUE : Any> {
|
||||||
public val tt: Table<ttUE, *>
|
public val tt: Table<ttUE, *>
|
||||||
@ -35,6 +37,9 @@ public interface UpdateQuery<qUE : Any> : _Query<qUE> {
|
|||||||
|
|
||||||
public interface FromSubquery<qUE : Any> : UpdateQuery<qUE>, _Query.Params2Table<qUE> {
|
public interface FromSubquery<qUE : Any> : UpdateQuery<qUE>, _Query.Params2Table<qUE> {
|
||||||
public interface Creator<qUE : Any, ttUE : Any, sUE : Any> {
|
public interface Creator<qUE : Any, ttUE : Any, sUE : Any> {
|
||||||
|
public val targetTable: Table<ttUE, *>
|
||||||
|
public val selector: _Selectable<sUE>
|
||||||
|
|
||||||
public fun createUpdateFromSubqueryWithReturning(creator: Scope<qUE, ttUE, sUE>): qUE
|
public fun createUpdateFromSubqueryWithReturning(creator: Scope<qUE, ttUE, sUE>): qUE
|
||||||
|
|
||||||
public interface Scope<qUE : Any, ttUE : Any, sUE : Any> {
|
public interface Scope<qUE : Any, ttUE : Any, sUE : Any> {
|
||||||
@ -65,6 +70,7 @@ public interface UpdateQuery<qUE : Any> : _Query<qUE> {
|
|||||||
|
|
||||||
public interface MultipleRows<qUE : Any> : UpdateQuery<qUE>, _Query.Table2Void<qUE> {
|
public interface MultipleRows<qUE : Any> : UpdateQuery<qUE>, _Query.Table2Void<qUE> {
|
||||||
public interface Creator<qUE : Any, ttUE : Any> {
|
public interface Creator<qUE : Any, ttUE : Any> {
|
||||||
|
public val targetTable: Table<ttUE, *>
|
||||||
public fun createUpdateMultipleRows(creator: Scope<qUE, ttUE>): qUE
|
public fun createUpdateMultipleRows(creator: Scope<qUE, ttUE>): qUE
|
||||||
|
|
||||||
public interface Scope<qUE : Any, ttUE : Any> {
|
public interface Scope<qUE : Any, ttUE : Any> {
|
||||||
|
Loading…
Reference in New Issue
Block a user