Renaming 'InsertFromQuery' to 'Copy' and splitting from 'InsertParams'->'Insert'
This commit is contained in:
parent
ed132ad276
commit
d55cc47415
@ -1,9 +1,11 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.ddl.module
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CopyQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CreateCopyQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CreateInsertQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.DeleteQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CreateInsertQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.UpdateQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.SynchronizedDatabase
|
||||
@ -139,9 +141,9 @@ public interface CreateModuleScope {
|
||||
* @param TableUserExtension User's type with descriptors related to table to which values will be inserted.
|
||||
* @param QueryUserWrapper User's type with descriptors related to query.
|
||||
*
|
||||
* @see CreateModuleScope.createInsertParamsQuery
|
||||
* @see CreateModuleScope.createInsertQuery
|
||||
*/
|
||||
public interface InsertParamsQueryCreator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||
public interface InsertQueryCreator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||
/**
|
||||
* Scope method that uses [creator] to create a query.
|
||||
*
|
||||
@ -149,9 +151,9 @@ public interface CreateModuleScope {
|
||||
* @param creator Object with descriptor providers and factories.
|
||||
* @return User's object with query-related descriptors for future access.
|
||||
*
|
||||
* @see CreateModuleScope.createInsertParamsQuery
|
||||
* @see CreateModuleScope.createInsertQuery
|
||||
*/
|
||||
public fun createInsert(table: Table<TableUserExtension, *>, creator: CreateInsertQueryScope.InsertParams<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||
public fun createInsert(table: Table<TableUserExtension, *>, creator: CreateInsertQueryScope<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||
}
|
||||
|
||||
/**
|
||||
@ -164,13 +166,13 @@ public interface CreateModuleScope {
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createTemporaryInsertParamsQuery
|
||||
* @see CreateModuleScope.createTemporaryInsertQuery
|
||||
*/
|
||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createInsertParamsQuery(table: Table<TableUserExtension, *>, initializer: InsertParamsQueryCreator<TableUserExtension, QueryUserWrapper>): InsertQuery.InsertParams<QueryUserWrapper>
|
||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createInsertQuery(table: Table<TableUserExtension, *>, initializer: InsertQueryCreator<TableUserExtension, QueryUserWrapper>): InsertQuery<QueryUserWrapper>
|
||||
|
||||
/**
|
||||
* Creates 'INSERT ... VALUES' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||
* Using this function instead of [CreateModuleScope.createInsertParamsQuery] may help the driver to optimize caches and runtime indexes.
|
||||
* Using this function instead of [CreateModuleScope.createInsertQuery] may help the driver to optimize caches and runtime indexes.
|
||||
*
|
||||
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed.
|
||||
*
|
||||
@ -179,9 +181,9 @@ public interface CreateModuleScope {
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createInsertParamsQuery
|
||||
* @see CreateModuleScope.createInsertQuery
|
||||
*/
|
||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryInsertParamsQuery(table: Table<TableUserExtension, *>, initializer: InsertParamsQueryCreator<TableUserExtension, QueryUserWrapper>): InsertQuery.InsertParams<QueryUserWrapper>
|
||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryInsertQuery(table: Table<TableUserExtension, *>, initializer: InsertQueryCreator<TableUserExtension, QueryUserWrapper>): InsertQuery<QueryUserWrapper>
|
||||
|
||||
/**
|
||||
* Functional interface for creating 'INSERT ... FROM' query.
|
||||
@ -191,9 +193,9 @@ public interface CreateModuleScope {
|
||||
* @param TableUserExtension User's type with descriptors related to table to which values will be inserted.
|
||||
* @param QueryUserWrapper User's type with descriptors related to query.
|
||||
*
|
||||
* @see CreateModuleScope.createInsertFromQueryQuery
|
||||
* @see CreateModuleScope.createCopyQuery
|
||||
*/
|
||||
public interface InsertFromQueryQueryCreator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||
public interface CopyQueryCreator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||
/**
|
||||
* Scope method that uses [creator] to create a query.
|
||||
*
|
||||
@ -201,9 +203,9 @@ public interface CreateModuleScope {
|
||||
* @param creator Object with descriptor providers and factories.
|
||||
* @return User's object with query-related descriptors for future access.
|
||||
*
|
||||
* @see CreateModuleScope.createInsertFromQueryQuery
|
||||
* @see CreateModuleScope.createCopyQuery
|
||||
*/
|
||||
public fun createInsert(table: Table<TableUserExtension, *>, creator: CreateInsertQueryScope.InsertFromQuery<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||
public fun createCopy(table: Table<TableUserExtension, *>, creator: CreateCopyQueryScope<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||
}
|
||||
|
||||
/**
|
||||
@ -215,13 +217,13 @@ public interface CreateModuleScope {
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createTemporaryInsertFromQueryQuery
|
||||
* @see CreateModuleScope.createTemporaryCopyQuery
|
||||
*/
|
||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createInsertFromQueryQuery(table: Table<TableUserExtension, *>, initializer: InsertFromQueryQueryCreator<TableUserExtension, QueryUserWrapper>): InsertQuery.InsertFromQuery<QueryUserWrapper>
|
||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createCopyQuery(table: Table<TableUserExtension, *>, initializer: CopyQueryCreator<TableUserExtension, QueryUserWrapper>): CopyQuery<QueryUserWrapper>
|
||||
|
||||
/**
|
||||
* Creates 'INSERT ... FROM' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||
* Using this function instead of [CreateModuleScope.createInsertFromQueryQuery] may help the driver to optimize caches and runtime indexes.
|
||||
* Using this function instead of [CreateModuleScope.createCopyQuery] may help the driver to optimize caches and runtime indexes.
|
||||
*
|
||||
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed.
|
||||
*
|
||||
@ -229,9 +231,9 @@ public interface CreateModuleScope {
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createInsertFromQueryQuery
|
||||
* @see CreateModuleScope.createCopyQuery
|
||||
*/
|
||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryInsertFromQueryQuery(table: Table<TableUserExtension, *>, initializer: InsertFromQueryQueryCreator<TableUserExtension, QueryUserWrapper>): InsertQuery.InsertFromQuery<QueryUserWrapper>
|
||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryCopyQuery(table: Table<TableUserExtension, *>, initializer: CopyQueryCreator<TableUserExtension, QueryUserWrapper>): CopyQuery<QueryUserWrapper>
|
||||
|
||||
/**
|
||||
* Functional interface for creating 'UPDATE' query.
|
||||
|
@ -0,0 +1,5 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.dml
|
||||
|
||||
public interface CopyQuery<QueryUserExtension : Any> {
|
||||
public val userExtension: QueryUserExtension
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.dml
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.Expression
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Column
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
|
||||
|
||||
public interface CreateCopyQueryScope<TargetTableUserExtension : Any, QueryUserExtension : Any> :_CreateInsertOrCopyQueryScope<TargetTableUserExtension, QueryUserExtension> {
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> insert(column: Column<RuntimeType, DatabaseType, TargetTableUserExtension>, expression: Expression<RuntimeType, DatabaseType, QueryUserExtension>)
|
||||
}
|
@ -3,70 +3,18 @@ package ru.landgrafhomyak.serdha.api.v0.dml
|
||||
import ru.landgrafhomyak.serdha.api.v0.Expression
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Column
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.table.UniqueIndex
|
||||
|
||||
public interface CreateInsertQueryScope<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonCreateQueryScope<QueryUserExtension> {
|
||||
public val insertedValues: SelectedTable<TargetTableUserExtension, QueryUserExtension>
|
||||
|
||||
@Suppress("ClassName")
|
||||
public interface _UpsertClauseScope<TargetTableUserExtension : Any, QueryUserExtension : Any> {
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> oldColumnValue(c: Column<RuntimeType, DatabaseType, TargetTableUserExtension>): Expression<RuntimeType, DatabaseType, QueryUserExtension>
|
||||
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> updateColumn(c: Column<RuntimeType, DatabaseType, TargetTableUserExtension>, e: Expression<RuntimeType, DatabaseType, QueryUserExtension>)
|
||||
}
|
||||
|
||||
public fun onConflictUpdate(u: UniqueIndex<TargetTableUserExtension>, c: (_UpsertClauseScope<TargetTableUserExtension, QueryUserExtension>) -> Unit)
|
||||
|
||||
public fun onConflictThrow(u: UniqueIndex<TargetTableUserExtension>)
|
||||
|
||||
public fun onConflictIgnore(u: UniqueIndex<TargetTableUserExtension>)
|
||||
|
||||
public val returningInserted: _CommonCreateQueryScope._ReturningClauseScope<QueryUserExtension>
|
||||
|
||||
@Suppress("ClassName")
|
||||
public interface _ReturningUpdatedClauseScope<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonCreateQueryScope._ReturningClauseScope<QueryUserExtension> {
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> oldColumnValue(c: Column<RuntimeType, DatabaseType, TargetTableUserExtension>): Expression<RuntimeType, DatabaseType, QueryUserExtension>
|
||||
}
|
||||
|
||||
public val returningUpdated: _ReturningUpdatedClauseScope<TargetTableUserExtension, QueryUserExtension>
|
||||
|
||||
public interface InsertParams<TargetTableUserExtension : Any, QueryUserExtension : Any> : CreateInsertQueryScope<TargetTableUserExtension, QueryUserExtension> {
|
||||
public class DataParam<@Suppress("unused") QueryUserExtension : Any> private constructor()
|
||||
|
||||
public val dataExpressionBuilder: Expression.Builder<DataParam<QueryUserExtension>>
|
||||
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> dataParam(name: String, type: DatabaseType): InputParam<RuntimeType, DatabaseType, DataParam<QueryUserExtension>>
|
||||
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> insertParam(
|
||||
column: Column<RuntimeType, DatabaseType, TargetTableUserExtension>,
|
||||
paramName: String = column.name,
|
||||
): InputParam<RuntimeType, DatabaseType, DataParam<QueryUserExtension>>
|
||||
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> insert(column: Column<RuntimeType, DatabaseType, TargetTableUserExtension>, expression: Expression<RuntimeType, DatabaseType, DataParam<QueryUserExtension>>)
|
||||
}
|
||||
|
||||
public interface InsertFromQuery<TargetTableUserExtension : Any, QueryUserExtension : Any> : CreateInsertQueryScope<TargetTableUserExtension, QueryUserExtension> {
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> insert(column: Column<RuntimeType, DatabaseType, TargetTableUserExtension>, expression: Expression<RuntimeType, DatabaseType, QueryUserExtension>)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public interface CreateInsertQueryScope<TargetTableUserExtension : Any, QueryUserExtension : Any> :_CreateInsertOrCopyQueryScope<TargetTableUserExtension, QueryUserExtension> {
|
||||
public class DataParam<@Suppress("unused") QueryUserExtension : Any> private constructor()
|
||||
|
||||
public val dataExpressionBuilder: Expression.Builder<DataParam<QueryUserExtension>>
|
||||
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> dataParam(name: String, type: DatabaseType): InputParam<RuntimeType, DatabaseType, DataParam<QueryUserExtension>>
|
||||
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> insertParam(
|
||||
column: Column<RuntimeType, DatabaseType, TargetTableUserExtension>,
|
||||
paramName: String = column.name,
|
||||
): InputParam<RuntimeType, DatabaseType, DataParam<QueryUserExtension>>
|
||||
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> insert(column: Column<RuntimeType, DatabaseType, TargetTableUserExtension>, expression: Expression<RuntimeType, DatabaseType, DataParam<QueryUserExtension>>)
|
||||
}
|
@ -2,8 +2,4 @@ package ru.landgrafhomyak.serdha.api.v0.dml
|
||||
|
||||
public interface InsertQuery<QueryUserExtension : Any> {
|
||||
public val userExtension: QueryUserExtension
|
||||
|
||||
public interface InsertParams<QueryUserExtension : Any> : InsertQuery<QueryUserExtension>
|
||||
|
||||
public interface InsertFromQuery<QueryUserExtension : Any> : InsertQuery<QueryUserExtension>
|
||||
}
|
@ -22,37 +22,37 @@ public interface _CommonCreateQueryScope<QueryUserExtension : Any> {
|
||||
|
||||
public fun <SubqueryUserExtension : Any> selectQuery(q: CanBeSubquery<SubqueryUserExtension>, p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit): SelectedTable<SubqueryUserExtension, QueryUserExtension>
|
||||
|
||||
public class SelectedInsert<SubqueryUserExtension : Any, QueryUserExtension : Any>(
|
||||
public class SelectedDiff<SubqueryUserExtension : Any, QueryUserExtension : Any>(
|
||||
public val inserted: SelectedTable<SubqueryUserExtension, QueryUserExtension>,
|
||||
public val updated: SelectedTable<SubqueryUserExtension, QueryUserExtension>
|
||||
)
|
||||
|
||||
public fun <SubqueryUserExtension : Any> selectInsert(q: InsertQuery.InsertParams<SubqueryUserExtension>, p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit): SelectedInsert<SubqueryUserExtension, QueryUserExtension>
|
||||
public fun <SubqueryUserExtension : Any> selectInsert(q: InsertQuery<SubqueryUserExtension>, p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit): SelectedDiff<SubqueryUserExtension, QueryUserExtension>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public fun <SubqueryUserExtension : Any> _selectInsert(
|
||||
q: InsertQuery.InsertFromQuery<SubqueryUserExtension>,
|
||||
public fun <SubqueryUserExtension : Any> _selectCopy(
|
||||
q: CopyQuery<SubqueryUserExtension>,
|
||||
p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit,
|
||||
r: (_ParametersSetter._Multi<CreateInsertQueryScope.InsertParams.DataParam<SubqueryUserExtension>, Nothing>) -> Unit
|
||||
): SelectedInsert<SubqueryUserExtension, QueryUserExtension>
|
||||
r: (_ParametersSetter._Multi<CreateInsertQueryScope.DataParam<SubqueryUserExtension>, Nothing>) -> Unit
|
||||
): SelectedDiff<SubqueryUserExtension, QueryUserExtension>
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public fun <SubqueryUserExtension : Any> selectInsertOne(
|
||||
q: InsertQuery.InsertFromQuery<SubqueryUserExtension>,
|
||||
public fun <SubqueryUserExtension : Any> selectCopyOne(
|
||||
q: CopyQuery<SubqueryUserExtension>,
|
||||
p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit,
|
||||
r: (ParametersSetter<CreateInsertQueryScope.InsertParams.DataParam<SubqueryUserExtension>>) -> Unit
|
||||
): SelectedInsert<SubqueryUserExtension, QueryUserExtension> =
|
||||
this._selectInsert(q, p, r)
|
||||
r: (ParametersSetter<CreateInsertQueryScope.DataParam<SubqueryUserExtension>>) -> Unit
|
||||
): SelectedDiff<SubqueryUserExtension, QueryUserExtension> =
|
||||
this._selectCopy(q, p, r)
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public fun <SubqueryUserExtension : Any, T> selectInsertMulti(
|
||||
q: InsertQuery.InsertFromQuery<SubqueryUserExtension>,
|
||||
public fun <SubqueryUserExtension : Any, T> selectCopyMulti(
|
||||
q: CopyQuery<SubqueryUserExtension>,
|
||||
p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit,
|
||||
data: Iterable<T>,
|
||||
r: (T, ParametersSetter<CreateInsertQueryScope.InsertParams.DataParam<SubqueryUserExtension>>) -> Unit
|
||||
): SelectedInsert<SubqueryUserExtension, QueryUserExtension> =
|
||||
this._selectInsert(q, p) { rr -> for (e in data) r(e, rr) }
|
||||
r: (T, ParametersSetter<CreateInsertQueryScope.DataParam<SubqueryUserExtension>>) -> Unit
|
||||
): SelectedDiff<SubqueryUserExtension, QueryUserExtension> =
|
||||
this._selectCopy(q, p) { rr -> for (e in data) r(e, rr) }
|
||||
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> param(name: String, type: DatabaseType): InputParam<RuntimeType, DatabaseType, QueryUserExtension>
|
||||
|
||||
|
@ -0,0 +1,54 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.dml
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.Expression
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Column
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.table.UniqueIndex
|
||||
|
||||
@Suppress("ClassName")
|
||||
public interface _CreateInsertOrCopyQueryScope<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonCreateQueryScope<QueryUserExtension> {
|
||||
public val insertedValues: SelectedTable<TargetTableUserExtension, QueryUserExtension>
|
||||
|
||||
@Suppress("ClassName")
|
||||
public interface _UpsertClauseScope<TargetTableUserExtension : Any, QueryUserExtension : Any> {
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> oldColumnValue(c: Column<RuntimeType, DatabaseType, TargetTableUserExtension>): Expression<RuntimeType, DatabaseType, QueryUserExtension>
|
||||
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> updateColumn(c: Column<RuntimeType, DatabaseType, TargetTableUserExtension>, e: Expression<RuntimeType, DatabaseType, QueryUserExtension>)
|
||||
}
|
||||
|
||||
public fun onConflictUpdate(u: UniqueIndex<TargetTableUserExtension>, c: (_UpsertClauseScope<TargetTableUserExtension, QueryUserExtension>) -> Unit)
|
||||
|
||||
public fun onConflictThrow(u: UniqueIndex<TargetTableUserExtension>)
|
||||
|
||||
public fun onConflictIgnore(u: UniqueIndex<TargetTableUserExtension>)
|
||||
|
||||
public val returningInserted: _CommonCreateQueryScope._ReturningClauseScope<QueryUserExtension>
|
||||
|
||||
@Suppress("ClassName")
|
||||
public interface _ReturningUpdatedClauseScope<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonCreateQueryScope._ReturningClauseScope<QueryUserExtension> {
|
||||
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> oldColumnValue(c: Column<RuntimeType, DatabaseType, TargetTableUserExtension>): Expression<RuntimeType, DatabaseType, QueryUserExtension>
|
||||
}
|
||||
|
||||
public val returningUpdated: _ReturningUpdatedClauseScope<TargetTableUserExtension, QueryUserExtension>
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -4,9 +4,11 @@ import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.module.Module
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.types.RowId
|
||||
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CopyQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CreateInsertQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.DeleteQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CreateInsertQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml._CreateInsertOrCopyQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.UpdateQuery
|
||||
|
||||
@ -21,11 +23,11 @@ public interface SynchronizedDatabase<DatabaseUserExtension : Any> : Module<Data
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun <QueryUserWrapper : Any> _autoTransactedInsertParams(query: InsertQuery.InsertParams<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ParametersSetter._Multi<CreateInsertQueryScope.InsertParams.DataParam<QueryUserWrapper>, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>>
|
||||
public suspend fun <QueryUserWrapper : Any> _autoTransactedInsert(query: InsertQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ParametersSetter._Multi<CreateInsertQueryScope.DataParam<QueryUserWrapper>, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun <QueryUserWrapper : Any> _autoTransactedInsertFromQuery(query: InsertQuery.InsertFromQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>
|
||||
public suspend fun <QueryUserWrapper : Any> _autoTransactedCopy(query: CopyQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
|
@ -1,9 +1,11 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.runtime
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CopyQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CreateInsertQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.DeleteQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CreateInsertQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml._CreateInsertOrCopyQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.UpdateQuery
|
||||
|
||||
@ -14,11 +16,11 @@ public interface Transaction {
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public fun <QueryUserWrapper : Any> _insertParams(compiledQuery: InsertQuery.InsertParams<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ParametersSetter._Multi<CreateInsertQueryScope.InsertParams.DataParam<QueryUserWrapper>, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>>
|
||||
public fun <QueryUserWrapper : Any> _insert(compiledQuery: InsertQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ParametersSetter._Multi<CreateInsertQueryScope.DataParam<QueryUserWrapper>, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public fun <QueryUserWrapper : Any> _insertFromQuery(compiledQuery: InsertQuery.InsertFromQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>
|
||||
public fun <QueryUserWrapper : Any> _copy(compiledQuery: CopyQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
|
@ -6,9 +6,10 @@ import kotlin.contracts.InvocationKind
|
||||
import kotlin.contracts.contract
|
||||
import kotlin.jvm.JvmName
|
||||
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CopyQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CreateInsertQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.DeleteQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.CreateInsertQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.dml.UpdateQuery
|
||||
|
||||
@ -293,12 +294,12 @@ public suspend inline fun <QueryUserWrapper : Any, R> SynchronizedDatabase<*>.au
|
||||
@Suppress("FunctionName", "DuplicatedCode")
|
||||
@PublishedApi
|
||||
@OptIn(LowLevelApi::class)
|
||||
internal suspend inline fun <Q : Any, T> _wrapInsertParamsWithLambdas(
|
||||
compiledQuery: InsertQuery.InsertParams<Q>,
|
||||
queryGetter: () -> _ParametersSetter<Q, _ParametersSetter._Multi<CreateInsertQueryScope.InsertParams.DataParam<Q>, _ResultSet<Q, _ResultSet<Q, Unit>>?>>,
|
||||
internal suspend inline fun <Q : Any, T> _wrapInsertWithLambdas(
|
||||
compiledQuery: InsertQuery<Q>,
|
||||
queryGetter: () -> _ParametersSetter<Q, _ParametersSetter._Multi<CreateInsertQueryScope.DataParam<Q>, _ResultSet<Q, _ResultSet<Q, Unit>>?>>,
|
||||
parameters: (ParametersSetter<Q>) -> Unit,
|
||||
data: Iterable<T>,
|
||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.InsertParams.DataParam<Q>>) -> Unit,
|
||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.DataParam<Q>>) -> Unit,
|
||||
hasReturning: Boolean,
|
||||
returningInserted: (_ResultSet<Q, *>) -> Unit,
|
||||
returningUpdated: (_ResultSet<Q, *>) -> Unit,
|
||||
@ -342,19 +343,19 @@ internal suspend inline fun <Q : Any, T> _wrapInsertParamsWithLambdas(
|
||||
}
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any, T> Transaction.insertParams(
|
||||
compiledQuery: InsertQuery.InsertParams<QueryUserWrapper>,
|
||||
public suspend inline fun <QueryUserWrapper : Any, T> Transaction.insert(
|
||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
data: Iterable<T>,
|
||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.InsertParams.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
) {
|
||||
contract {
|
||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||
callsInPlace(rowFormatter, InvocationKind.UNKNOWN)
|
||||
}
|
||||
_wrapInsertParamsWithLambdas(
|
||||
_wrapInsertWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._insertParams(compiledQuery) },
|
||||
queryGetter = { this._insert(compiledQuery) },
|
||||
parameters = parameters,
|
||||
data = data,
|
||||
rowFormatter = rowFormatter,
|
||||
@ -366,19 +367,19 @@ public suspend inline fun <QueryUserWrapper : Any, T> Transaction.insertParams(
|
||||
}
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any, T> SynchronizedDatabase<*>.autoTransactedInsertParams(
|
||||
compiledQuery: InsertQuery.InsertParams<QueryUserWrapper>,
|
||||
public suspend inline fun <QueryUserWrapper : Any, T> SynchronizedDatabase<*>.autoTransactedInsert(
|
||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
data: Iterable<T>,
|
||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.InsertParams.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
) {
|
||||
contract {
|
||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||
callsInPlace(rowFormatter, InvocationKind.UNKNOWN)
|
||||
}
|
||||
_wrapInsertParamsWithLambdas(
|
||||
_wrapInsertWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._autoTransactedInsertParams(compiledQuery) },
|
||||
queryGetter = { this._autoTransactedInsert(compiledQuery) },
|
||||
parameters = parameters,
|
||||
data = data,
|
||||
rowFormatter = rowFormatter,
|
||||
@ -390,11 +391,11 @@ public suspend inline fun <QueryUserWrapper : Any, T> SynchronizedDatabase<*>.au
|
||||
}
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any, T> Transaction.insertParamsReturningIterate(
|
||||
compiledQuery: InsertQuery.InsertParams<QueryUserWrapper>,
|
||||
public suspend inline fun <QueryUserWrapper : Any, T> Transaction.insertReturningIterate(
|
||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
data: Iterable<T>,
|
||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.InsertParams.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
insertedRows: (Row<QueryUserWrapper>) -> Unit,
|
||||
updatedRows: (Row<QueryUserWrapper>) -> Unit,
|
||||
) {
|
||||
@ -402,9 +403,9 @@ public suspend inline fun <QueryUserWrapper : Any, T> Transaction.insertParamsRe
|
||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||
callsInPlace(rowFormatter, InvocationKind.UNKNOWN)
|
||||
}
|
||||
_wrapInsertParamsWithLambdas(
|
||||
_wrapInsertWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._insertParams(compiledQuery) },
|
||||
queryGetter = { this._insert(compiledQuery) },
|
||||
parameters = parameters,
|
||||
data = data,
|
||||
rowFormatter = rowFormatter,
|
||||
@ -416,11 +417,11 @@ public suspend inline fun <QueryUserWrapper : Any, T> Transaction.insertParamsRe
|
||||
}
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any, T> SynchronizedDatabase<*>.autoTransactedInsertParametersReturningIterate(
|
||||
compiledQuery: InsertQuery.InsertParams<QueryUserWrapper>,
|
||||
public suspend inline fun <QueryUserWrapper : Any, T> SynchronizedDatabase<*>.autoTransactedInsertReturningIterate(
|
||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
data: Iterable<T>,
|
||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.InsertParams.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
insertedRows: (Row<QueryUserWrapper>) -> Unit,
|
||||
updatedRows: (Row<QueryUserWrapper>) -> Unit,
|
||||
) {
|
||||
@ -428,9 +429,9 @@ public suspend inline fun <QueryUserWrapper : Any, T> SynchronizedDatabase<*>.au
|
||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||
callsInPlace(rowFormatter, InvocationKind.UNKNOWN)
|
||||
}
|
||||
_wrapInsertParamsWithLambdas(
|
||||
_wrapInsertWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._autoTransactedInsertParams(compiledQuery) },
|
||||
queryGetter = { this._autoTransactedInsert(compiledQuery) },
|
||||
parameters = parameters,
|
||||
data = data,
|
||||
rowFormatter = rowFormatter,
|
||||
@ -458,17 +459,17 @@ internal object SingleIterable : Iterable<Unit>, Iterator<Unit> {
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any> Transaction.insertSingle(
|
||||
compiledQuery: InsertQuery.InsertParams<QueryUserWrapper>,
|
||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
rowData: (ParametersSetter<CreateInsertQueryScope.InsertParams.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
rowData: (ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
) {
|
||||
contract {
|
||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||
callsInPlace(rowData, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
_wrapInsertParamsWithLambdas(
|
||||
_wrapInsertWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._insertParams(compiledQuery) },
|
||||
queryGetter = { this._insert(compiledQuery) },
|
||||
parameters = parameters,
|
||||
data = SingleIterable,
|
||||
rowFormatter = { _, r -> rowData(r) },
|
||||
@ -481,17 +482,17 @@ public suspend inline fun <QueryUserWrapper : Any> Transaction.insertSingle(
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoTransactedInsertSingle(
|
||||
compiledQuery: InsertQuery.InsertParams<QueryUserWrapper>,
|
||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
rowData: (ParametersSetter<CreateInsertQueryScope.InsertParams.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
rowData: (ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||
) {
|
||||
contract {
|
||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||
callsInPlace(rowData, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
_wrapInsertParamsWithLambdas(
|
||||
_wrapInsertWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._autoTransactedInsertParams(compiledQuery) },
|
||||
queryGetter = { this._autoTransactedInsert(compiledQuery) },
|
||||
parameters = parameters,
|
||||
data = SingleIterable,
|
||||
rowFormatter = { _, r -> rowData(r) },
|
||||
@ -505,9 +506,9 @@ public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoT
|
||||
@Suppress("DuplicatedCode")
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any, R> Transaction.insertSingleReturning(
|
||||
compiledQuery: InsertQuery.InsertParams<QueryUserWrapper>,
|
||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
rowData: (ParametersSetter<CreateInsertQueryScope.InsertParams.DataParam<QueryUserWrapper>>) -> Unit = {},
|
||||
rowData: (ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit = {},
|
||||
insertedRows: (Row<QueryUserWrapper>) -> R,
|
||||
updatedRows: (Row<QueryUserWrapper>) -> R
|
||||
): R {
|
||||
@ -519,9 +520,9 @@ public suspend inline fun <QueryUserWrapper : Any, R> Transaction.insertSingleRe
|
||||
}
|
||||
var isReturned = false
|
||||
var ret: R? = null
|
||||
_wrapInsertParamsWithLambdas(
|
||||
_wrapInsertWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._insertParams(compiledQuery) },
|
||||
queryGetter = { this._insert(compiledQuery) },
|
||||
parameters = parameters,
|
||||
hasReturning = true,
|
||||
data = SingleIterable,
|
||||
@ -550,9 +551,9 @@ public suspend inline fun <QueryUserWrapper : Any, R> Transaction.insertSingleRe
|
||||
@Suppress("DuplicatedCode")
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any, R> SynchronizedDatabase<*>.autoTransactedInsertSingleReturning(
|
||||
compiledQuery: InsertQuery.InsertParams<QueryUserWrapper>,
|
||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
rowData: (ParametersSetter<CreateInsertQueryScope.InsertParams.DataParam<QueryUserWrapper>>) -> Unit = {},
|
||||
rowData: (ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit = {},
|
||||
insertedRows: (Row<QueryUserWrapper>) -> R,
|
||||
updatedRows: (Row<QueryUserWrapper>) -> R
|
||||
): R {
|
||||
@ -564,9 +565,9 @@ public suspend inline fun <QueryUserWrapper : Any, R> SynchronizedDatabase<*>.au
|
||||
}
|
||||
var isReturned = false
|
||||
var ret: R? = null
|
||||
_wrapInsertParamsWithLambdas(
|
||||
_wrapInsertWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._autoTransactedInsertParams(compiledQuery) },
|
||||
queryGetter = { this._autoTransactedInsert(compiledQuery) },
|
||||
parameters = parameters,
|
||||
hasReturning = true,
|
||||
data = SingleIterable,
|
||||
@ -595,8 +596,8 @@ public suspend inline fun <QueryUserWrapper : Any, R> SynchronizedDatabase<*>.au
|
||||
@Suppress("FunctionName", "DuplicatedCode")
|
||||
@PublishedApi
|
||||
@OptIn(LowLevelApi::class)
|
||||
internal suspend inline fun <Q : Any> _wrapInsertFromQueryWithLambdas(
|
||||
compiledQuery: InsertQuery.InsertFromQuery<Q>,
|
||||
internal suspend inline fun <Q : Any> _wrapCopyWithLambdas(
|
||||
compiledQuery: CopyQuery<Q>,
|
||||
queryGetter: () -> _ParametersSetter<Q, _ResultSet<Q, _ResultSet<Q, Unit>>?>,
|
||||
parameters: (ParametersSetter<Q>) -> Unit,
|
||||
hasReturning: Boolean,
|
||||
@ -633,16 +634,16 @@ internal suspend inline fun <Q : Any> _wrapInsertFromQueryWithLambdas(
|
||||
}
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any> Transaction.insertFromQuery(
|
||||
compiledQuery: InsertQuery.InsertFromQuery<QueryUserWrapper>,
|
||||
public suspend inline fun <QueryUserWrapper : Any> Transaction.copy(
|
||||
compiledQuery: CopyQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
) {
|
||||
contract {
|
||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
_wrapInsertFromQueryWithLambdas(
|
||||
_wrapCopyWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._insertFromQuery(compiledQuery) },
|
||||
queryGetter = { this._copy(compiledQuery) },
|
||||
parameters = parameters,
|
||||
hasReturning = false,
|
||||
returningInserted = {},
|
||||
@ -652,16 +653,16 @@ public suspend inline fun <QueryUserWrapper : Any> Transaction.insertFromQuery(
|
||||
}
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoTransactedInsertFromQuery(
|
||||
compiledQuery: InsertQuery.InsertFromQuery<QueryUserWrapper>,
|
||||
public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoTransactedCopy(
|
||||
compiledQuery: CopyQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
) {
|
||||
contract {
|
||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||
}
|
||||
_wrapInsertFromQueryWithLambdas(
|
||||
_wrapCopyWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._autoTransactedInsertFromQuery(compiledQuery) },
|
||||
queryGetter = { this._autoTransactedCopy(compiledQuery) },
|
||||
parameters = parameters,
|
||||
hasReturning = false,
|
||||
returningInserted = {},
|
||||
@ -671,8 +672,8 @@ public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoT
|
||||
}
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any> Transaction.insertFromQueryReturningIterate(
|
||||
compiledQuery: InsertQuery.InsertFromQuery<QueryUserWrapper>,
|
||||
public suspend inline fun <QueryUserWrapper : Any> Transaction.copyReturningIterate(
|
||||
compiledQuery: CopyQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
insertedRows: (Row<QueryUserWrapper>) -> Unit,
|
||||
updatedRows: (Row<QueryUserWrapper>) -> Unit
|
||||
@ -682,9 +683,9 @@ public suspend inline fun <QueryUserWrapper : Any> Transaction.insertFromQueryRe
|
||||
callsInPlace(insertedRows, InvocationKind.UNKNOWN)
|
||||
callsInPlace(updatedRows, InvocationKind.UNKNOWN)
|
||||
}
|
||||
_wrapInsertFromQueryWithLambdas(
|
||||
_wrapCopyWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._insertFromQuery(compiledQuery) },
|
||||
queryGetter = { this._copy(compiledQuery) },
|
||||
parameters = parameters,
|
||||
hasReturning = true,
|
||||
returningInserted = { rs -> while (rs._next()) insertedRows(rs) },
|
||||
@ -694,8 +695,8 @@ public suspend inline fun <QueryUserWrapper : Any> Transaction.insertFromQueryRe
|
||||
}
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoTransactedInsertFromQueryReturningIterate(
|
||||
compiledQuery: InsertQuery.InsertFromQuery<QueryUserWrapper>,
|
||||
public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoTransactedCopyReturningIterate(
|
||||
compiledQuery: CopyQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
insertedRows: (Row<QueryUserWrapper>) -> Unit,
|
||||
updatedRows: (Row<QueryUserWrapper>) -> Unit
|
||||
@ -705,9 +706,9 @@ public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoT
|
||||
callsInPlace(insertedRows, InvocationKind.UNKNOWN)
|
||||
callsInPlace(updatedRows, InvocationKind.UNKNOWN)
|
||||
}
|
||||
_wrapInsertFromQueryWithLambdas(
|
||||
_wrapCopyWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._autoTransactedInsertFromQuery(compiledQuery) },
|
||||
queryGetter = { this._autoTransactedCopy(compiledQuery) },
|
||||
parameters = parameters,
|
||||
hasReturning = true,
|
||||
returningInserted = { rs -> while (rs._next()) insertedRows(rs) },
|
||||
@ -717,8 +718,8 @@ public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoT
|
||||
}
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any, R> Transaction.insertFromQueryReturningSingleOrNull(
|
||||
compiledQuery: InsertQuery.InsertFromQuery<QueryUserWrapper>,
|
||||
public suspend inline fun <QueryUserWrapper : Any, R> Transaction.copyReturningSingleOrNull(
|
||||
compiledQuery: CopyQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
insertedRows: (Row<QueryUserWrapper>) -> R,
|
||||
updatedRows: (Row<QueryUserWrapper>) -> R
|
||||
@ -730,9 +731,9 @@ public suspend inline fun <QueryUserWrapper : Any, R> Transaction.insertFromQuer
|
||||
}
|
||||
var isReturned = false
|
||||
var ret: R? = null
|
||||
_wrapInsertFromQueryWithLambdas(
|
||||
_wrapCopyWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._insertFromQuery(compiledQuery) },
|
||||
queryGetter = { this._copy(compiledQuery) },
|
||||
parameters = parameters,
|
||||
hasReturning = true,
|
||||
returningInserted = returningInserted@{ rs ->
|
||||
@ -756,8 +757,8 @@ public suspend inline fun <QueryUserWrapper : Any, R> Transaction.insertFromQuer
|
||||
}
|
||||
|
||||
@OptIn(LowLevelApi::class)
|
||||
public suspend inline fun <QueryUserWrapper : Any, R> SynchronizedDatabase<*>.autoTransactedInsertFromQueryReturningSingleOrNull(
|
||||
compiledQuery: InsertQuery.InsertFromQuery<QueryUserWrapper>,
|
||||
public suspend inline fun <QueryUserWrapper : Any, R> SynchronizedDatabase<*>.autoTransactedCopyReturningSingleOrNull(
|
||||
compiledQuery: CopyQuery<QueryUserWrapper>,
|
||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||
insertedRows: (Row<QueryUserWrapper>) -> R,
|
||||
updatedRows: (Row<QueryUserWrapper>) -> R
|
||||
@ -769,9 +770,9 @@ public suspend inline fun <QueryUserWrapper : Any, R> SynchronizedDatabase<*>.au
|
||||
}
|
||||
var isReturned = false
|
||||
var ret: R? = null
|
||||
_wrapInsertFromQueryWithLambdas(
|
||||
_wrapCopyWithLambdas(
|
||||
compiledQuery = compiledQuery,
|
||||
queryGetter = { this._autoTransactedInsertFromQuery(compiledQuery) },
|
||||
queryGetter = { this._autoTransactedCopy(compiledQuery) },
|
||||
parameters = parameters,
|
||||
hasReturning = true,
|
||||
returningInserted = returningInserted@{ rs ->
|
||||
|
Loading…
Reference in New Issue
Block a user