Rework of lifetime and applying it to members properties in modules' and tables' handles
This commit is contained in:
parent
e2a10512fb
commit
be4945fe32
@ -0,0 +1,21 @@
|
|||||||
|
package ru.landgrafhomyak.db.skeleton1.api
|
||||||
|
|
||||||
|
public enum class LifeTime {
|
||||||
|
REGULAR {
|
||||||
|
override fun isAlwaysAvailableAt(parent: LifeTime): Boolean = true
|
||||||
|
},
|
||||||
|
|
||||||
|
TRANSACTION_SCOPE {
|
||||||
|
override fun isAlwaysAvailableAt(scope: LifeTime): Boolean = scope === this
|
||||||
|
},
|
||||||
|
|
||||||
|
CONNECTION_SCOPE {
|
||||||
|
override fun isAlwaysAvailableAt(scope: LifeTime): Boolean = scope === LifeTime.TRANSACTION_SCOPE || scope === this
|
||||||
|
},
|
||||||
|
|
||||||
|
MODULE_UPGRADE_SCOPE {
|
||||||
|
override fun isAlwaysAvailableAt(scope: LifeTime): Boolean = scope === this
|
||||||
|
};
|
||||||
|
|
||||||
|
public abstract fun isAlwaysAvailableAt(scope: LifeTime): Boolean
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package ru.landgrafhomyak.db.skeleton1.api.module
|
package ru.landgrafhomyak.db.skeleton1.api.module
|
||||||
|
|
||||||
import kotlin.jvm.JvmName
|
import kotlin.jvm.JvmName
|
||||||
|
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi
|
import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.statement.QueriesCompiler
|
import ru.landgrafhomyak.db.skeleton1.api.statement.QueriesCompiler
|
||||||
@ -29,19 +30,16 @@ public interface Module<mUE : Any> {
|
|||||||
public val pathFromParentModuleRoot: List<String>?
|
public val pathFromParentModuleRoot: List<String>?
|
||||||
|
|
||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
public val lifeTime: LifeTime
|
||||||
@get:JvmName("getMemberTables")
|
|
||||||
public val memberTables: Collection<Table<*, mUE>>
|
|
||||||
|
|
||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
public fun memberTables(lifeTime: LifeTime): Collection<Table<*, mUE>>
|
||||||
@get:JvmName("getMemberObjects")
|
|
||||||
public val memberObjects: Collection<ModuleScopedObject<mUE>>
|
|
||||||
|
|
||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
public fun memberObjects(lifeTime: LifeTime): Collection<ModuleScopedObject<mUE>>
|
||||||
@get:JvmName("getMemberSubmodules")
|
|
||||||
public val memberSubmodules: Collection<Module<*>>
|
@ReflectionApi
|
||||||
|
public fun memberSubmodules(lifeTime: LifeTime): Collection<Table<*, mUE>>
|
||||||
|
|
||||||
public val unwrappedModule: Module<mUE>
|
public val unwrappedModule: Module<mUE>
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package ru.landgrafhomyak.db.skeleton1.api.module
|
package ru.landgrafhomyak.db.skeleton1.api.module
|
||||||
|
|
||||||
import kotlin.jvm.JvmName
|
import kotlin.jvm.JvmName
|
||||||
|
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi
|
import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.ObjectClass
|
import ru.landgrafhomyak.db.skeleton1.api.ObjectClass
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement
|
import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement
|
||||||
@ -15,12 +16,13 @@ public interface ModuleConstructorScope<mUE : Any> {
|
|||||||
public val rootNameNode: NameNode<mUE>
|
public val rootNameNode: NameNode<mUE>
|
||||||
|
|
||||||
public fun <tUE : Any> table_create(
|
public fun <tUE : Any> table_create(
|
||||||
lifeTime: Table.LifeTime = Table.LifeTime.DATABASE_SCOPE,
|
lifeTime: LifeTime = LifeTime.REGULAR,
|
||||||
location: NameNode<mUE>,
|
location: NameNode<mUE>,
|
||||||
initializer: Table.Constructor<tUE>
|
initializer: Table.Constructor<tUE>
|
||||||
): Table<tUE, mUE>
|
): Table<tUE, mUE>
|
||||||
|
|
||||||
public fun object_create(
|
public fun object_create(
|
||||||
|
lifeTime: LifeTime = LifeTime.REGULAR,
|
||||||
location: NameNode<mUE>,
|
location: NameNode<mUE>,
|
||||||
metadata: ObjectClass.ImplementationsProvider
|
metadata: ObjectClass.ImplementationsProvider
|
||||||
): ModuleScopedObject<mUE>
|
): ModuleScopedObject<mUE>
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package ru.landgrafhomyak.db.skeleton1.api.module
|
package ru.landgrafhomyak.db.skeleton1.api.module
|
||||||
|
|
||||||
import kotlin.jvm.JvmName
|
import kotlin.jvm.JvmName
|
||||||
|
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.ObjectClass
|
import ru.landgrafhomyak.db.skeleton1.api.ObjectClass
|
||||||
|
|
||||||
@ -15,4 +16,7 @@ public interface ModuleScopedObject<mUE : Any> {
|
|||||||
public val objectClassProvider: ObjectClass.ImplementationsProvider
|
public val objectClassProvider: ObjectClass.ImplementationsProvider
|
||||||
|
|
||||||
public val unwrappedModuleScopedObject: ModuleScopedObject<mUE>
|
public val unwrappedModuleScopedObject: ModuleScopedObject<mUE>
|
||||||
|
|
||||||
|
@ReflectionApi
|
||||||
|
public val lifeTime: LifeTime
|
||||||
}
|
}
|
@ -3,6 +3,7 @@ package ru.landgrafhomyak.db.skeleton1.api.table
|
|||||||
import kotlin.jvm.JvmName
|
import kotlin.jvm.JvmName
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.DatabaseType
|
import ru.landgrafhomyak.db.skeleton1.api.DatabaseType
|
||||||
|
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||||
|
|
||||||
public interface Column<RT, tUE : Any> {
|
public interface Column<RT, tUE : Any> {
|
||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
@ -20,9 +21,7 @@ public interface Column<RT, tUE : Any> {
|
|||||||
public val table: Table<tUE, *>
|
public val table: Table<tUE, *>
|
||||||
|
|
||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
public val lifeTime: LifeTime
|
||||||
@get:JvmName("willBeDeletedAfterUpgrade")
|
|
||||||
public val willBeDeletedAfterUpgrade: Boolean
|
|
||||||
|
|
||||||
public val unwrappedColumn: Column<RT, tUE>
|
public val unwrappedColumn: Column<RT, tUE>
|
||||||
}
|
}
|
@ -1,6 +1,7 @@
|
|||||||
package ru.landgrafhomyak.db.skeleton1.api.table
|
package ru.landgrafhomyak.db.skeleton1.api.table
|
||||||
|
|
||||||
import kotlin.jvm.JvmName
|
import kotlin.jvm.JvmName
|
||||||
|
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.module.Module
|
import ru.landgrafhomyak.db.skeleton1.api.module.Module
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.module.ModuleScopedObject
|
import ru.landgrafhomyak.db.skeleton1.api.module.ModuleScopedObject
|
||||||
@ -13,42 +14,19 @@ public interface Table<UE : Any, mUE : Any> {
|
|||||||
public val unwrappedTable: Table<UE, mUE>
|
public val unwrappedTable: Table<UE, mUE>
|
||||||
|
|
||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
public val pathFromParentModuleRoot: List<String>?
|
public val pathFromParentModuleRoot: List<String>
|
||||||
|
|
||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
public val parentModule: Module<mUE>
|
public val parentModule: Module<mUE>
|
||||||
|
|
||||||
public enum class LifeTime {
|
|
||||||
DATABASE_SCOPE,
|
|
||||||
TRANSACTION_SCOPE,
|
|
||||||
CONNECTION_SCOPE,
|
|
||||||
MODULE_UPGRADE_SCOPE
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
|
||||||
@get:JvmName("getLifeTime")
|
|
||||||
public val lifeTime: LifeTime
|
public val lifeTime: LifeTime
|
||||||
|
|
||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
public fun memberColumns(scope: LifeTime): Collection<Column<*, UE>>
|
||||||
@get:JvmName("getMemberColumns")
|
|
||||||
public val memberColumns: Collection<Column<*, UE>>
|
|
||||||
|
|
||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
public fun memberObjects(scope: LifeTime): Collection<TableScopedObject<UE>>
|
||||||
@get:JvmName("getMemberObjects")
|
|
||||||
public val memberObjects: Collection<TableScopedObject<UE>>
|
|
||||||
|
|
||||||
@ReflectionApi
|
|
||||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
|
||||||
@get:JvmName("getMemberColumnsWhileUpgrade")
|
|
||||||
public val memberColumnsWhileUpgrade: Collection<Column<*, UE>>
|
|
||||||
|
|
||||||
@ReflectionApi
|
|
||||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
|
||||||
@get:JvmName("getMemberObjectsWhileUpgrade")
|
|
||||||
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
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package ru.landgrafhomyak.db.skeleton1.api.table
|
package ru.landgrafhomyak.db.skeleton1.api.table
|
||||||
|
|
||||||
import kotlin.jvm.JvmName
|
import kotlin.jvm.JvmName
|
||||||
|
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
||||||
import ru.landgrafhomyak.db.skeleton1.api.ObjectClass
|
import ru.landgrafhomyak.db.skeleton1.api.ObjectClass
|
||||||
|
|
||||||
@ -14,11 +15,8 @@ public interface TableScopedObject<tUE : Any> {
|
|||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
public val objectClassProvider: ObjectClass.ImplementationsProvider
|
public val objectClassProvider: ObjectClass.ImplementationsProvider
|
||||||
|
|
||||||
|
|
||||||
@ReflectionApi
|
@ReflectionApi
|
||||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
public val lifeTime: LifeTime
|
||||||
@get:JvmName("willBeDeletedAfterUpgrade")
|
|
||||||
public val willBeDeletedAfterUpgrade: Boolean
|
|
||||||
|
|
||||||
public val unwrappedTableScopedObject: TableScopedObject<tUE>
|
public val unwrappedTableScopedObject: TableScopedObject<tUE>
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user