Namespace replaced by NameNode to make it more clear and simplify implementation

This commit is contained in:
Andrew Golovashevich 2025-06-02 00:58:44 +03:00
parent 12c5e30b6f
commit 0c9501cbe4
5 changed files with 29 additions and 37 deletions

View File

@ -12,22 +12,22 @@ import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow
public interface ModuleConstructorScope<mUE : Any> { public interface ModuleConstructorScope<mUE : Any> {
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("rootNs") @get:JvmName("rootNs")
public val rootNs: Namespace<mUE> public val rootNameNode: NameNode<mUE>
public fun <tUE : Any> createTable( public fun <tUE : Any> createTable(
lifeTime: Table.LifeTime = Table.LifeTime.DATABASE_SCOPE, lifeTime: Table.LifeTime = Table.LifeTime.DATABASE_SCOPE,
namespace: Namespace<mUE> = this.rootNs, location: NameNode<mUE>,
name: String, initializer: Table.Constructor<tUE> initializer: Table.Constructor<tUE>
): Table<tUE, mUE> ): Table<tUE, mUE>
public fun moduleScopedObject( public fun moduleScopedObject(
namespace: Namespace<mUE> = this.rootNs, location: NameNode<mUE>,
name: String, metadata: ObjectClass.ImplementationsProvider metadata: ObjectClass.ImplementationsProvider
): ModuleScopedObject<mUE> ): ModuleScopedObject<mUE>
public fun <smUE : Any> substituteModule(rootNs: Namespace<mUE>, template: Module.Template<smUE>): Module<smUE> public fun <smUE : Any> substituteModule(rootNode: NameNode<mUE>, template: Module.Template<smUE>): Module<smUE>
public fun namespace(parent: Namespace<mUE>, name: String): Namespace<mUE> public fun nameNode(parent: NameNode<mUE>, name: String): NameNode<mUE>
public fun addStatement(stmt: _Statement.Void2Void<*>) public fun addStatement(stmt: _Statement.Void2Void<*>)
public fun addStatement(stmt: RawStatement.Void2Void.ImplementationsProvider<*>) public fun addStatement(stmt: RawStatement.Void2Void.ImplementationsProvider<*>)

View File

@ -5,16 +5,13 @@ import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.ObjectClass import ru.landgrafhomyak.db.skeleton1.api.ObjectClass
public interface ModuleScopedObject<mUE : Any> { public interface ModuleScopedObject<mUE : Any> {
@ReflectionApi
public val name: String
@ReflectionApi @ReflectionApi
public val module: Module<mUE> public val module: Module<mUE>
@ReflectionApi @ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getPathFromModuleRoot") @get:JvmName("getPathFromParentModuleRoot")
public val pathFromModuleRoot: List<String> public val pathFromParentModuleRoot: List<String>?
@ReflectionApi @ReflectionApi
public val objectClassProvider: ObjectClass.ImplementationsProvider public val objectClassProvider: ObjectClass.ImplementationsProvider

View File

@ -10,9 +10,9 @@ import ru.landgrafhomyak.db.skeleton1.api.table.Table
public interface ModuleUpgradeScope<nmUE : Any, omUE : Any> : ModuleConstructorScope<nmUE> { public interface ModuleUpgradeScope<nmUE : Any, omUE : Any> : ModuleConstructorScope<nmUE> {
// Table ------------------------------------------------------------------- // Table -------------------------------------------------------------------
public fun <tUE : Any> keepTable(table: Table<tUE, omUE>): Table<tUE, nmUE> public fun <tUE : Any> keepTable(table: Table<tUE, omUE>): Table<tUE, nmUE>
public fun <tUE : Any> keepAndRenameTable( public fun <tUE : Any> keepAndMoveTable(
table: Table<tUE, omUE>, table: Table<tUE, omUE>,
newNamespace: Namespace<nmUE>? = null, newName: String newLocation: NameNode<nmUE>
): Table<tUE, nmUE> ): Table<tUE, nmUE>
public fun <ntUE : Any, otUE : Any> upgradeTable( public fun <ntUE : Any, otUE : Any> upgradeTable(
@ -20,9 +20,9 @@ public interface ModuleUpgradeScope<nmUE : Any, omUE : Any> : ModuleConstructorS
upgrade: Table.Upgrade<ntUE, otUE> upgrade: Table.Upgrade<ntUE, otUE>
): Table<ntUE, nmUE> ): Table<ntUE, nmUE>
public fun <ntUE : Any, otUE : Any> upgradeAndRenameTable( public fun <ntUE : Any, otUE : Any> upgradeAndMoveTable(
table: Table<otUE, omUE>, table: Table<otUE, omUE>,
newNamespace: Namespace<nmUE>? = null, newName: String, newLocation: NameNode<nmUE>,
upgrade: Table.Upgrade<ntUE, otUE> upgrade: Table.Upgrade<ntUE, otUE>
): Table<ntUE, nmUE> ): Table<ntUE, nmUE>
@ -32,21 +32,21 @@ public interface ModuleUpgradeScope<nmUE : Any, omUE : Any> : ModuleConstructorS
public fun exportTable(table: Table<*, omUE>) public fun exportTable(table: Table<*, omUE>)
public fun <tUE : Any> importTable( public fun <tUE : Any> importTable(
table: Table<tUE, *>, table: Table<tUE, *>,
namespace: Namespace<nmUE> = this.rootNs, name: String location: NameNode<nmUE>
): Table<tUE, nmUE> ): Table<tUE, nmUE>
public fun <ntUE : Any, otUE : Any> importAndUpgradeTable( public fun <ntUE : Any, otUE : Any> importAndUpgradeTable(
table: Table<otUE, *>, table: Table<otUE, *>,
namespace: Namespace<nmUE> = this.rootNs, name: String, location: NameNode<nmUE>,
upgrade: Table.Upgrade<ntUE, otUE> upgrade: Table.Upgrade<ntUE, otUE>
): Table<ntUE, nmUE> ): Table<ntUE, nmUE>
// Object ------------------------------------------------------------------ // Object ------------------------------------------------------------------
public fun keepModuleScopedObject(obj: ModuleScopedObject< omUE>): ModuleScopedObject<nmUE> public fun keepModuleScopedObject(obj: ModuleScopedObject<omUE>): ModuleScopedObject<nmUE>
public fun renameModuleScopedObject( public fun keepAndMoveModuleScopedObject(
obj: ModuleScopedObject<omUE>, obj: ModuleScopedObject<omUE>,
newNamespace: Namespace<nmUE>? = null, newName: String newLocation: NameNode<nmUE>,
): ModuleScopedObject<nmUE> ): ModuleScopedObject<nmUE>
public fun deleteModuleScopedObject(obj: ModuleScopedObject<omUE>) public fun deleteModuleScopedObject(obj: ModuleScopedObject<omUE>)
@ -55,19 +55,19 @@ public interface ModuleUpgradeScope<nmUE : Any, omUE : Any> : ModuleConstructorS
public fun exportModuleScopedObject(obj: ModuleScopedObject<omUE>) public fun exportModuleScopedObject(obj: ModuleScopedObject<omUE>)
public fun importModuleScopedObject( public fun importModuleScopedObject(
obj: ModuleScopedObject<*>, obj: ModuleScopedObject<*>,
namespace: Namespace<nmUE> = this.rootNs, name: String location: NameNode<nmUE>
): ModuleScopedObject<nmUE> ): ModuleScopedObject<nmUE>
// Module ------------------------------------------------------------------ // Module ------------------------------------------------------------------
public fun <smUE : Any> keepModule(module: Module<smUE>): Module<smUE> public fun <smUE : Any> keepModule(module: Module<smUE>): Module<smUE>
public fun <smUE : Any> keepAndMoveModule(oldModule: Module<smUE>, newNs: Namespace<nmUE>): Module<smUE> public fun <smUE : Any> keepAndMoveModule(oldModule: Module<smUE>, newNs: NameNode<nmUE>): Module<smUE>
public fun <smUE : Any> upgradeModule(oldModule: Module<*>, template: Module.Template<smUE>): Module<smUE> public fun <smUE : Any> upgradeModule(oldModule: Module<*>, template: Module.Template<smUE>): Module<smUE>
public fun <smUE : Any> upgradeAndMoveModule( public fun <smUE : Any> upgradeAndMoveModule(
oldModule: Module<*>, oldModule: Module<*>,
newNamespace: Namespace<nmUE>, newNamespace: NameNode<nmUE>,
template: Module.Template<smUE> template: Module.Template<smUE>
): Module<smUE> ): Module<smUE>
@ -78,12 +78,12 @@ public interface ModuleUpgradeScope<nmUE : Any, omUE : Any> : ModuleConstructorS
public fun <smUE : Any> importModule( public fun <smUE : Any> importModule(
module: Module<smUE>, module: Module<smUE>,
namespace: Namespace<nmUE>, location: NameNode<nmUE>,
): Module<smUE> ): Module<smUE>
public fun <nsmUE : Any, osmUE : Any> importAndUpgradeModule( public fun <nsmUE : Any, osmUE : Any> importAndUpgradeModule(
module: Module<osmUE>, module: Module<osmUE>,
namespace: Namespace<nmUE>, location: NameNode<nmUE>,
upgrade: Module.Upgrade<nsmUE, osmUE> upgrade: Module.Upgrade<nsmUE, osmUE>
): Module<nsmUE> ): Module<nsmUE>

View File

@ -3,7 +3,7 @@ package ru.landgrafhomyak.db.skeleton1.api.module
import kotlin.jvm.JvmName import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
public interface Namespace<mUE : Any> { public interface NameNode<mUE : Any> {
@ReflectionApi @ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getName") @get:JvmName("getName")
@ -12,5 +12,5 @@ public interface Namespace<mUE : Any> {
@ReflectionApi @ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getPath") @get:JvmName("getPath")
public val parent: Namespace<mUE>? public val parent: NameNode<mUE>?
} }

View File

@ -11,13 +11,8 @@ public interface Table<UE : Any, mUE : Any> {
@ReflectionApi @ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getName") @get:JvmName("getPathFromParentModuleRoot")
public val name: String public val pathFromParentModuleRoot: List<String>?
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getPathFromModuleRoot")
public val pathFromModuleRoot: List<String>
@ReflectionApi @ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@ -44,7 +39,7 @@ public interface Table<UE : Any, mUE : Any> {
@ReflectionApi @ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getMemberObjects") @get:JvmName("getMemberObjects")
public val memberObjects: Collection<TableScopedObject<*, UE>> public val memberObjects: Collection<TableScopedObject<UE>>
@ReflectionApi @ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@ -54,7 +49,7 @@ public interface Table<UE : Any, mUE : Any> {
@ReflectionApi @ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME") @Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getMemberObjectsWhileUpgrade") @get:JvmName("getMemberObjectsWhileUpgrade")
public val memberObjectsWhileUpgrade: Collection<TableScopedObject<*, UE>> public val memberObjectsWhileUpgrade: Collection<TableScopedObject<UE>>
public interface Constructor<tUE : Any> { public interface Constructor<tUE : Any> {
public fun createTable(context: TableConstructorScope<tUE>): tUE public fun createTable(context: TableConstructorScope<tUE>): tUE