Interface with methods for creating queries
This commit is contained in:
parent
50723c8811
commit
51c3e6869f
@ -1,11 +1,7 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.module
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.CopyQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.DeleteQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.InsertQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.SelectQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.UpdateQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.CreateQueryScope
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.SynchronizedDatabase
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.Transaction
|
||||
import ru.landgrafhomyak.serdha.api.v0.table.CreateTableScope
|
||||
@ -84,145 +80,11 @@ public interface CreateModuleScope {
|
||||
*/
|
||||
public fun <TableUserExtension : Any> createTransactionScopeTemporaryTable(namespace: Namespace, name: String, initializer: TableCreator<TableUserExtension>): Table<TableUserExtension, Nothing>
|
||||
|
||||
public val queries: CreateQueryScope
|
||||
|
||||
/**
|
||||
* Creates 'SELECT' query.
|
||||
*
|
||||
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed.
|
||||
*
|
||||
* @param QueryUserExtension User's type for containing query-related descriptors.
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createTemporarySelectQuery
|
||||
*/
|
||||
public fun <QueryUserExtension : Any> createSelectQuery(initializer: SelectQuery.Creator<QueryUserExtension>): SelectQuery<QueryUserExtension>
|
||||
public val temporarySubqueries: CreateQueryScope
|
||||
|
||||
/**
|
||||
* Creates 'SELECT' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||
* Using this function instead of [CreateModuleScope.createSelectQuery] may help the driver to optimize caches and runtime indexes.
|
||||
*
|
||||
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed.
|
||||
*
|
||||
* @param QueryUserExtension User's type for containing query-related descriptors.
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createSelectQuery
|
||||
*/
|
||||
public fun <QueryUserExtension : Any> createTemporarySelectQuery(initializer: SelectQuery.Creator<QueryUserExtension>): SelectQuery<QueryUserExtension>
|
||||
|
||||
|
||||
/**
|
||||
* Creates 'INSERT ... VALUES' query.
|
||||
*
|
||||
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed.
|
||||
*
|
||||
* @param TargetTableUserExtension User's type with descriptors related to table to which values will be inserted.
|
||||
* @param QueryUserExtension User's type for containing query-related descriptors.
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createTemporaryInsertQuery
|
||||
*/
|
||||
public fun <QueryUserExtension : Any, TargetTableUserExtension : Any> createInsertQuery(table: Table<TargetTableUserExtension, *>, initializer: InsertQuery.Creator<QueryUserExtension, TargetTableUserExtension>): InsertQuery<QueryUserExtension>
|
||||
|
||||
/**
|
||||
* Creates 'INSERT ... VALUES' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||
* 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.
|
||||
*
|
||||
* @param TargetTableUserExtension User's type with descriptors related to table to which values will be inserted.
|
||||
* @param QueryUserExtension User's type for containing query-related descriptors.
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createInsertQuery
|
||||
*/
|
||||
public fun <QueryUserExtension : Any, TargetTableUserExtension : Any> createTemporaryInsertQuery(table: Table<TargetTableUserExtension, *>, initializer: InsertQuery.Creator<QueryUserExtension, TargetTableUserExtension>): InsertQuery<QueryUserExtension>
|
||||
|
||||
/**
|
||||
* Creates 'INSERT ... FROM' query.
|
||||
*
|
||||
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed.
|
||||
*
|
||||
* @param TargetTableUserExtension User's type with descriptors related to table to which values will be inserted.
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createTemporaryCopyQuery
|
||||
*/
|
||||
public fun <QueryUserExtension : Any, TargetTableUserExtension : Any> createCopyQuery(table: Table<TargetTableUserExtension, *>, initializer: CopyQuery.Creator<QueryUserExtension, TargetTableUserExtension>): CopyQuery<QueryUserExtension>
|
||||
|
||||
/**
|
||||
* Creates 'INSERT ... FROM' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||
* 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.
|
||||
*
|
||||
* @param TargetTableUserExtension User's type with descriptors related to table to which values will be inserted.
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createCopyQuery
|
||||
*/
|
||||
public fun <QueryUserExtension : Any, TargetTableUserExtension : Any> createTemporaryCopyQuery(table: Table<TargetTableUserExtension, *>, initializer: CopyQuery.Creator<QueryUserExtension, TargetTableUserExtension>): CopyQuery<QueryUserExtension>
|
||||
|
||||
/**
|
||||
* Creates 'UPDATE' query.
|
||||
*
|
||||
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed.
|
||||
*
|
||||
* @param TargetTableUserExtension User's type with descriptors related to table to which values will be inserted.
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createTemporaryUpdateQuery
|
||||
*/
|
||||
public fun <QueryUserExtension : Any, TargetTableUserExtension : Any> createUpdateQuery(table: Table<TargetTableUserExtension, *>, initializer: UpdateQuery.Creator<QueryUserExtension, TargetTableUserExtension>): UpdateQuery<QueryUserExtension>
|
||||
|
||||
/**
|
||||
* Creates 'UPDATE' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||
* Using this function instead of [CreateModuleScope.createUpdateQuery] may help the driver to optimize caches and runtime indexes.
|
||||
*
|
||||
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed.
|
||||
*
|
||||
* @param TargetTableUserExtension User's type with descriptors related to table to which values will be inserted.
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createUpdateQuery
|
||||
*/
|
||||
public fun <QueryUserExtension : Any, TargetTableUserExtension : Any> createTemporaryUpdateQuery(table: Table<TargetTableUserExtension, *>, initializer: UpdateQuery.Creator<QueryUserExtension, TargetTableUserExtension>): UpdateQuery<QueryUserExtension>
|
||||
|
||||
|
||||
/**
|
||||
* Creates 'DELETE' query.
|
||||
*
|
||||
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed.
|
||||
*
|
||||
* @param TargetTableUserExtension User's type with descriptors related to table from which data will be deleted.
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createTemporaryDeleteQuery
|
||||
*/
|
||||
public fun <QueryUserExtension : Any, TargetTableUserExtension : Any> createDeleteQuery(table: Table<TargetTableUserExtension, *>, initializer: DeleteQuery.Creator<QueryUserExtension, TargetTableUserExtension>): DeleteQuery<QueryUserExtension>
|
||||
|
||||
/**
|
||||
* Creates 'DELETE' query accessible only while the module is [creating][ModuleTemplate.ModuleCreator] or [updating][ModuleTemplate.ModuleUpgrade].
|
||||
* Using this function instead of [CreateModuleScope.createDeleteQuery] may help the driver to optimize caches and runtime indexes.
|
||||
*
|
||||
* On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed.
|
||||
*
|
||||
* @param TargetTableUserExtension User's type with descriptors related to table from which data will be deleted.
|
||||
* @param initializer Query-related descriptors initializer.
|
||||
* @return Query descriptor.
|
||||
*
|
||||
* @see CreateModuleScope.createDeleteQuery
|
||||
*/
|
||||
public fun <QueryUserExtension : Any, TargetTableUserExtension : Any> createTemporaryDeleteQuery(table: Table<TargetTableUserExtension, *>, initializer: DeleteQuery.Creator<QueryUserExtension, TargetTableUserExtension>): DeleteQuery<QueryUserExtension>
|
||||
public val moduleConfiguringTemporaryQueries: CreateQueryScope
|
||||
|
||||
/**
|
||||
* Replaces [specified namespace][rootNs] with schema provided by [template].
|
||||
|
@ -0,0 +1,22 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.queries
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc._Selectable
|
||||
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
||||
|
||||
public interface CreateQueryScope {
|
||||
public fun <qUE : Any, tUE : Any> deleteSingleRow(table: Table<tUE, *>, creator: DeleteQuery.SingleRow.Creator<qUE, tUE>): DeleteQuery.SingleRow<qUE>
|
||||
public fun <qUE : Any, tUE : Any, sUE : Any> deleteFromSubquery(table: Table<tUE, *>, selector: _Selectable<sUE>, creator: DeleteQuery.FromSubquery.Creator<qUE, tUE, sUE>): DeleteQuery.FromSubquery<qUE>
|
||||
public fun <qUE : Any, tUE : Any> deleteMultipleRows(table: Table<tUE, *>, creator: DeleteQuery.MultipleRows.Creator<qUE, tUE>): DeleteQuery.MultipleRows<qUE>
|
||||
|
||||
public fun <qUE : Any, tUE : Any> insertSingleRow(table: Table<tUE, *>, creator: InsertQuery.SingleRow.Creator<qUE, tUE>): InsertQuery.SingleRow<qUE>
|
||||
public fun <qUE : Any, tUE : Any, sUE : Any> insertFromSubquery(table: Table<tUE, *>, selector: _Selectable<sUE>, creator: InsertQuery.FromSubquery.Creator<qUE, tUE, sUE>): InsertQuery.FromSubquery<qUE>
|
||||
public fun <qUE : Any, tUE : Any> insertMultipleRows(table: Table<tUE, *>, creator: InsertQuery.MultipleRows.Creator<qUE, tUE>): InsertQuery.MultipleRows<qUE>
|
||||
|
||||
public fun <qUE : Any, tUE : Any> select(table: _Selectable<tUE>, creator: SelectQuery.FromSubquery.Creator<qUE, tUE>): SelectQuery.FromSubquery<qUE>
|
||||
public fun <qUE : Any, lUE : Any, rUE : Any> selectWithJoin(left: _Selectable<lUE>, right: _Selectable<rUE>, creator: SelectQuery.WithJoin.Creator<qUE, lUE, rUE>): SelectQuery.WithJoin<qUE>
|
||||
|
||||
public fun <qUE : Any, tUE : Any> updateSingleRow(table: Table<tUE, *>, creator: UpdateQuery.SingleRow.Creator<qUE, tUE>): UpdateQuery.SingleRow<qUE>
|
||||
public fun <qUE : Any, tUE : Any, sUE : Any> updateFromSubquery(table: Table<tUE, *>, selector: _Selectable<sUE>, creator: UpdateQuery.FromSubquery.Creator<qUE, tUE, sUE>): UpdateQuery.FromSubquery<qUE>
|
||||
public fun <qUE : Any, tUE : Any> updateMultipleRows(table: Table<tUE, *>, creator: UpdateQuery.MultipleRows.Creator<qUE, tUE>): UpdateQuery.MultipleRows<qUE>
|
||||
|
||||
}
|
@ -38,7 +38,7 @@ public interface SelectQuery<QueryUserExtension : Any> : _Query<QueryUserExtensi
|
||||
}
|
||||
|
||||
public interface WithJoin<QueryUserExtension : Any> : SelectQuery<QueryUserExtension>, _Query.Params2Table<QueryUserExtension> {
|
||||
public interface JoinCreator<QueryUserExtension : Any, LeftTableUserExtension : Any, RightTableUserExtension : Any> : _CommonSelectCreatorScope<QueryUserExtension> {
|
||||
public interface Creator<QueryUserExtension : Any, LeftTableUserExtension : Any, RightTableUserExtension : Any> : _CommonSelectCreatorScope<QueryUserExtension> {
|
||||
public fun createSelectWithJoin(creator: Scope<QueryUserExtension, LeftTableUserExtension, RightTableUserExtension>): QueryUserExtension
|
||||
|
||||
public interface Scope<QueryUserExtension : Any, LeftTableUserExtension : Any, RightTableUserExtension : Any> {
|
||||
|
Loading…
Reference in New Issue
Block a user