From 1e8cc55db04ccd405a150bd45ab89034f33f030e Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Wed, 7 May 2025 15:53:39 +0300 Subject: [PATCH] 'DebugApi' opt-in with some additional properties and 'RUNTIME_KEY' generic in module descriptor --- .../db/sql_skeleton_0/api/DebugApi.kt | 6 ++++++ .../db/sql_skeleton_0/api/misc/Column.kt | 10 +++++++--- .../db/sql_skeleton_0/api/misc/QueryParam.kt | 2 ++ .../api/module/CreateModuleScope.kt | 4 ++-- .../db/sql_skeleton_0/api/module/Module.kt | 15 ++++++-------- .../api/module/ModuleScopedObject.kt | 10 +++++++++- .../db/sql_skeleton_0/api/module/Namespace.kt | 12 ++++++++--- .../api/module/UpgradeModuleScope.kt | 17 +++++++--------- .../api/queries/RawStatement.kt | 20 +++++++++---------- .../sql_skeleton_0/api/queries/_Statement.kt | 18 ++++++++--------- .../db/sql_skeleton_0/api/table/Table.kt | 4 ++++ .../api/table/TableScopedObject.kt | 8 +++++++- .../sql_skeleton_0/api/table/TableUpgrade.kt | 2 +- 13 files changed, 78 insertions(+), 50 deletions(-) create mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/DebugApi.kt diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/DebugApi.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/DebugApi.kt new file mode 100644 index 0000000..b2f30a8 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/DebugApi.kt @@ -0,0 +1,6 @@ +package ru.landgrafhomyak.db.sql_skeleton_0.api + +@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY) +@Retention(AnnotationRetention.BINARY) +@RequiresOptIn +public annotation class DebugApi diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Column.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Column.kt index 3d2881b..63ff0a1 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Column.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Column.kt @@ -1,18 +1,22 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.misc import kotlin.jvm.JvmName +import ru.landgrafhomyak.db.sql_skeleton_0.api.DebugApi import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table public interface Column { + @DebugApi @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("name") public val name: String + @DebugApi @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("type") public val type: DatabaseType - @Suppress("INAPPLICABLE_JVM_NAME", "PropertyName") - @get:JvmName("_getOwner") - public val _owner: Table + @DebugApi + @Suppress("INAPPLICABLE_JVM_NAME") + @get:JvmName("getTable") + public val table: Table } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/QueryParam.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/QueryParam.kt index 7c734d5..81ff848 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/QueryParam.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/QueryParam.kt @@ -1,8 +1,10 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.misc import kotlin.jvm.JvmName +import ru.landgrafhomyak.db.sql_skeleton_0.api.DebugApi public interface QueryParam { + @DebugApi @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getName") public val name: String diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/CreateModuleScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/CreateModuleScope.kt index 74210bc..cfab42a 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/CreateModuleScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/CreateModuleScope.kt @@ -23,12 +23,12 @@ public interface CreateModuleScope { public fun moduleScopedObject(namespace: Namespace = this.rootNs, name: String): ModuleScopedObject - public fun substituteModule(rootNs: Namespace, template: ModuleTemplate): Module + public fun substituteModule(rootNs: Namespace, template: ModuleTemplate): Module public fun namespace(parent: Namespace, name: String): Namespace public fun addStatement(stmt: DialectResolver.Statement_Void2Void<*>) @LowLevelApi - public fun addStatement(stmt: DialectResolver.Statement_Params2Void): InputRow._Scope + public fun _addStatement(stmt: DialectResolver.Statement_Params2Void): InputRow._Scope } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Module.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Module.kt index f7d17d6..2fd0c7a 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Module.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Module.kt @@ -1,28 +1,25 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.module import kotlin.jvm.JvmName +import ru.landgrafhomyak.db.sql_skeleton_0.api.DebugApi import ru.landgrafhomyak.db.sql_skeleton_0.api.queries._Statement import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.Executor import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table import ru.landgrafhomyak.db.sql_skeleton_0.api.table.TableConstructor -public interface Module { +public interface Module { @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("uExt") public val uExt: mUE + @DebugApi @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getVersionKey") public val versionKey: String - public fun createQuery(c: _Statement.Constructor): R - - public fun createSessionScopeTemporaryTable(name: String, initializer: TableConstructor): Table - - public fun createTransactionScopeTemporaryTable(name: String, initializer: TableConstructor): Table - + @DebugApi @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("executor") - public val executor: Executor + @get:JvmName("getParent") + public val parent: Module<*, RUNTIME_KEY> } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/ModuleScopedObject.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/ModuleScopedObject.kt index f6a2742..20265a4 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/ModuleScopedObject.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/ModuleScopedObject.kt @@ -1,8 +1,16 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.module +import ru.landgrafhomyak.db.sql_skeleton_0.api.DebugApi import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table public interface ModuleScopedObject { + + @DebugApi + public val name: String + + @DebugApi public val module: Module - public val namespace + + @DebugApi + public val namespace: Namespace } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Namespace.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Namespace.kt index 9140c93..c4b13b0 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Namespace.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Namespace.kt @@ -1,13 +1,19 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.module import kotlin.jvm.JvmName +import ru.landgrafhomyak.db.sql_skeleton_0.api.DebugApi -public interface Namespace { +public interface Namespace { + @DebugApi @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getName") public val name: String + @DebugApi @Suppress("INAPPLICABLE_JVM_NAME", "PropertyName") - @get:JvmName("_getPath") - public val _path: List + @get:JvmName("getPath") + public val path: List + + @DebugApi + public val module: Module } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/UpgradeModuleScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/UpgradeModuleScope.kt index 6dfb1f9..2c2ee27 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/UpgradeModuleScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/UpgradeModuleScope.kt @@ -9,13 +9,10 @@ public interface UpgradeModuleScope : public fun keepTable(table: Table): Table public fun keepAndRenameTable(table: Table, newName: String): Table - public fun keepAndRenameTable(table: Table, newNamespace: Namespace): Table - public fun keepAndRenameTable(table: Table, newNamespace: Namespace, newName: String): Table public fun upgradeTable(oldTable: Table, upgrade: TableUpgrade): Table - public fun upgradeAndRenameTable( table: Table, newName: String, @@ -37,7 +34,7 @@ public interface UpgradeModuleScope : public fun deleteTable(table: Table<*, omUE, RUNTIME_KEY>) - public fun deleteTableAfterModuleUpgraded(table: Table): Table + public fun deleteTableAfterModuleUpgrade(table: Table): Table public fun exportTable(table: Table<*, omUE, RUNTIME_KEY>) @@ -52,12 +49,12 @@ public interface UpgradeModuleScope : upgrade: TableUpgrade ): Table - public fun keepModule(module: Module): Module - public fun keepAndMoveModule(oldModule: Module, newNs: Namespace): Module + public fun keepModule(module: Module): Module + public fun keepAndMoveModule(oldModule: Module, newNs: Namespace): Module - public fun upgradeModule(oldModule: Module<*>, template: ModuleTemplate): Module - public fun upgradeAndMoveModule(oldModule: Module<*>, newNs: Namespace, template: ModuleTemplate): Module + public fun upgradeModule(oldModule: Module<*, RUNTIME_KEY>, template: ModuleTemplate): Module + public fun upgradeAndMoveModule(oldModule: Module<*, RUNTIME_KEY>, newNs: Namespace, template: ModuleTemplate): Module - public fun removeModule(oldModule: Module<*>) - public fun removeModuleAfterUpgrade(oldModule: Module): Module + public fun removeModule(oldModule: Module<*, RUNTIME_KEY>) + public fun removeModuleAfterUpgrade(oldModule: Module): Module } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt index 70cf1cd..ef55b3f 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt @@ -1,53 +1,51 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.queries -import ru.landgrafhomyak.db.sql_skeleton_0.api.raw.DialectKey - -public interface RawStatement> : _Statement { +public interface RawStatement : _Statement { public override val uExt: qUE - public interface Void2Void> : RawStatement, _Statement.Void2Void { + public interface Void2Void : RawStatement, _Statement.Void2Void { override val uExt: qUE public interface Constructor } - public interface Void2Row> : RawStatement, _Statement.Void2Row { + public interface Void2Row : RawStatement, _Statement.Void2Row { override val uExt: qUE public interface Constructor } - public interface Void2RowOrNull> : RawStatement, _Statement.Void2RowOrNull { + public interface Void2RowOrNull : RawStatement, _Statement.Void2RowOrNull { override val uExt: qUE public interface Constructor } - public interface Void2Table> : RawStatement, _Statement.Void2Table { + public interface Void2Table : RawStatement, _Statement.Void2Table { override val uExt: qUE public interface Constructor } - public interface Params2Void> : RawStatement, _Statement.Params2Void { + public interface Params2Void : RawStatement, _Statement.Params2Void { override val uExt: qUE public interface Constructor } - public interface Params2Row> : RawStatement, _Statement.Params2Row { + public interface Params2Row : RawStatement, _Statement.Params2Row { override val uExt: qUE public interface Constructor } - public interface Params2RowOrNull> : RawStatement, _Statement.Params2RowOrNull { + public interface Params2RowOrNull : RawStatement, _Statement.Params2RowOrNull { override val uExt: qUE public interface Constructor } - public interface Params2Table> : RawStatement, _Statement.Params2Table { + public interface Params2Table : RawStatement, _Statement.Params2Table { override val uExt: qUE public interface Constructor diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Statement.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Statement.kt index 4ce18b4..4433332 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Statement.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Statement.kt @@ -5,17 +5,17 @@ import ru.landgrafhomyak.db.sql_skeleton_0.api.raw.DialectKey @Suppress("ClassName") -public interface _Statement> { +public interface _Statement { @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("uExt") public val uExt: STATEMENT_USER_EXTENSION - public interface Void2Void> : _Statement - public interface Void2Row> : _Statement - public interface Void2RowOrNull> : _Statement - public interface Void2Table> : _Statement - public interface Params2Void> : _Statement - public interface Params2Row> : _Statement - public interface Params2RowOrNull> : _Statement - public interface Params2Table> : _Statement + public interface Void2Void : _Statement + public interface Void2Row : _Statement + public interface Void2RowOrNull : _Statement + public interface Void2Table : _Statement + public interface Params2Void : _Statement + public interface Params2Row : _Statement + public interface Params2RowOrNull : _Statement + public interface Params2Table : _Statement } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/Table.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/Table.kt index 4bd8b98..d9b9d04 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/Table.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/Table.kt @@ -1,6 +1,7 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.table import kotlin.jvm.JvmName +import ru.landgrafhomyak.db.sql_skeleton_0.api.DebugApi import ru.landgrafhomyak.db.sql_skeleton_0.api.module.Module public interface Table { @@ -8,10 +9,12 @@ public interface Table { @get:JvmName("uExt") public val uExt: UE + @DebugApi @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getName") public val name: String + @DebugApi @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getModule") public val module: Module<*> @@ -23,6 +26,7 @@ public interface Table { MODULE_UPGRADE_SCOPE } + @DebugApi @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getLifeTime") public val lifeTime: LifeTime diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableScopedObject.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableScopedObject.kt index e01bfe1..ccb743a 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableScopedObject.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableScopedObject.kt @@ -1,5 +1,11 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.table +import ru.landgrafhomyak.db.sql_skeleton_0.api.DebugApi + public interface TableScopedObject { - public val table: Table + @DebugApi + public val name: String + + @DebugApi + public val table: Table } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableUpgrade.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableUpgrade.kt index ebac3a4..6f9eff1 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableUpgrade.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableUpgrade.kt @@ -30,6 +30,6 @@ public interface TableUpgrade { public fun addAlterStatementAfterUpgrade(stmt: DialectResolver.Statement_Void2Void<*>) @LowLevelApi - public fun addAlterStatementAfterUpgrade(stmt: DialectResolver.Statement_Params2Void): InputRow._Scope + public fun _addAlterStatementAfterUpgrade(stmt: DialectResolver.Statement_Params2Void): InputRow._Scope } } \ No newline at end of file