From 306bf7c971ef2d799dd19a0123f5714155fd37ed Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich <landgrafhomyak@gmail.com> Date: Thu, 13 Feb 2025 11:16:09 +0300 Subject: [PATCH] Improved interface for connection entrypoint --- .../serdha0/api/module/CreateModuleScope.kt | 6 ++--- .../db/serdha0/api/module/Module.kt | 10 ++++---- .../serdha0/api/runtime/DatabaseConnection.kt | 24 +++++++++++++++++++ .../{SynchronizedDatabase.kt => Executor.kt} | 6 +---- .../api/runtime/UnsynchronizedDatabase.kt | 10 -------- 5 files changed, 32 insertions(+), 24 deletions(-) create mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/DatabaseConnection.kt rename src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/{SynchronizedDatabase.kt => Executor.kt} (91%) delete mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/UnsynchronizedDatabase.kt diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/module/CreateModuleScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/module/CreateModuleScope.kt index 6240312..b7967f8 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/module/CreateModuleScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/module/CreateModuleScope.kt @@ -2,7 +2,7 @@ package ru.landgrafhomyak.db.serdha0.api.module import ru.landgrafhomyak.db.serdha0.api.table.Table import ru.landgrafhomyak.db.serdha0.api.queries._Query -import ru.landgrafhomyak.db.serdha0.api.runtime.SynchronizedDatabase +import ru.landgrafhomyak.db.serdha0.api.runtime.Executor import ru.landgrafhomyak.db.serdha0.api.runtime.Transaction import ru.landgrafhomyak.db.serdha0.api.table.TableConstructor @@ -27,10 +27,10 @@ public interface CreateModuleScope { * @param initializer Table-related descriptors initializer. * @return Table descriptor. */ - public fun <tUE : Any> createTable(namespace: Namespace = this.rootNs, name: String, initializer: TableConstructor<tUE>, mutable: Boolean = true): Table<tUE, Nothing> + public fun <tUE : Any> createTable(namespace: Namespace = this.rootNs, name: String, initializer: TableConstructor<tUE>): Table<tUE, Nothing> /** - * Creates a temporary table that exits only until connection to the database not [closed][SynchronizedDatabase._close]. + * Creates a temporary table that exits only until connection to the database not [closed][Executor._close]. * * On [module upgrading][ModuleTemplate.CreateModuleTemplatesScope.upgradeTemplate] must be recreated if needed. * diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/module/Module.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/module/Module.kt index 478cf44..2b430c6 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/module/Module.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/module/Module.kt @@ -2,7 +2,7 @@ package ru.landgrafhomyak.db.serdha0.api.module import kotlin.jvm.JvmName import ru.landgrafhomyak.db.serdha0.api.queries._Query -import ru.landgrafhomyak.db.serdha0.api.runtime.SynchronizedDatabase +import ru.landgrafhomyak.db.serdha0.api.runtime.Executor /** * Descriptor of synchronized module. Used for schema manipulations. @@ -21,13 +21,11 @@ public interface Module<mUE : Any> { @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("versionKey") public val versionKey: String - - /** - * Database in which this module was synchronized. For debugging. - */ +/* @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("ownerDatabase") - public val ownerDatabase: SynchronizedDatabase<*> + public val ownerDatabase: Executor +*/ public fun <R : Any> createQuery(c: _Query.Constructor<R>): R diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/DatabaseConnection.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/DatabaseConnection.kt new file mode 100644 index 0000000..e0ad970 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/DatabaseConnection.kt @@ -0,0 +1,24 @@ +package ru.landgrafhomyak.db.serdha0.api.runtime + +import ru.landgrafhomyak.db.serdha0.api.LowLevelApi +import ru.landgrafhomyak.db.serdha0.api.module.Module +import ru.landgrafhomyak.db.serdha0.api.module.ModuleTemplate + +@LowLevelApi +public interface DatabaseConnection { + @Suppress("FunctionName") + @LowLevelApi + public fun <UE : Any> _createModuleTemplates(x: ModuleTemplate.VersionsInitializer<UE>): UE + + @Suppress("FunctionName") + @LowLevelApi + public fun <mUE : Any> _setRootModuleAndLockSchema(t: ModuleTemplate<mUE>): Module<mUE> + + @Suppress("FunctionName") + @LowLevelApi + public fun _finishSetup() + + @Suppress("PropertyName") + @LowLevelApi + public val _executor: Executor +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/SynchronizedDatabase.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/Executor.kt similarity index 91% rename from src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/SynchronizedDatabase.kt rename to src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/Executor.kt index 19cfd59..f6f7578 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/SynchronizedDatabase.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/Executor.kt @@ -6,7 +6,7 @@ import ru.landgrafhomyak.db.serdha0.api.table.RowId import ru.landgrafhomyak.db.serdha0.api.table.Table import ru.landgrafhomyak.db.serdha0.api.queries._Query -public interface SynchronizedDatabase<DatabaseUserExtension : Any> : Module<DatabaseUserExtension> { +public interface Executor { @Suppress("FunctionName") @LowLevelApi public suspend fun _startTransaction(): Transaction @@ -33,10 +33,6 @@ public interface SynchronizedDatabase<DatabaseUserExtension : Any> : Module<Data public suspend fun <C, A, R> transaction(script: AtomicScript<C, A, R>, context: C, args: A): R - @Suppress("FunctionName") - @LowLevelApi - public suspend fun _close() - public fun <TableUserException : Any, V> mapOfRowIds( table: Table<TableUserException, *>, builder: (MutableMap<OutputRow<TableUserException>, V>) -> Unit diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/UnsynchronizedDatabase.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/UnsynchronizedDatabase.kt deleted file mode 100644 index fc45d35..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/runtime/UnsynchronizedDatabase.kt +++ /dev/null @@ -1,10 +0,0 @@ -package ru.landgrafhomyak.db.serdha0.api.runtime - -import ru.landgrafhomyak.db.serdha0.api.module.ModuleTemplate - -@Suppress("SpellCheckingInspection") -public interface UnsynchronizedDatabase { - public fun <UserExtension : Any> addModuleTemplates(creator: ModuleTemplate.VersionsInitializer<UserExtension>): UserExtension - - public suspend fun <ModuleUserExtension : Any> synchronize(conent: ModuleTemplate<ModuleUserExtension>): SynchronizedDatabase<ModuleUserExtension> -} \ No newline at end of file