diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/module/CreateModuleScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/module/CreateModuleScope.kt index ff0f329..61129a9 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/module/CreateModuleScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/module/CreateModuleScope.kt @@ -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 createTransactionScopeTemporaryTable(namespace: Namespace, name: String, initializer: TableCreator): Table + 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 createSelectQuery(initializer: SelectQuery.Creator): SelectQuery + 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 createTemporarySelectQuery(initializer: SelectQuery.Creator): SelectQuery - - - /** - * 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 createInsertQuery(table: Table, initializer: InsertQuery.Creator): InsertQuery - - /** - * 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 createTemporaryInsertQuery(table: Table, initializer: InsertQuery.Creator): InsertQuery - - /** - * 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 createCopyQuery(table: Table, initializer: CopyQuery.Creator): CopyQuery - - /** - * 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 createTemporaryCopyQuery(table: Table, initializer: CopyQuery.Creator): CopyQuery - - /** - * 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 createUpdateQuery(table: Table, initializer: UpdateQuery.Creator): UpdateQuery - - /** - * 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 createTemporaryUpdateQuery(table: Table, initializer: UpdateQuery.Creator): UpdateQuery - - - /** - * 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 createDeleteQuery(table: Table, initializer: DeleteQuery.Creator): DeleteQuery - - /** - * 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 createTemporaryDeleteQuery(table: Table, initializer: DeleteQuery.Creator): DeleteQuery + public val moduleConfiguringTemporaryQueries: CreateQueryScope /** * Replaces [specified namespace][rootNs] with schema provided by [template]. diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/CreateQueryScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/CreateQueryScope.kt new file mode 100644 index 0000000..8899059 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/CreateQueryScope.kt @@ -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 deleteSingleRow(table: Table, creator: DeleteQuery.SingleRow.Creator): DeleteQuery.SingleRow + public fun deleteFromSubquery(table: Table, selector: _Selectable, creator: DeleteQuery.FromSubquery.Creator): DeleteQuery.FromSubquery + public fun deleteMultipleRows(table: Table, creator: DeleteQuery.MultipleRows.Creator): DeleteQuery.MultipleRows + + public fun insertSingleRow(table: Table, creator: InsertQuery.SingleRow.Creator): InsertQuery.SingleRow + public fun insertFromSubquery(table: Table, selector: _Selectable, creator: InsertQuery.FromSubquery.Creator): InsertQuery.FromSubquery + public fun insertMultipleRows(table: Table, creator: InsertQuery.MultipleRows.Creator): InsertQuery.MultipleRows + + public fun select(table: _Selectable, creator: SelectQuery.FromSubquery.Creator): SelectQuery.FromSubquery + public fun selectWithJoin(left: _Selectable, right: _Selectable, creator: SelectQuery.WithJoin.Creator): SelectQuery.WithJoin + + public fun updateSingleRow(table: Table, creator: UpdateQuery.SingleRow.Creator): UpdateQuery.SingleRow + public fun updateFromSubquery(table: Table, selector: _Selectable, creator: UpdateQuery.FromSubquery.Creator): UpdateQuery.FromSubquery + public fun updateMultipleRows(table: Table, creator: UpdateQuery.MultipleRows.Creator): UpdateQuery.MultipleRows + +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/SelectQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/SelectQuery.kt index 6a6232b..357b251 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/SelectQuery.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/SelectQuery.kt @@ -38,7 +38,7 @@ public interface SelectQuery : _Query : SelectQuery, _Query.Params2Table { - public interface JoinCreator : _CommonSelectCreatorScope { + public interface Creator : _CommonSelectCreatorScope { public fun createSelectWithJoin(creator: Scope): QueryUserExtension public interface Scope {