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