diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/CreateModuleScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/CreateModuleScope.kt index 2f06a28..0421757 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/CreateModuleScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/CreateModuleScope.kt @@ -1,7 +1,7 @@ package ru.landgrafhomyak.db.serdha0.api.module import ru.landgrafhomyak.db.serdha0.api.table.Table -import ru.landgrafhomyak.db.serdha0.api.queries.QueryConstructor +import ru.landgrafhomyak.db.serdha0.api.queries._Query import ru.landgrafhomyak.db.serdha0.api.runtime.SynchronizedDatabase import ru.landgrafhomyak.db.serdha0.api.runtime.Transaction import ru.landgrafhomyak.db.serdha0.api.table.TableConstructor @@ -13,6 +13,7 @@ import ru.landgrafhomyak.db.serdha0.api.table.TableConstructor * @see ModuleTemplate.ModuleCreator.createSchema */ public interface CreateModuleScope { + public val rootNs: Namespace /** * Creates table in [specified namespace][namespace] with [specified name][name] and stores it in the database. @@ -20,49 +21,49 @@ public interface CreateModuleScope { * * 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 tUE User's type for containing table-related descriptors. * @param namespace Way to group tables if there is a lot. * @param name Name of table for debugging. * @param initializer Table-related descriptors initializer. * @return Table descriptor. */ - public fun createTable(namespace: Namespace, name: String, initializer: TableConstructor): Table + public fun createTable(namespace: Namespace = this.rootNs, name: String, initializer: TableConstructor): Table /** * Creates a temporary table that exits only until connection to the database not [closed][SynchronizedDatabase._close]. * * On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed. * - * @param TableUserExtension User's type for containing table-related descriptors. + * @param tUE User's type for containing table-related descriptors. * @param namespace Way to group tables if there is a lot. * @param name Name of table for debugging. * @param initializer Table-related descriptors initializer. * @return Table descriptor. */ - public fun createSessionScopeTemporaryTable(namespace: Namespace, name: String, initializer: TableConstructor): Table + public fun createSessionScopeTemporaryTable(namespace: Namespace = this.rootNs, name: String, initializer: TableConstructor): Table /** * Creates a temporary table that exits only inside [transaction][Transaction] and auto-deleted (or cleared, depends on driver implementation) when it [finished][Transaction._assertTransactionFinishedAndReleaseResources]. * * On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed. * - * @param TableUserExtension User's type for containing table-related descriptors. + * @param tUE User's type for containing table-related descriptors. * @param namespace Way to group tables if there is a lot. * @param name Name of table for debugging. * @param initializer Table-related descriptors initializer. * @return Table descriptor. */ - public fun createTransactionScopeTemporaryTable(namespace: Namespace, name: String, initializer: TableConstructor): Table + public fun createTransactionScopeTemporaryTable(namespace: Namespace = this.rootNs, name: String, initializer: TableConstructor): Table - public val queries: QueryConstructor.Scope + public val queries: _Query.Constructor.Scope - public val temporarySubqueries: QueryConstructor.Scope + public val temporarySubqueries: _Query.Constructor.Scope - public val moduleConfiguringTemporaryQueries: QueryConstructor.Scope + public val moduleConfiguringTemporaryQueries: _Query.Constructor.Scope - public fun createQuery(creator: QueryConstructor): qUE + public fun createQuery(creator: _Query.Constructor): qUE - public fun createModuleConfiguringTemporaryQuery(creator: QueryConstructor): qUE + public fun createModuleConfiguringTemporaryQuery(creator: _Query.Constructor): qUE /** * Replaces [specified namespace][rootNs] with schema provided by [template]. @@ -72,5 +73,5 @@ public interface CreateModuleScope { * @param template Schema template. * @return Module descriptor. */ - public fun substituteModule(rootNs: Namespace, template: ModuleTemplate): Module + public fun substituteModule(rootNs: Namespace, template: ModuleTemplate): Module } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/Module.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/Module.kt index 2bfd17c..7484674 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/Module.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/Module.kt @@ -3,9 +3,9 @@ package ru.landgrafhomyak.db.serdha0.api.module import kotlin.jvm.JvmName import ru.landgrafhomyak.db.serdha0.api.runtime.SynchronizedDatabase -public interface Module { +public interface Module { - public val userExtension: ModuleUserExtension + public val uExt: mUE public val versionKey: String diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/ModuleTemplate.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/ModuleTemplate.kt index 23741d7..7653c14 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/ModuleTemplate.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha0/api/module/ModuleTemplate.kt @@ -20,13 +20,13 @@ public interface ModuleTemplate<@Suppress("unused") ModuleUserExtension : Any> { } public interface ModuleCreator { - public fun createSchema(rootNs: Namespace, creator: CreateModuleScope): ModuleUserExtension + public fun createSchema(context: CreateModuleScope): ModuleUserExtension public suspend fun initData(ext: ModuleUserExtension, transaction: Transaction) {} } public interface ModuleUpgrade { - public fun upgradeSchema(oldModule: Module, rootNs: Namespace, upgrader: CreateModuleScope): NewModuleUserExtension + public fun upgradeSchema(context: UpgradeModuleScope): NewModuleUserExtension public suspend fun upgradeData(ext: NewModuleUserExtension, transaction: Transaction) {} }