From 8fff112946e70040901f60271aa8f3f4d709adae Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich <landgrafhomyak@gmail.com> Date: Wed, 28 May 2025 20:28:59 +0300 Subject: [PATCH] Object's user extension now internal object's/implementation's state and can't be accessed outside 'ObjectOperations' --- .../db/skeleton1/api/ObjectOperations.kt | 10 +++++----- .../db/skeleton1/api/module/Module.kt | 2 +- .../api/module/ModuleConstructorScope.kt | 6 +++--- .../api/module/ModuleScopedObject.kt | 6 ++---- .../api/module/ModuleUpgradeScope.kt | 20 +++++++++---------- .../api/table/TableConstructorScope.kt | 2 +- .../skeleton1/api/table/TableScopedObject.kt | 6 ++---- .../skeleton1/api/table/TableUpgradeScope.kt | 8 ++++---- 8 files changed, 28 insertions(+), 32 deletions(-) diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/ObjectOperations.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/ObjectOperations.kt index 5797d2a..5ba1e03 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/ObjectOperations.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/ObjectOperations.kt @@ -1,15 +1,15 @@ package ru.landgrafhomyak.db.skeleton1.api public interface ObjectOperations<@Suppress("unused") UE : Any?> { - public fun interface ImplementationsProvider<UE> { - public fun provideStatementImplementations_databaseType(scope: Scope<UE>) + public fun interface ImplementationsProvider { + public fun provideStatementImplementations_databaseType(scope: Scope) - public interface Scope<RUNTIME_TYPE> { + public interface Scope { @Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS") - public fun <OPERATIONS, OPERATIONS_UNBOUND> addImplementation( + public fun <UE, OPERATIONS, OPERATIONS_UNBOUND> addImplementation( key: DriverMetainfo<*, *, *, *, *, *, *, *, *, OPERATIONS_UNBOUND>, type: OPERATIONS ) where OPERATIONS_UNBOUND : ObjectOperations<*>, - OPERATIONS : ObjectOperations<RUNTIME_TYPE>, + OPERATIONS : ObjectOperations<UE>, OPERATIONS : OPERATIONS_UNBOUND } } diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/Module.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/Module.kt index 08b2a13..b64e533 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/Module.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/Module.kt @@ -36,7 +36,7 @@ public interface Module<mUE : Any> { @ReflectionApi @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getMemberObjects") - public val memberObjects: Collection<ModuleScopedObject<*, mUE>> + public val memberObjects: Collection<ModuleScopedObject<mUE>> @ReflectionApi @Suppress("INAPPLICABLE_JVM_NAME") diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleConstructorScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleConstructorScope.kt index f7096cd..a9ab4b4 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleConstructorScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleConstructorScope.kt @@ -20,10 +20,10 @@ public interface ModuleConstructorScope<mUE : Any> { name: String, initializer: Table.Constructor<tUE> ): Table<tUE, mUE> - public fun <oUE : Any?> moduleScopedObject( + public fun moduleScopedObject( namespace: Namespace<mUE> = this.rootNs, - name: String, metadata: ObjectOperations.ImplementationsProvider<oUE> - ): ModuleScopedObject<oUE, mUE> + name: String, metadata: ObjectOperations.ImplementationsProvider + ): ModuleScopedObject<mUE> public fun <smUE : Any> substituteModule(rootNs: Namespace<mUE>, template: Module.Template<smUE>): Module<smUE> diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleScopedObject.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleScopedObject.kt index 90a6ab7..07bcd9e 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleScopedObject.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleScopedObject.kt @@ -4,9 +4,7 @@ import kotlin.jvm.JvmName import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi import ru.landgrafhomyak.db.skeleton1.api.ObjectOperations -public interface ModuleScopedObject<oUE : Any?, mUE : Any> { - public val uExt: oUE - +public interface ModuleScopedObject<mUE : Any> { @ReflectionApi public val name: String @@ -19,5 +17,5 @@ public interface ModuleScopedObject<oUE : Any?, mUE : Any> { public val pathFromModuleRoot: List<String> @ReflectionApi - public val meta: ObjectOperations.ImplementationsProvider<oUE> + public val meta: ObjectOperations.ImplementationsProvider } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleUpgradeScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleUpgradeScope.kt index 58b02ee..4c1d3b7 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleUpgradeScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/module/ModuleUpgradeScope.kt @@ -43,20 +43,20 @@ public interface ModuleUpgradeScope<nmUE : Any, omUE : Any> : ModuleConstructorS // Object ------------------------------------------------------------------ - public fun <oUE : Any?> keepModuleScopedObject(obj: ModuleScopedObject<oUE, omUE>): ModuleScopedObject<oUE, nmUE> - public fun <oUE : Any?> renameModuleScopedObject( - obj: ModuleScopedObject<oUE, omUE>, + public fun keepModuleScopedObject(obj: ModuleScopedObject< omUE>): ModuleScopedObject<nmUE> + public fun renameModuleScopedObject( + obj: ModuleScopedObject<omUE>, newNamespace: Namespace<nmUE>? = null, newName: String - ): ModuleScopedObject<oUE, nmUE> + ): ModuleScopedObject<nmUE> - public fun <oUE : Any?> deleteModuleScopedObject(obj: ModuleScopedObject<oUE, omUE>) - public fun <oUE : Any?> deleteModuleScopedObjectAfterModuleUpgrade(obj: ModuleScopedObject<oUE, omUE>): ModuleScopedObject<oUE, nmUE> + public fun deleteModuleScopedObject(obj: ModuleScopedObject<omUE>) + public fun deleteModuleScopedObjectAfterModuleUpgrade(obj: ModuleScopedObject<omUE>): ModuleScopedObject<nmUE> - public fun exportModuleScopedObject(obj: ModuleScopedObject<*, omUE>) - public fun <oUE : Any> importModuleScopedObject( - obj: ModuleScopedObject<oUE, *>, + public fun exportModuleScopedObject(obj: ModuleScopedObject<omUE>) + public fun importModuleScopedObject( + obj: ModuleScopedObject<*>, namespace: Namespace<nmUE> = this.rootNs, name: String - ): ModuleScopedObject<oUE, nmUE> + ): ModuleScopedObject<nmUE> // Module ------------------------------------------------------------------ diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableConstructorScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableConstructorScope.kt index 13fd62c..1b39b0b 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableConstructorScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableConstructorScope.kt @@ -32,7 +32,7 @@ public interface TableConstructorScope<tUE : Any> { alterCreateColumn: RawStatement.Params2Void.ImplementationsProvider<sUE> ): InputRow._Scope<sUE, Column<RT, tUE>> - public fun <oUE : Any?> tableScopedObject(name: String, metadata: ObjectOperations.ImplementationsProvider<oUE>): TableScopedObject<oUE, tUE> + public fun tableScopedObject(name: String, metadata: ObjectOperations.ImplementationsProvider): TableScopedObject<tUE> public fun addAlterStatement(stmt: _Statement.Void2Void<*>) public fun addAlterStatement(stmt: RawStatement.Void2Void.ImplementationsProvider<*>) diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableScopedObject.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableScopedObject.kt index 753d29f..3d0649c 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableScopedObject.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableScopedObject.kt @@ -4,9 +4,7 @@ import kotlin.jvm.JvmName import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi import ru.landgrafhomyak.db.skeleton1.api.ObjectOperations -public interface TableScopedObject<oUE : Any?, tUE : Any> { - public val uExt: oUE - +public interface TableScopedObject<tUE : Any> { @ReflectionApi public val name: String @@ -14,7 +12,7 @@ public interface TableScopedObject<oUE : Any?, tUE : Any> { public val table: Table<tUE, *> @ReflectionApi - public val meta: ObjectOperations.ImplementationsProvider<oUE> + public val meta: ObjectOperations.ImplementationsProvider @ReflectionApi @Suppress("INAPPLICABLE_JVM_NAME") diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableUpgradeScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableUpgradeScope.kt index d066328..bacb1b7 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableUpgradeScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/table/TableUpgradeScope.kt @@ -11,10 +11,10 @@ public interface TableUpgradeScope<tnUE : Any, toUE : Any> : TableConstructorSco public fun deleteColumn(c: Column<*, toUE>) public fun <RT> deleteColumnAfterUpgrade(c: Column<RT, toUE>): Column<RT, tnUE> - public fun <oUE : Any?> keepTableScopedObject(obj: TableScopedObject<oUE, toUE>): TableScopedObject<oUE, tnUE> - public fun <oUE : Any?> renameTableScopedObject(obj: TableScopedObject<oUE, toUE>, newName: String): TableScopedObject<oUE, tnUE> - public fun <oUE : Any?> deleteTableScopedObject(obj: TableScopedObject<oUE, toUE>) - public fun <oUE : Any?> deleteTableScopedObjectAfterUpgrade(obj: TableScopedObject<oUE, toUE>): TableScopedObject<oUE, tnUE> + public fun keepTableScopedObject(obj: TableScopedObject<toUE>): TableScopedObject<tnUE> + public fun renameTableScopedObject(obj: TableScopedObject<toUE>, newName: String): TableScopedObject<tnUE> + public fun deleteTableScopedObject(obj: TableScopedObject<toUE>) + public fun deleteTableScopedObjectAfterUpgrade(obj: TableScopedObject<toUE>): TableScopedObject<tnUE> public fun addAlterStatementAfterUpgrade(stmt: _Statement.Void2Void<*>) public fun addAlterStatementAfterUpgrade(stmt: RawStatement.Void2Void.ImplementationsProvider<*>)