Reorganizing DML creators interfaces
This commit is contained in:
parent
dfd1cd950d
commit
a2c89cc91d
@ -2,8 +2,6 @@ package ru.landgrafhomyak.serdha.api.v0.ddl.module
|
|||||||
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
|
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.CopyQuery
|
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.DeleteQuery
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
||||||
@ -49,7 +47,7 @@ public interface CreateModuleScope {
|
|||||||
* Creates table in [specified namespace][namespace] with [specified name][name] and stores it in the database.
|
* Creates table in [specified namespace][namespace] with [specified name][name] and stores it in the database.
|
||||||
* If table was created by previous synchronizations, asserts that table at the specified path in the database is same as table provided by [initializer].
|
* If table was created by previous synchronizations, asserts that table at the specified path in the database is same as table provided by [initializer].
|
||||||
*
|
*
|
||||||
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] this table must be [kept][UpgradeModuleScope.upgradeTable] (or [renamed][CreateModuleScope.renameTable]) or [deleted][CreateModuleScope.deleteTable].
|
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] this table must be [kept][UpgradeModuleScope.upgradeTable] (or [renamed][UpgradeModuleScope.renameTable]) or [deleted][UpgradeModuleScope.deleteTable].
|
||||||
*
|
*
|
||||||
* @param TableUserExtension User's type for containing table-related descriptors.
|
* @param TableUserExtension User's type for containing table-related descriptors.
|
||||||
* @param namespace Way to group tables if there is a lot.
|
* @param namespace Way to group tables if there is a lot.
|
||||||
@ -85,26 +83,6 @@ 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>
|
||||||
|
|
||||||
/**
|
|
||||||
* Functional interface for creating 'SELECT' query.
|
|
||||||
*
|
|
||||||
* Can be implemented like a companion object that just calls [QueryUserWrapper]'s constructor with the same or similar signature.
|
|
||||||
*
|
|
||||||
* @param QueryUserWrapper User's type with descriptors related to query.
|
|
||||||
*
|
|
||||||
* @see CreateModuleScope.createSelectQuery
|
|
||||||
*/
|
|
||||||
public interface SelectQueryCreator<QueryUserWrapper : Any> {
|
|
||||||
/**
|
|
||||||
* Scope method that uses [creator] to create a query.
|
|
||||||
*
|
|
||||||
* @param creator Object with descriptor providers and factories.
|
|
||||||
* @return User's object with query-related descriptors for future access.
|
|
||||||
*
|
|
||||||
* @see CreateModuleScope.createSelectQuery
|
|
||||||
*/
|
|
||||||
public fun createSelect(creator: ru.landgrafhomyak.serdha.api.v0.dml.CreateSelectQueryScope<QueryUserWrapper>): QueryUserWrapper
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates 'SELECT' query.
|
* Creates 'SELECT' query.
|
||||||
@ -117,7 +95,7 @@ public interface CreateModuleScope {
|
|||||||
*
|
*
|
||||||
* @see CreateModuleScope.createTemporarySelectQuery
|
* @see CreateModuleScope.createTemporarySelectQuery
|
||||||
*/
|
*/
|
||||||
public fun <QueryUserWrapper : Any> createSelectQuery(initializer: SelectQueryCreator<QueryUserWrapper>): SelectQuery<QueryUserWrapper>
|
public fun <QueryUserWrapper : Any> createSelectQuery(initializer: SelectQuery.Creator<QueryUserWrapper>): SelectQuery<QueryUserWrapper>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates 'SELECT' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
* Creates 'SELECT' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||||
@ -131,30 +109,8 @@ public interface CreateModuleScope {
|
|||||||
*
|
*
|
||||||
* @see CreateModuleScope.createSelectQuery
|
* @see CreateModuleScope.createSelectQuery
|
||||||
*/
|
*/
|
||||||
public fun <QueryUserWrapper : Any> createTemporarySelectQuery(initializer: SelectQueryCreator<QueryUserWrapper>): SelectQuery<QueryUserWrapper>
|
public fun <QueryUserWrapper : Any> createTemporarySelectQuery(initializer: SelectQuery.Creator<QueryUserWrapper>): SelectQuery<QueryUserWrapper>
|
||||||
|
|
||||||
/**
|
|
||||||
* Functional interface for creating 'INSERT ... VALUES' query.
|
|
||||||
*
|
|
||||||
* Can be implemented like a companion object that just calls [QueryUserWrapper]'s constructor with the same or similar signature.
|
|
||||||
*
|
|
||||||
* @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.createInsertQuery
|
|
||||||
*/
|
|
||||||
public interface InsertQueryCreator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
|
||||||
/**
|
|
||||||
* Scope method that uses [creator] to create a query.
|
|
||||||
*
|
|
||||||
* @param table Descriptor of table to which values will be inserted.
|
|
||||||
* @param creator Object with descriptor providers and factories.
|
|
||||||
* @return User's object with query-related descriptors for future access.
|
|
||||||
*
|
|
||||||
* @see CreateModuleScope.createInsertQuery
|
|
||||||
*/
|
|
||||||
public fun createInsert(table: Table<TableUserExtension, *>, creator: CreateInsertQueryScope<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates 'INSERT ... VALUES' query.
|
* Creates 'INSERT ... VALUES' query.
|
||||||
@ -168,7 +124,7 @@ public interface CreateModuleScope {
|
|||||||
*
|
*
|
||||||
* @see CreateModuleScope.createTemporaryInsertQuery
|
* @see CreateModuleScope.createTemporaryInsertQuery
|
||||||
*/
|
*/
|
||||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createInsertQuery(table: Table<TableUserExtension, *>, initializer: InsertQueryCreator<TableUserExtension, QueryUserWrapper>): InsertQuery<QueryUserWrapper>
|
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createInsertQuery(table: Table<TableUserExtension, *>, initializer: InsertQuery.Creator<TableUserExtension, QueryUserWrapper>): InsertQuery<QueryUserWrapper>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates 'INSERT ... VALUES' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
* Creates 'INSERT ... VALUES' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||||
@ -183,30 +139,7 @@ public interface CreateModuleScope {
|
|||||||
*
|
*
|
||||||
* @see CreateModuleScope.createInsertQuery
|
* @see CreateModuleScope.createInsertQuery
|
||||||
*/
|
*/
|
||||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryInsertQuery(table: Table<TableUserExtension, *>, initializer: InsertQueryCreator<TableUserExtension, QueryUserWrapper>): InsertQuery<QueryUserWrapper>
|
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryInsertQuery(table: Table<TableUserExtension, *>, initializer: InsertQuery.Creator<TableUserExtension, QueryUserWrapper>): InsertQuery<QueryUserWrapper>
|
||||||
|
|
||||||
/**
|
|
||||||
* Functional interface for creating 'INSERT ... FROM' query.
|
|
||||||
*
|
|
||||||
* Can be implemented like a companion object that just calls [QueryUserWrapper]'s constructor with the same or similar signature.
|
|
||||||
*
|
|
||||||
* @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.createCopyQuery
|
|
||||||
*/
|
|
||||||
public interface CopyQueryCreator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
|
||||||
/**
|
|
||||||
* Scope method that uses [creator] to create a query.
|
|
||||||
*
|
|
||||||
* @param table Descriptor of table to which values will be inserted.
|
|
||||||
* @param creator Object with descriptor providers and factories.
|
|
||||||
* @return User's object with query-related descriptors for future access.
|
|
||||||
*
|
|
||||||
* @see CreateModuleScope.createCopyQuery
|
|
||||||
*/
|
|
||||||
public fun createCopy(table: Table<TableUserExtension, *>, creator: CreateCopyQueryScope<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates 'INSERT ... FROM' query.
|
* Creates 'INSERT ... FROM' query.
|
||||||
@ -219,7 +152,7 @@ public interface CreateModuleScope {
|
|||||||
*
|
*
|
||||||
* @see CreateModuleScope.createTemporaryCopyQuery
|
* @see CreateModuleScope.createTemporaryCopyQuery
|
||||||
*/
|
*/
|
||||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createCopyQuery(table: Table<TableUserExtension, *>, initializer: CopyQueryCreator<TableUserExtension, QueryUserWrapper>): CopyQuery<QueryUserWrapper>
|
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createCopyQuery(table: Table<TableUserExtension, *>, initializer: CopyQuery.Creator<TableUserExtension, QueryUserWrapper>): CopyQuery<QueryUserWrapper>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates 'INSERT ... FROM' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
* Creates 'INSERT ... FROM' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||||
@ -233,30 +166,7 @@ public interface CreateModuleScope {
|
|||||||
*
|
*
|
||||||
* @see CreateModuleScope.createCopyQuery
|
* @see CreateModuleScope.createCopyQuery
|
||||||
*/
|
*/
|
||||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryCopyQuery(table: Table<TableUserExtension, *>, initializer: CopyQueryCreator<TableUserExtension, QueryUserWrapper>): CopyQuery<QueryUserWrapper>
|
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryCopyQuery(table: Table<TableUserExtension, *>, initializer: CopyQuery.Creator<TableUserExtension, QueryUserWrapper>): CopyQuery<QueryUserWrapper>
|
||||||
|
|
||||||
/**
|
|
||||||
* Functional interface for creating 'UPDATE' query.
|
|
||||||
*
|
|
||||||
* Can be implemented like a companion object that just calls [QueryUserWrapper]'s constructor with the same or similar signature.
|
|
||||||
*
|
|
||||||
* @param TableUserExtension User's type with descriptors related to table, whose rows will be updated.
|
|
||||||
* @param QueryUserWrapper User's type with descriptors related to query.
|
|
||||||
*
|
|
||||||
* @see CreateModuleScope.createUpdateQuery
|
|
||||||
*/
|
|
||||||
public interface UpdateQueryCreator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
|
||||||
/**
|
|
||||||
* Scope method that uses [creator] to create a query.
|
|
||||||
*
|
|
||||||
* @param table Descriptor of table which rows will be updated.
|
|
||||||
* @param creator Object with descriptor providers and factories.
|
|
||||||
* @return User's object with query-related descriptors for future access.
|
|
||||||
*
|
|
||||||
* @see CreateModuleScope.createUpdateQuery
|
|
||||||
*/
|
|
||||||
public fun createUpdate(table: Table<TableUserExtension, *>, creator: ru.landgrafhomyak.serdha.api.v0.dml.CreateUpdateQueryScope<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates 'UPDATE' query.
|
* Creates 'UPDATE' query.
|
||||||
@ -269,7 +179,7 @@ public interface CreateModuleScope {
|
|||||||
*
|
*
|
||||||
* @see CreateModuleScope.createTemporaryUpdateQuery
|
* @see CreateModuleScope.createTemporaryUpdateQuery
|
||||||
*/
|
*/
|
||||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createUpdateQuery(table: Table<TableUserExtension, *>, initializer: UpdateQueryCreator<TableUserExtension, QueryUserWrapper>): UpdateQuery<QueryUserWrapper>
|
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createUpdateQuery(table: Table<TableUserExtension, *>, initializer: UpdateQuery.Creator<TableUserExtension, QueryUserWrapper>): UpdateQuery<QueryUserWrapper>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates 'UPDATE' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
* Creates 'UPDATE' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||||
@ -283,30 +193,8 @@ public interface CreateModuleScope {
|
|||||||
*
|
*
|
||||||
* @see CreateModuleScope.createUpdateQuery
|
* @see CreateModuleScope.createUpdateQuery
|
||||||
*/
|
*/
|
||||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryUpdateQuery(table: Table<TableUserExtension, *>, initializer: UpdateQueryCreator<TableUserExtension, QueryUserWrapper>): UpdateQuery<QueryUserWrapper>
|
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryUpdateQuery(table: Table<TableUserExtension, *>, initializer: UpdateQuery.Creator<TableUserExtension, QueryUserWrapper>): UpdateQuery<QueryUserWrapper>
|
||||||
|
|
||||||
/**
|
|
||||||
* Functional interface for creating 'DELETE' query.
|
|
||||||
*
|
|
||||||
* Can be implemented like a companion object that just calls [QueryUserWrapper]'s constructor with the same or similar signature.
|
|
||||||
*
|
|
||||||
* @param TableUserExtension User's type with descriptors related to table from which data will be deleted.
|
|
||||||
* @param QueryUserWrapper User's type with descriptors related to query.
|
|
||||||
*
|
|
||||||
* @see CreateModuleScope.createDeleteQuery
|
|
||||||
*/
|
|
||||||
public interface DeleteQueryCreator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
|
||||||
/**
|
|
||||||
* Scope method that uses [creator] to create a query.
|
|
||||||
*
|
|
||||||
* @param table Descriptor of table from which data will be deleted.
|
|
||||||
* @param creator Object with descriptor providers and factories.
|
|
||||||
* @return User's object with query-related descriptors for future access.
|
|
||||||
*
|
|
||||||
* @see CreateModuleScope.createDeleteQuery
|
|
||||||
*/
|
|
||||||
public fun createDelete(table: Table<TableUserExtension, *>, creator: ru.landgrafhomyak.serdha.api.v0.dml.CreateDeleteQueryScope<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates 'DELETE' query.
|
* Creates 'DELETE' query.
|
||||||
@ -319,7 +207,7 @@ public interface CreateModuleScope {
|
|||||||
*
|
*
|
||||||
* @see CreateModuleScope.createTemporaryDeleteQuery
|
* @see CreateModuleScope.createTemporaryDeleteQuery
|
||||||
*/
|
*/
|
||||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createDeleteQuery(table: Table<TableUserExtension, *>, initializer: DeleteQueryCreator<TableUserExtension, QueryUserWrapper>): DeleteQuery<QueryUserWrapper>
|
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createDeleteQuery(table: Table<TableUserExtension, *>, initializer: DeleteQuery.Creator<TableUserExtension, QueryUserWrapper>): DeleteQuery<QueryUserWrapper>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates 'DELETE' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
* Creates 'DELETE' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||||
@ -333,7 +221,7 @@ public interface CreateModuleScope {
|
|||||||
*
|
*
|
||||||
* @see CreateModuleScope.createDeleteQuery
|
* @see CreateModuleScope.createDeleteQuery
|
||||||
*/
|
*/
|
||||||
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryDeleteQuery(table: Table<TableUserExtension, *>, initializer: DeleteQueryCreator<TableUserExtension, QueryUserWrapper>): DeleteQuery<QueryUserWrapper>
|
public fun <TableUserExtension : Any, QueryUserWrapper : Any> createTemporaryDeleteQuery(table: Table<TableUserExtension, *>, initializer: DeleteQuery.Creator<TableUserExtension, QueryUserWrapper>): DeleteQuery<QueryUserWrapper>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Replaces [specified namespace][rootNs] with schema provided by [template].
|
* Replaces [specified namespace][rootNs] with schema provided by [template].
|
||||||
|
@ -1,5 +1,40 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.dml
|
package ru.landgrafhomyak.serdha.api.v0.dml
|
||||||
|
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.Expression
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.module.CreateModuleScope
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Column
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseType
|
||||||
|
|
||||||
public interface CopyQuery<QueryUserExtension : Any> {
|
public interface CopyQuery<QueryUserExtension : Any> {
|
||||||
public val userExtension: QueryUserExtension
|
public val userExtension: QueryUserExtension
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Functional interface for creating 'INSERT ... FROM' query.
|
||||||
|
*
|
||||||
|
* Can be implemented like a companion object that just calls [QueryUserWrapper]'s constructor with the same or similar signature.
|
||||||
|
*
|
||||||
|
* @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.createCopyQuery
|
||||||
|
* @see CreateModuleScope.createTemporaryCopyQuery
|
||||||
|
*/
|
||||||
|
public interface Creator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||||
|
/**
|
||||||
|
* Scope method that uses [creator] to create a query.
|
||||||
|
*
|
||||||
|
* @param table Descriptor of table to which values will be inserted.
|
||||||
|
* @param creator Object with descriptor providers and factories.
|
||||||
|
* @return User's object with query-related descriptors for future access.
|
||||||
|
*
|
||||||
|
* @see CreateModuleScope.createCopyQuery
|
||||||
|
* @see CreateModuleScope.createTemporaryCopyQuery
|
||||||
|
*/
|
||||||
|
public fun createCopy(table: Table<TableUserExtension, *>, creator: Scope<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||||
|
|
||||||
|
public interface Scope<TargetTableUserExtension : Any, QueryUserExtension : Any> :_CreateInsertOrCopyQueryScope<TargetTableUserExtension, QueryUserExtension> {
|
||||||
|
public fun <RT, DT : DatabaseType<RT>> insert(column: Column<RT, DT, TargetTableUserExtension>, expression: Expression<RT, DT, QueryUserExtension>)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,9 +0,0 @@
|
|||||||
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.DatabaseType
|
|
||||||
|
|
||||||
public interface CreateCopyQueryScope<TargetTableUserExtension : Any, QueryUserExtension : Any> :_CreateInsertOrCopyQueryScope<TargetTableUserExtension, QueryUserExtension> {
|
|
||||||
public fun <RT, DT : DatabaseType<RT>> insert(column: Column<RT, DT, TargetTableUserExtension>, expression: Expression<RT, DT, QueryUserExtension>)
|
|
||||||
}
|
|
@ -1,14 +0,0 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.dml
|
|
||||||
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.Expression
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseType
|
|
||||||
|
|
||||||
public interface CreateDeleteQueryScope<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonCreateQueryScope<QueryUserExtension> {
|
|
||||||
public val targetTable: SelectedTable<TargetTableUserExtension, QueryUserExtension>
|
|
||||||
|
|
||||||
public fun where(expression: Expression<Boolean, DatabaseType.BOOLEAN, QueryUserExtension>)
|
|
||||||
|
|
||||||
public fun limit(size: UInt)
|
|
||||||
|
|
||||||
public val returning: _CommonCreateQueryScope._ReturningClauseScope<QueryUserExtension>
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
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.DatabaseType
|
|
||||||
|
|
||||||
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 <RT, DT : DatabaseType<RT>> dataParam(name: String, type: DT): InputParam<RT, DT, DataParam<QueryUserExtension>>
|
|
||||||
|
|
||||||
public fun <RT, DT : DatabaseType<RT>> insertParam(
|
|
||||||
column: Column<RT, DT, TargetTableUserExtension>,
|
|
||||||
paramName: String = column.name,
|
|
||||||
): InputParam<RT, DT, DataParam<QueryUserExtension>>
|
|
||||||
|
|
||||||
public fun <RuntimeType, DT : DatabaseType<RuntimeType>> insert(column: Column<RuntimeType, DT, TargetTableUserExtension>, expression: Expression<RuntimeType, DT, DataParam<QueryUserExtension>>)
|
|
||||||
}
|
|
@ -1,13 +0,0 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.dml
|
|
||||||
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.Expression
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseType
|
|
||||||
|
|
||||||
public interface CreateSelectQueryScope<QueryUserExtension : Any> : _CommonCreateQueryScope<QueryUserExtension>, _CommonCreateQueryScope._ReturningClauseScope<QueryUserExtension>{
|
|
||||||
public fun where(expression: Expression<Boolean, DatabaseType.BOOLEAN, QueryUserExtension>)
|
|
||||||
|
|
||||||
public fun limit(size: UInt)
|
|
||||||
|
|
||||||
@Suppress("SpellCheckingInspection")
|
|
||||||
public fun offsetedLimit(offset: ULong, size: UInt)
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
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.DatabaseType
|
|
||||||
|
|
||||||
public interface CreateUpdateQueryScope<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonCreateQueryScope<QueryUserExtension> {
|
|
||||||
public val targetTable: SelectedTable<TargetTableUserExtension, QueryUserExtension>
|
|
||||||
|
|
||||||
public fun <RuntimeType, DT : DatabaseType<RuntimeType>> selectOldColumnValue(c: Column<RuntimeType, DT, TargetTableUserExtension>): Expression<RuntimeType, DT, QueryUserExtension>
|
|
||||||
|
|
||||||
public fun <RuntimeType, DT : DatabaseType<RuntimeType>> updateColumn(c: Column<RuntimeType, DT, TargetTableUserExtension>, e: Expression<RuntimeType, DT, QueryUserExtension>)
|
|
||||||
|
|
||||||
public fun where(expression: Expression<Boolean, DatabaseType.BOOLEAN, QueryUserExtension>)
|
|
||||||
|
|
||||||
public fun limit(size: UInt)
|
|
||||||
|
|
||||||
@Suppress("SpellCheckingInspection")
|
|
||||||
public fun offsetedLimit(offset: ULong, size: UInt)
|
|
||||||
|
|
||||||
public val returning: _CommonCreateQueryScope._ReturningClauseScope<QueryUserExtension>
|
|
||||||
}
|
|
@ -1,5 +1,45 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.dml
|
package ru.landgrafhomyak.serdha.api.v0.dml
|
||||||
|
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.Expression
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.module.CreateModuleScope
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseType
|
||||||
|
|
||||||
public interface DeleteQuery<QueryUserExtension : Any> : _CommonCreateQueryScope.CanBeSubquery<QueryUserExtension> {
|
public interface DeleteQuery<QueryUserExtension : Any> : _CommonCreateQueryScope.CanBeSubquery<QueryUserExtension> {
|
||||||
public val userExtension: QueryUserExtension
|
public val userExtension: QueryUserExtension
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Functional interface for creating 'DELETE' query.
|
||||||
|
*
|
||||||
|
* Can be implemented like a companion object that just calls [QueryUserWrapper]'s constructor with the same or similar signature.
|
||||||
|
*
|
||||||
|
* @param TableUserExtension User's type with descriptors related to table from which data will be deleted.
|
||||||
|
* @param QueryUserWrapper User's type with descriptors related to query.
|
||||||
|
*
|
||||||
|
* @see CreateModuleScope.createDeleteQuery
|
||||||
|
* @see CreateModuleScope.createTemporaryDeleteQuery
|
||||||
|
*/
|
||||||
|
public interface Creator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||||
|
/**
|
||||||
|
* Scope method that uses [creator] to create a query.
|
||||||
|
*
|
||||||
|
* @param table Descriptor of table from which data will be deleted.
|
||||||
|
* @param creator Object with descriptor providers and factories.
|
||||||
|
* @return User's object with query-related descriptors for future access.
|
||||||
|
*
|
||||||
|
* @see CreateModuleScope.createDeleteQuery
|
||||||
|
* @see CreateModuleScope.createTemporaryDeleteQuery
|
||||||
|
*/
|
||||||
|
public fun createDelete(table: Table<TableUserExtension, *>, creator: Scope<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||||
|
|
||||||
|
public interface Scope<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonCreateQueryScope<QueryUserExtension> {
|
||||||
|
public val targetTable: SelectedTable<TargetTableUserExtension, QueryUserExtension>
|
||||||
|
|
||||||
|
public fun where(expression: Expression<Boolean, DatabaseType.BOOLEAN, QueryUserExtension>)
|
||||||
|
|
||||||
|
public fun limit(size: UInt)
|
||||||
|
|
||||||
|
public val returning: _CommonCreateQueryScope._ReturningClauseScope<QueryUserExtension>
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,5 +1,51 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.dml
|
package ru.landgrafhomyak.serdha.api.v0.dml
|
||||||
|
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.Expression
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.module.CreateModuleScope
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Column
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseType
|
||||||
|
|
||||||
public interface InsertQuery<QueryUserExtension : Any> {
|
public interface InsertQuery<QueryUserExtension : Any> {
|
||||||
public val userExtension: QueryUserExtension
|
public val userExtension: QueryUserExtension
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Functional interface for creating 'INSERT ... VALUES' query.
|
||||||
|
*
|
||||||
|
* Can be implemented like a companion object that just calls [QueryUserWrapper]'s constructor with the same or similar signature.
|
||||||
|
*
|
||||||
|
* @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.createInsertQuery
|
||||||
|
* @see CreateModuleScope.createTemporaryInsertQuery
|
||||||
|
*/
|
||||||
|
public interface Creator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||||
|
/**
|
||||||
|
* Scope method that uses [creator] to create a query.
|
||||||
|
*
|
||||||
|
* @param table Descriptor of table to which values will be inserted.
|
||||||
|
* @param creator Object with descriptor providers and factories.
|
||||||
|
* @return User's object with query-related descriptors for future access.
|
||||||
|
*
|
||||||
|
* @see CreateModuleScope.createInsertQuery
|
||||||
|
* @see CreateModuleScope.createTemporaryInsertQuery
|
||||||
|
*/
|
||||||
|
public fun createInsert(table: Table<TableUserExtension, *>, creator: Scope<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||||
|
|
||||||
|
public interface Scope<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 <RT, DT : DatabaseType<RT>> dataParam(name: String, type: DT): InputParam<RT, DT, DataParam<QueryUserExtension>>
|
||||||
|
|
||||||
|
public fun <RT, DT : DatabaseType<RT>> insertParam(
|
||||||
|
column: Column<RT, DT, TargetTableUserExtension>,
|
||||||
|
paramName: String = column.name,
|
||||||
|
): InputParam<RT, DT, DataParam<QueryUserExtension>>
|
||||||
|
|
||||||
|
public fun <RuntimeType, DT : DatabaseType<RuntimeType>> insert(column: Column<RuntimeType, DT, TargetTableUserExtension>, expression: Expression<RuntimeType, DT, DataParam<QueryUserExtension>>)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,9 +1,45 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.dml
|
package ru.landgrafhomyak.serdha.api.v0.dml
|
||||||
|
|
||||||
public interface SelectQuery<QueryUserExtension : Any>: _CommonCreateQueryScope.CanBeSubquery<QueryUserExtension> {
|
import ru.landgrafhomyak.serdha.api.v0.Expression
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseType
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.module.CreateModuleScope
|
||||||
|
|
||||||
|
public interface SelectQuery<QueryUserExtension : Any> : _CommonCreateQueryScope.CanBeSubquery<QueryUserExtension> {
|
||||||
public val userExtension: QueryUserExtension
|
public val userExtension: QueryUserExtension
|
||||||
|
|
||||||
public enum class Order {
|
public enum class Order {
|
||||||
ASC, DESC
|
ASC, DESC
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Functional interface for creating 'SELECT' query.
|
||||||
|
*
|
||||||
|
* Can be implemented like a companion object that just calls [QueryUserWrapper]'s constructor with the same or similar signature.
|
||||||
|
*
|
||||||
|
* @param QueryUserWrapper User's type with descriptors related to query.
|
||||||
|
*
|
||||||
|
* @see CreateModuleScope.createSelectQuery
|
||||||
|
* @see CreateModuleScope.createTemporarySelectQuery
|
||||||
|
*/
|
||||||
|
public interface Creator<QueryUserWrapper : Any> {
|
||||||
|
/**
|
||||||
|
* Scope method that uses [creator] to create a query.
|
||||||
|
*
|
||||||
|
* @param creator Object with descriptor providers and factories.
|
||||||
|
* @return User's object with query-related descriptors for future access.
|
||||||
|
*
|
||||||
|
* @see CreateModuleScope.createSelectQuery
|
||||||
|
* @see CreateModuleScope.createTemporarySelectQuery
|
||||||
|
*/
|
||||||
|
public fun createSelect(creator: Scope<QueryUserWrapper>): QueryUserWrapper
|
||||||
|
|
||||||
|
public interface Scope<QueryUserExtension : Any> : _CommonCreateQueryScope<QueryUserExtension>, _CommonCreateQueryScope._ReturningClauseScope<QueryUserExtension> {
|
||||||
|
public fun where(expression: Expression<Boolean, DatabaseType.BOOLEAN, QueryUserExtension>)
|
||||||
|
|
||||||
|
public fun limit(size: UInt)
|
||||||
|
|
||||||
|
@Suppress("SpellCheckingInspection")
|
||||||
|
public fun offsetedLimit(offset: ULong, size: UInt)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,5 +1,53 @@
|
|||||||
package ru.landgrafhomyak.serdha.api.v0.dml
|
package ru.landgrafhomyak.serdha.api.v0.dml
|
||||||
|
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.Expression
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.module.CreateModuleScope
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Column
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
|
||||||
|
import ru.landgrafhomyak.serdha.api.v0.ddl.types.DatabaseType
|
||||||
|
|
||||||
public interface UpdateQuery<QueryUserExtension : Any> : _CommonCreateQueryScope.CanBeSubquery<QueryUserExtension> {
|
public interface UpdateQuery<QueryUserExtension : Any> : _CommonCreateQueryScope.CanBeSubquery<QueryUserExtension> {
|
||||||
public val userExtension: QueryUserExtension
|
public val userExtension: QueryUserExtension
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Functional interface for creating 'UPDATE' query.
|
||||||
|
*
|
||||||
|
* Can be implemented like a companion object that just calls [QueryUserWrapper]'s constructor with the same or similar signature.
|
||||||
|
*
|
||||||
|
* @param TableUserExtension User's type with descriptors related to table, whose rows will be updated.
|
||||||
|
* @param QueryUserWrapper User's type with descriptors related to query.
|
||||||
|
*
|
||||||
|
* @see CreateModuleScope.createUpdateQuery
|
||||||
|
* @see CreateModuleScope.createTemporaryUpdateQuery
|
||||||
|
*/
|
||||||
|
public interface Creator<TableUserExtension : Any, QueryUserWrapper : Any> {
|
||||||
|
/**
|
||||||
|
* Scope method that uses [creator] to create a query.
|
||||||
|
*
|
||||||
|
* @param table Descriptor of table which rows will be updated.
|
||||||
|
* @param creator Object with descriptor providers and factories.
|
||||||
|
* @return User's object with query-related descriptors for future access.
|
||||||
|
*
|
||||||
|
* @see CreateModuleScope.createUpdateQuery
|
||||||
|
* @see CreateModuleScope.createTemporaryUpdateQuery
|
||||||
|
*/
|
||||||
|
public fun createUpdate(table: Table<TableUserExtension, *>, creator: Scope<TableUserExtension, QueryUserWrapper>): QueryUserWrapper
|
||||||
|
|
||||||
|
public interface Scope<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonCreateQueryScope<QueryUserExtension> {
|
||||||
|
public val targetTable: SelectedTable<TargetTableUserExtension, QueryUserExtension>
|
||||||
|
|
||||||
|
public fun <RuntimeType, DT : DatabaseType<RuntimeType>> selectOldColumnValue(c: Column<RuntimeType, DT, TargetTableUserExtension>): Expression<RuntimeType, DT, QueryUserExtension>
|
||||||
|
|
||||||
|
public fun <RuntimeType, DT : DatabaseType<RuntimeType>> updateColumn(c: Column<RuntimeType, DT, TargetTableUserExtension>, e: Expression<RuntimeType, DT, QueryUserExtension>)
|
||||||
|
|
||||||
|
public fun where(expression: Expression<Boolean, DatabaseType.BOOLEAN, QueryUserExtension>)
|
||||||
|
|
||||||
|
public fun limit(size: UInt)
|
||||||
|
|
||||||
|
@Suppress("SpellCheckingInspection")
|
||||||
|
public fun offsetedLimit(offset: ULong, size: UInt)
|
||||||
|
|
||||||
|
public val returning: _CommonCreateQueryScope._ReturningClauseScope<QueryUserExtension>
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -35,14 +35,14 @@ public interface _CommonCreateQueryScope<QueryUserExtension : Any> {
|
|||||||
public fun <SubqueryUserExtension : Any> _selectCopy(
|
public fun <SubqueryUserExtension : Any> _selectCopy(
|
||||||
q: CopyQuery<SubqueryUserExtension>,
|
q: CopyQuery<SubqueryUserExtension>,
|
||||||
p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit,
|
p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit,
|
||||||
r: (_ParametersSetter._Multi<CreateInsertQueryScope.DataParam<SubqueryUserExtension>, Nothing>) -> Unit
|
r: (_ParametersSetter._Multi<InsertQuery.Creator.Scope.DataParam<SubqueryUserExtension>, Nothing>) -> Unit
|
||||||
): SelectedDiff<SubqueryUserExtension, QueryUserExtension>
|
): SelectedDiff<SubqueryUserExtension, QueryUserExtension>
|
||||||
|
|
||||||
@OptIn(LowLevelApi::class)
|
@OptIn(LowLevelApi::class)
|
||||||
public fun <SubqueryUserExtension : Any> selectCopyOne(
|
public fun <SubqueryUserExtension : Any> selectCopyOne(
|
||||||
q: CopyQuery<SubqueryUserExtension>,
|
q: CopyQuery<SubqueryUserExtension>,
|
||||||
p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit,
|
p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit,
|
||||||
r: (ParametersSetter<CreateInsertQueryScope.DataParam<SubqueryUserExtension>>) -> Unit
|
r: (ParametersSetter<InsertQuery.Creator.Scope.DataParam<SubqueryUserExtension>>) -> Unit
|
||||||
): SelectedDiff<SubqueryUserExtension, QueryUserExtension> =
|
): SelectedDiff<SubqueryUserExtension, QueryUserExtension> =
|
||||||
this._selectCopy(q, p, r)
|
this._selectCopy(q, p, r)
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ public interface _CommonCreateQueryScope<QueryUserExtension : Any> {
|
|||||||
q: CopyQuery<SubqueryUserExtension>,
|
q: CopyQuery<SubqueryUserExtension>,
|
||||||
p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit,
|
p: (SubqueryParametersSetter<SubqueryUserExtension, QueryUserExtension>) -> Unit,
|
||||||
data: Iterable<T>,
|
data: Iterable<T>,
|
||||||
r: (T, ParametersSetter<CreateInsertQueryScope.DataParam<SubqueryUserExtension>>) -> Unit
|
r: (T, ParametersSetter<InsertQuery.Creator.Scope.DataParam<SubqueryUserExtension>>) -> Unit
|
||||||
): SelectedDiff<SubqueryUserExtension, QueryUserExtension> =
|
): SelectedDiff<SubqueryUserExtension, QueryUserExtension> =
|
||||||
this._selectCopy(q, p) { rr -> for (e in data) r(e, rr) }
|
this._selectCopy(q, p) { rr -> for (e in data) r(e, rr) }
|
||||||
|
|
||||||
|
@ -5,10 +5,8 @@ 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.types.RowId
|
||||||
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
|
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.CopyQuery
|
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.DeleteQuery
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml._CreateInsertOrCopyQueryScope
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.UpdateQuery
|
import ru.landgrafhomyak.serdha.api.v0.dml.UpdateQuery
|
||||||
|
|
||||||
@ -23,7 +21,7 @@ public interface SynchronizedDatabase<DatabaseUserExtension : Any> : Module<Data
|
|||||||
|
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
@LowLevelApi
|
@LowLevelApi
|
||||||
public suspend fun <QueryUserWrapper : Any> _autoTransactedInsert(query: InsertQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ParametersSetter._Multi<CreateInsertQueryScope.DataParam<QueryUserWrapper>, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>>
|
public suspend fun <QueryUserWrapper : Any> _autoTransactedInsert(query: InsertQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ParametersSetter._Multi<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>>
|
||||||
|
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
@LowLevelApi
|
@LowLevelApi
|
||||||
|
@ -2,10 +2,8 @@ package ru.landgrafhomyak.serdha.api.v0.runtime
|
|||||||
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.CopyQuery
|
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.DeleteQuery
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml._CreateInsertOrCopyQueryScope
|
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.UpdateQuery
|
import ru.landgrafhomyak.serdha.api.v0.dml.UpdateQuery
|
||||||
|
|
||||||
@ -16,7 +14,7 @@ public interface Transaction {
|
|||||||
|
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
@LowLevelApi
|
@LowLevelApi
|
||||||
public fun <QueryUserWrapper : Any> _insert(compiledQuery: InsertQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ParametersSetter._Multi<CreateInsertQueryScope.DataParam<QueryUserWrapper>, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>>
|
public fun <QueryUserWrapper : Any> _insert(compiledQuery: InsertQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ParametersSetter._Multi<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>>
|
||||||
|
|
||||||
@Suppress("FunctionName")
|
@Suppress("FunctionName")
|
||||||
@LowLevelApi
|
@LowLevelApi
|
||||||
|
@ -7,7 +7,6 @@ import kotlin.contracts.contract
|
|||||||
import kotlin.jvm.JvmName
|
import kotlin.jvm.JvmName
|
||||||
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.CopyQuery
|
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.DeleteQuery
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
import ru.landgrafhomyak.serdha.api.v0.dml.InsertQuery
|
||||||
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
import ru.landgrafhomyak.serdha.api.v0.dml.SelectQuery
|
||||||
@ -296,10 +295,10 @@ public suspend inline fun <QueryUserWrapper : Any, R> SynchronizedDatabase<*>.au
|
|||||||
@OptIn(LowLevelApi::class)
|
@OptIn(LowLevelApi::class)
|
||||||
internal suspend inline fun <Q : Any, T> _wrapInsertWithLambdas(
|
internal suspend inline fun <Q : Any, T> _wrapInsertWithLambdas(
|
||||||
compiledQuery: InsertQuery<Q>,
|
compiledQuery: InsertQuery<Q>,
|
||||||
queryGetter: () -> _ParametersSetter<Q, _ParametersSetter._Multi<CreateInsertQueryScope.DataParam<Q>, _ResultSet<Q, _ResultSet<Q, Unit>>?>>,
|
queryGetter: () -> _ParametersSetter<Q, _ParametersSetter._Multi<InsertQuery.Creator.Scope.DataParam<Q>, _ResultSet<Q, _ResultSet<Q, Unit>>?>>,
|
||||||
parameters: (ParametersSetter<Q>) -> Unit,
|
parameters: (ParametersSetter<Q>) -> Unit,
|
||||||
data: Iterable<T>,
|
data: Iterable<T>,
|
||||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.DataParam<Q>>) -> Unit,
|
rowFormatter: (T, ParametersSetter<InsertQuery.Creator.Scope.DataParam<Q>>) -> Unit,
|
||||||
hasReturning: Boolean,
|
hasReturning: Boolean,
|
||||||
returningInserted: (_ResultSet<Q, *>) -> Unit,
|
returningInserted: (_ResultSet<Q, *>) -> Unit,
|
||||||
returningUpdated: (_ResultSet<Q, *>) -> Unit,
|
returningUpdated: (_ResultSet<Q, *>) -> Unit,
|
||||||
@ -347,7 +346,7 @@ public suspend inline fun <QueryUserWrapper : Any, T> Transaction.insert(
|
|||||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||||
data: Iterable<T>,
|
data: Iterable<T>,
|
||||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
rowFormatter: (T, ParametersSetter<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||||
) {
|
) {
|
||||||
contract {
|
contract {
|
||||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||||
@ -371,7 +370,7 @@ public suspend inline fun <QueryUserWrapper : Any, T> SynchronizedDatabase<*>.au
|
|||||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||||
data: Iterable<T>,
|
data: Iterable<T>,
|
||||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
rowFormatter: (T, ParametersSetter<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||||
) {
|
) {
|
||||||
contract {
|
contract {
|
||||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||||
@ -395,7 +394,7 @@ public suspend inline fun <QueryUserWrapper : Any, T> Transaction.insertReturnin
|
|||||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||||
data: Iterable<T>,
|
data: Iterable<T>,
|
||||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
rowFormatter: (T, ParametersSetter<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||||
insertedRows: (Row<QueryUserWrapper>) -> Unit,
|
insertedRows: (Row<QueryUserWrapper>) -> Unit,
|
||||||
updatedRows: (Row<QueryUserWrapper>) -> Unit,
|
updatedRows: (Row<QueryUserWrapper>) -> Unit,
|
||||||
) {
|
) {
|
||||||
@ -421,7 +420,7 @@ public suspend inline fun <QueryUserWrapper : Any, T> SynchronizedDatabase<*>.au
|
|||||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||||
data: Iterable<T>,
|
data: Iterable<T>,
|
||||||
rowFormatter: (T, ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
rowFormatter: (T, ParametersSetter<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||||
insertedRows: (Row<QueryUserWrapper>) -> Unit,
|
insertedRows: (Row<QueryUserWrapper>) -> Unit,
|
||||||
updatedRows: (Row<QueryUserWrapper>) -> Unit,
|
updatedRows: (Row<QueryUserWrapper>) -> Unit,
|
||||||
) {
|
) {
|
||||||
@ -461,7 +460,7 @@ internal object SingleIterable : Iterable<Unit>, Iterator<Unit> {
|
|||||||
public suspend inline fun <QueryUserWrapper : Any> Transaction.insertSingle(
|
public suspend inline fun <QueryUserWrapper : Any> Transaction.insertSingle(
|
||||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||||
rowData: (ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
rowData: (ParametersSetter<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||||
) {
|
) {
|
||||||
contract {
|
contract {
|
||||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||||
@ -484,7 +483,7 @@ public suspend inline fun <QueryUserWrapper : Any> Transaction.insertSingle(
|
|||||||
public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoTransactedInsertSingle(
|
public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoTransactedInsertSingle(
|
||||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||||
rowData: (ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit,
|
rowData: (ParametersSetter<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>>) -> Unit,
|
||||||
) {
|
) {
|
||||||
contract {
|
contract {
|
||||||
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
callsInPlace(parameters, InvocationKind.EXACTLY_ONCE)
|
||||||
@ -508,7 +507,7 @@ public suspend inline fun <QueryUserWrapper : Any> SynchronizedDatabase<*>.autoT
|
|||||||
public suspend inline fun <QueryUserWrapper : Any, R> Transaction.insertSingleReturning(
|
public suspend inline fun <QueryUserWrapper : Any, R> Transaction.insertSingleReturning(
|
||||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||||
rowData: (ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit = {},
|
rowData: (ParametersSetter<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>>) -> Unit = {},
|
||||||
insertedRows: (Row<QueryUserWrapper>) -> R,
|
insertedRows: (Row<QueryUserWrapper>) -> R,
|
||||||
updatedRows: (Row<QueryUserWrapper>) -> R
|
updatedRows: (Row<QueryUserWrapper>) -> R
|
||||||
): R {
|
): R {
|
||||||
@ -553,7 +552,7 @@ public suspend inline fun <QueryUserWrapper : Any, R> Transaction.insertSingleRe
|
|||||||
public suspend inline fun <QueryUserWrapper : Any, R> SynchronizedDatabase<*>.autoTransactedInsertSingleReturning(
|
public suspend inline fun <QueryUserWrapper : Any, R> SynchronizedDatabase<*>.autoTransactedInsertSingleReturning(
|
||||||
compiledQuery: InsertQuery<QueryUserWrapper>,
|
compiledQuery: InsertQuery<QueryUserWrapper>,
|
||||||
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
parameters: (ParametersSetter<QueryUserWrapper>) -> Unit = {},
|
||||||
rowData: (ParametersSetter<CreateInsertQueryScope.DataParam<QueryUserWrapper>>) -> Unit = {},
|
rowData: (ParametersSetter<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>>) -> Unit = {},
|
||||||
insertedRows: (Row<QueryUserWrapper>) -> R,
|
insertedRows: (Row<QueryUserWrapper>) -> R,
|
||||||
updatedRows: (Row<QueryUserWrapper>) -> R
|
updatedRows: (Row<QueryUserWrapper>) -> R
|
||||||
): R {
|
): R {
|
||||||
|
Loading…
Reference in New Issue
Block a user