From d55cc474152f183bed6aa1956974f73bd99058dc Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Sat, 4 Jan 2025 15:38:43 +0300 Subject: [PATCH] Renaming 'InsertFromQuery' to 'Copy' and splitting from 'InsertParams'->'Insert' --- .../api/v0/ddl/module/CreateModuleScope.kt | 40 +++--- .../serdha/api/v0/dml/CopyQuery.kt | 5 + .../serdha/api/v0/dml/CreateCopyQueryScope.kt | 9 ++ .../api/v0/dml/CreateInsertQueryScope.kt | 72 ++-------- .../serdha/api/v0/dml/InsertQuery.kt | 4 - .../api/v0/dml/_CommonCreateQueryScope.kt | 32 ++--- .../v0/dml/_CreateInsertOrCopyQueryScope.kt | 54 +++++++ .../api/v0/runtime/SynchronizedDatabase.kt | 8 +- .../serdha/api/v0/runtime/Transaction.kt | 8 +- .../api/v0/runtime/transaction_methods.kt | 135 +++++++++--------- 10 files changed, 193 insertions(+), 174 deletions(-) create mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CopyQuery.kt create mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CreateCopyQueryScope.kt create mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/_CreateInsertOrCopyQueryScope.kt diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/module/CreateModuleScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/module/CreateModuleScope.kt index 1fff14f..324b2f2 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/module/CreateModuleScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/module/CreateModuleScope.kt @@ -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 { + public interface InsertQueryCreator { /** * 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, creator: CreateInsertQueryScope.InsertParams): QueryUserWrapper + public fun createInsert(table: Table, creator: CreateInsertQueryScope): 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 createInsertParamsQuery(table: Table, initializer: InsertParamsQueryCreator): InsertQuery.InsertParams + public fun createInsertQuery(table: Table, initializer: InsertQueryCreator): InsertQuery /** * 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 createTemporaryInsertParamsQuery(table: Table, initializer: InsertParamsQueryCreator): InsertQuery.InsertParams + public fun createTemporaryInsertQuery(table: Table, initializer: InsertQueryCreator): InsertQuery /** * 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 { + public interface CopyQueryCreator { /** * 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, creator: CreateInsertQueryScope.InsertFromQuery): QueryUserWrapper + public fun createCopy(table: Table, creator: CreateCopyQueryScope): 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 createInsertFromQueryQuery(table: Table, initializer: InsertFromQueryQueryCreator): InsertQuery.InsertFromQuery + public fun createCopyQuery(table: Table, initializer: CopyQueryCreator): CopyQuery /** * 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 createTemporaryInsertFromQueryQuery(table: Table, initializer: InsertFromQueryQueryCreator): InsertQuery.InsertFromQuery + public fun createTemporaryCopyQuery(table: Table, initializer: CopyQueryCreator): CopyQuery /** * Functional interface for creating 'UPDATE' query. diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CopyQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CopyQuery.kt new file mode 100644 index 0000000..94e49b2 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CopyQuery.kt @@ -0,0 +1,5 @@ +package ru.landgrafhomyak.serdha.api.v0.dml + +public interface CopyQuery { + public val userExtension: QueryUserExtension +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CreateCopyQueryScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CreateCopyQueryScope.kt new file mode 100644 index 0000000..8e66806 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CreateCopyQueryScope.kt @@ -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 :_CreateInsertOrCopyQueryScope { + public fun > insert(column: Column, expression: Expression) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CreateInsertQueryScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CreateInsertQueryScope.kt index 179b19c..c312a79 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CreateInsertQueryScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/CreateInsertQueryScope.kt @@ -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 : _CommonCreateQueryScope { - public val insertedValues: SelectedTable - - @Suppress("ClassName") - public interface _UpsertClauseScope { - public fun > oldColumnValue(c: Column): Expression - - public fun > updateColumn(c: Column, e: Expression) - } - - public fun onConflictUpdate(u: UniqueIndex, c: (_UpsertClauseScope) -> Unit) - - public fun onConflictThrow(u: UniqueIndex) - - public fun onConflictIgnore(u: UniqueIndex) - - public val returningInserted: _CommonCreateQueryScope._ReturningClauseScope - - @Suppress("ClassName") - public interface _ReturningUpdatedClauseScope : _CommonCreateQueryScope._ReturningClauseScope { - public fun > oldColumnValue(c: Column): Expression - } - - public val returningUpdated: _ReturningUpdatedClauseScope - - public interface InsertParams : CreateInsertQueryScope { - public class DataParam<@Suppress("unused") QueryUserExtension : Any> private constructor() - - public val dataExpressionBuilder: Expression.Builder> - - public fun > dataParam(name: String, type: DatabaseType): InputParam> - - public fun > insertParam( - column: Column, - paramName: String = column.name, - ): InputParam> - - public fun > insert(column: Column, expression: Expression>) - } - - public interface InsertFromQuery : CreateInsertQueryScope { - public fun > insert(column: Column, expression: Expression) - } -} - - - - - - - - - - - - - - - - +public interface CreateInsertQueryScope :_CreateInsertOrCopyQueryScope { + public class DataParam<@Suppress("unused") QueryUserExtension : Any> private constructor() + public val dataExpressionBuilder: Expression.Builder> + public fun > dataParam(name: String, type: DatabaseType): InputParam> + public fun > insertParam( + column: Column, + paramName: String = column.name, + ): InputParam> + public fun > insert(column: Column, expression: Expression>) +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/InsertQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/InsertQuery.kt index 961169e..2ee4a27 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/InsertQuery.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/InsertQuery.kt @@ -2,8 +2,4 @@ package ru.landgrafhomyak.serdha.api.v0.dml public interface InsertQuery { public val userExtension: QueryUserExtension - - public interface InsertParams : InsertQuery - - public interface InsertFromQuery : InsertQuery } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/_CommonCreateQueryScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/_CommonCreateQueryScope.kt index b51d7a6..8f97047 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/_CommonCreateQueryScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/_CommonCreateQueryScope.kt @@ -22,37 +22,37 @@ public interface _CommonCreateQueryScope { public fun selectQuery(q: CanBeSubquery, p: (SubqueryParametersSetter) -> Unit): SelectedTable - public class SelectedInsert( + public class SelectedDiff( public val inserted: SelectedTable, public val updated: SelectedTable ) - public fun selectInsert(q: InsertQuery.InsertParams, p: (SubqueryParametersSetter) -> Unit): SelectedInsert + public fun selectInsert(q: InsertQuery, p: (SubqueryParametersSetter) -> Unit): SelectedDiff @Suppress("FunctionName") @LowLevelApi - public fun _selectInsert( - q: InsertQuery.InsertFromQuery, + public fun _selectCopy( + q: CopyQuery, p: (SubqueryParametersSetter) -> Unit, - r: (_ParametersSetter._Multi, Nothing>) -> Unit - ): SelectedInsert + r: (_ParametersSetter._Multi, Nothing>) -> Unit + ): SelectedDiff @OptIn(LowLevelApi::class) - public fun selectInsertOne( - q: InsertQuery.InsertFromQuery, + public fun selectCopyOne( + q: CopyQuery, p: (SubqueryParametersSetter) -> Unit, - r: (ParametersSetter>) -> Unit - ): SelectedInsert = - this._selectInsert(q, p, r) + r: (ParametersSetter>) -> Unit + ): SelectedDiff = + this._selectCopy(q, p, r) @OptIn(LowLevelApi::class) - public fun selectInsertMulti( - q: InsertQuery.InsertFromQuery, + public fun selectCopyMulti( + q: CopyQuery, p: (SubqueryParametersSetter) -> Unit, data: Iterable, - r: (T, ParametersSetter>) -> Unit - ): SelectedInsert = - this._selectInsert(q, p) { rr -> for (e in data) r(e, rr) } + r: (T, ParametersSetter>) -> Unit + ): SelectedDiff = + this._selectCopy(q, p) { rr -> for (e in data) r(e, rr) } public fun > param(name: String, type: DatabaseType): InputParam diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/_CreateInsertOrCopyQueryScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/_CreateInsertOrCopyQueryScope.kt new file mode 100644 index 0000000..f1431e8 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/dml/_CreateInsertOrCopyQueryScope.kt @@ -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 : _CommonCreateQueryScope { + public val insertedValues: SelectedTable + + @Suppress("ClassName") + public interface _UpsertClauseScope { + public fun > oldColumnValue(c: Column): Expression + + public fun > updateColumn(c: Column, e: Expression) + } + + public fun onConflictUpdate(u: UniqueIndex, c: (_UpsertClauseScope) -> Unit) + + public fun onConflictThrow(u: UniqueIndex) + + public fun onConflictIgnore(u: UniqueIndex) + + public val returningInserted: _CommonCreateQueryScope._ReturningClauseScope + + @Suppress("ClassName") + public interface _ReturningUpdatedClauseScope : _CommonCreateQueryScope._ReturningClauseScope { + public fun > oldColumnValue(c: Column): Expression + } + + public val returningUpdated: _ReturningUpdatedClauseScope +} + + + + + + + + + + + + + + + + + + + + + diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/SynchronizedDatabase.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/SynchronizedDatabase.kt index a66d823..69ec18b 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/SynchronizedDatabase.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/SynchronizedDatabase.kt @@ -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 : Module _autoTransactedInsertParams(query: InsertQuery.InsertParams): _ParametersSetter, _ResultSet>?>> + public suspend fun _autoTransactedInsert(query: InsertQuery): _ParametersSetter, _ResultSet>?>> @Suppress("FunctionName") @LowLevelApi - public suspend fun _autoTransactedInsertFromQuery(query: InsertQuery.InsertFromQuery): _ParametersSetter>?> + public suspend fun _autoTransactedCopy(query: CopyQuery): _ParametersSetter>?> @Suppress("FunctionName") @LowLevelApi diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/Transaction.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/Transaction.kt index 4b7a613..c66444f 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/Transaction.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/Transaction.kt @@ -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 _insertParams(compiledQuery: InsertQuery.InsertParams): _ParametersSetter, _ResultSet>?>> + public fun _insert(compiledQuery: InsertQuery): _ParametersSetter, _ResultSet>?>> @Suppress("FunctionName") @LowLevelApi - public fun _insertFromQuery(compiledQuery: InsertQuery.InsertFromQuery): _ParametersSetter>?> + public fun _copy(compiledQuery: CopyQuery): _ParametersSetter>?> @Suppress("FunctionName") @LowLevelApi diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/transaction_methods.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/transaction_methods.kt index a88f8f5..8b8589e 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/transaction_methods.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/transaction_methods.kt @@ -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 SynchronizedDatabase<*>.au @Suppress("FunctionName", "DuplicatedCode") @PublishedApi @OptIn(LowLevelApi::class) -internal suspend inline fun _wrapInsertParamsWithLambdas( - compiledQuery: InsertQuery.InsertParams, - queryGetter: () -> _ParametersSetter, _ResultSet>?>>, +internal suspend inline fun _wrapInsertWithLambdas( + compiledQuery: InsertQuery, + queryGetter: () -> _ParametersSetter, _ResultSet>?>>, parameters: (ParametersSetter) -> Unit, data: Iterable, - rowFormatter: (T, ParametersSetter>) -> Unit, + rowFormatter: (T, ParametersSetter>) -> Unit, hasReturning: Boolean, returningInserted: (_ResultSet) -> Unit, returningUpdated: (_ResultSet) -> Unit, @@ -342,19 +343,19 @@ internal suspend inline fun _wrapInsertParamsWithLambdas( } @OptIn(LowLevelApi::class) -public suspend inline fun Transaction.insertParams( - compiledQuery: InsertQuery.InsertParams, +public suspend inline fun Transaction.insert( + compiledQuery: InsertQuery, parameters: (ParametersSetter) -> Unit = {}, data: Iterable, - rowFormatter: (T, ParametersSetter>) -> Unit, + rowFormatter: (T, ParametersSetter>) -> 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 Transaction.insertParams( } @OptIn(LowLevelApi::class) -public suspend inline fun SynchronizedDatabase<*>.autoTransactedInsertParams( - compiledQuery: InsertQuery.InsertParams, +public suspend inline fun SynchronizedDatabase<*>.autoTransactedInsert( + compiledQuery: InsertQuery, parameters: (ParametersSetter) -> Unit = {}, data: Iterable, - rowFormatter: (T, ParametersSetter>) -> Unit, + rowFormatter: (T, ParametersSetter>) -> 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 SynchronizedDatabase<*>.au } @OptIn(LowLevelApi::class) -public suspend inline fun Transaction.insertParamsReturningIterate( - compiledQuery: InsertQuery.InsertParams, +public suspend inline fun Transaction.insertReturningIterate( + compiledQuery: InsertQuery, parameters: (ParametersSetter) -> Unit = {}, data: Iterable, - rowFormatter: (T, ParametersSetter>) -> Unit, + rowFormatter: (T, ParametersSetter>) -> Unit, insertedRows: (Row) -> Unit, updatedRows: (Row) -> Unit, ) { @@ -402,9 +403,9 @@ public suspend inline fun 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 Transaction.insertParamsRe } @OptIn(LowLevelApi::class) -public suspend inline fun SynchronizedDatabase<*>.autoTransactedInsertParametersReturningIterate( - compiledQuery: InsertQuery.InsertParams, +public suspend inline fun SynchronizedDatabase<*>.autoTransactedInsertReturningIterate( + compiledQuery: InsertQuery, parameters: (ParametersSetter) -> Unit = {}, data: Iterable, - rowFormatter: (T, ParametersSetter>) -> Unit, + rowFormatter: (T, ParametersSetter>) -> Unit, insertedRows: (Row) -> Unit, updatedRows: (Row) -> Unit, ) { @@ -428,9 +429,9 @@ public suspend inline fun 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, Iterator { @OptIn(LowLevelApi::class) public suspend inline fun Transaction.insertSingle( - compiledQuery: InsertQuery.InsertParams, + compiledQuery: InsertQuery, parameters: (ParametersSetter) -> Unit = {}, - rowData: (ParametersSetter>) -> Unit, + rowData: (ParametersSetter>) -> 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 Transaction.insertSingle( @OptIn(LowLevelApi::class) public suspend inline fun SynchronizedDatabase<*>.autoTransactedInsertSingle( - compiledQuery: InsertQuery.InsertParams, + compiledQuery: InsertQuery, parameters: (ParametersSetter) -> Unit = {}, - rowData: (ParametersSetter>) -> Unit, + rowData: (ParametersSetter>) -> 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 SynchronizedDatabase<*>.autoT @Suppress("DuplicatedCode") @OptIn(LowLevelApi::class) public suspend inline fun Transaction.insertSingleReturning( - compiledQuery: InsertQuery.InsertParams, + compiledQuery: InsertQuery, parameters: (ParametersSetter) -> Unit = {}, - rowData: (ParametersSetter>) -> Unit = {}, + rowData: (ParametersSetter>) -> Unit = {}, insertedRows: (Row) -> R, updatedRows: (Row) -> R ): R { @@ -519,9 +520,9 @@ public suspend inline fun 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 Transaction.insertSingleRe @Suppress("DuplicatedCode") @OptIn(LowLevelApi::class) public suspend inline fun SynchronizedDatabase<*>.autoTransactedInsertSingleReturning( - compiledQuery: InsertQuery.InsertParams, + compiledQuery: InsertQuery, parameters: (ParametersSetter) -> Unit = {}, - rowData: (ParametersSetter>) -> Unit = {}, + rowData: (ParametersSetter>) -> Unit = {}, insertedRows: (Row) -> R, updatedRows: (Row) -> R ): R { @@ -564,9 +565,9 @@ public suspend inline fun 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 SynchronizedDatabase<*>.au @Suppress("FunctionName", "DuplicatedCode") @PublishedApi @OptIn(LowLevelApi::class) -internal suspend inline fun _wrapInsertFromQueryWithLambdas( - compiledQuery: InsertQuery.InsertFromQuery, +internal suspend inline fun _wrapCopyWithLambdas( + compiledQuery: CopyQuery, queryGetter: () -> _ParametersSetter>?>, parameters: (ParametersSetter) -> Unit, hasReturning: Boolean, @@ -633,16 +634,16 @@ internal suspend inline fun _wrapInsertFromQueryWithLambdas( } @OptIn(LowLevelApi::class) -public suspend inline fun Transaction.insertFromQuery( - compiledQuery: InsertQuery.InsertFromQuery, +public suspend inline fun Transaction.copy( + compiledQuery: CopyQuery, parameters: (ParametersSetter) -> 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 Transaction.insertFromQuery( } @OptIn(LowLevelApi::class) -public suspend inline fun SynchronizedDatabase<*>.autoTransactedInsertFromQuery( - compiledQuery: InsertQuery.InsertFromQuery, +public suspend inline fun SynchronizedDatabase<*>.autoTransactedCopy( + compiledQuery: CopyQuery, parameters: (ParametersSetter) -> 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 SynchronizedDatabase<*>.autoT } @OptIn(LowLevelApi::class) -public suspend inline fun Transaction.insertFromQueryReturningIterate( - compiledQuery: InsertQuery.InsertFromQuery, +public suspend inline fun Transaction.copyReturningIterate( + compiledQuery: CopyQuery, parameters: (ParametersSetter) -> Unit = {}, insertedRows: (Row) -> Unit, updatedRows: (Row) -> Unit @@ -682,9 +683,9 @@ public suspend inline fun 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 Transaction.insertFromQueryRe } @OptIn(LowLevelApi::class) -public suspend inline fun SynchronizedDatabase<*>.autoTransactedInsertFromQueryReturningIterate( - compiledQuery: InsertQuery.InsertFromQuery, +public suspend inline fun SynchronizedDatabase<*>.autoTransactedCopyReturningIterate( + compiledQuery: CopyQuery, parameters: (ParametersSetter) -> Unit = {}, insertedRows: (Row) -> Unit, updatedRows: (Row) -> Unit @@ -705,9 +706,9 @@ public suspend inline fun 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 SynchronizedDatabase<*>.autoT } @OptIn(LowLevelApi::class) -public suspend inline fun Transaction.insertFromQueryReturningSingleOrNull( - compiledQuery: InsertQuery.InsertFromQuery, +public suspend inline fun Transaction.copyReturningSingleOrNull( + compiledQuery: CopyQuery, parameters: (ParametersSetter) -> Unit = {}, insertedRows: (Row) -> R, updatedRows: (Row) -> R @@ -730,9 +731,9 @@ public suspend inline fun 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 Transaction.insertFromQuer } @OptIn(LowLevelApi::class) -public suspend inline fun SynchronizedDatabase<*>.autoTransactedInsertFromQueryReturningSingleOrNull( - compiledQuery: InsertQuery.InsertFromQuery, +public suspend inline fun SynchronizedDatabase<*>.autoTransactedCopyReturningSingleOrNull( + compiledQuery: CopyQuery, parameters: (ParametersSetter) -> Unit = {}, insertedRows: (Row) -> R, updatedRows: (Row) -> R @@ -769,9 +770,9 @@ public suspend inline fun 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 ->