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
|
||||
|
||||
import kotlin.jvm.JvmName
|
||||
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
||||
import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi
|
||||
import ru.landgrafhomyak.db.skeleton1.api.statement.QueriesCompiler
|
||||
@ -29,19 +30,16 @@ public interface Module<mUE : Any> {
|
||||
public val pathFromParentModuleRoot: List<String>?
|
||||
|
||||
@ReflectionApi
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@get:JvmName("getMemberTables")
|
||||
public val memberTables: Collection<Table<*, mUE>>
|
||||
public val lifeTime: LifeTime
|
||||
|
||||
@ReflectionApi
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@get:JvmName("getMemberObjects")
|
||||
public val memberObjects: Collection<ModuleScopedObject<mUE>>
|
||||
public fun memberTables(lifeTime: LifeTime): Collection<Table<*, mUE>>
|
||||
|
||||
@ReflectionApi
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@get:JvmName("getMemberSubmodules")
|
||||
public val memberSubmodules: Collection<Module<*>>
|
||||
public fun memberObjects(lifeTime: LifeTime): Collection<ModuleScopedObject<mUE>>
|
||||
|
||||
@ReflectionApi
|
||||
public fun memberSubmodules(lifeTime: LifeTime): Collection<Table<*, mUE>>
|
||||
|
||||
public val unwrappedModule: Module<mUE>
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
package ru.landgrafhomyak.db.skeleton1.api.module
|
||||
|
||||
import kotlin.jvm.JvmName
|
||||
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||
import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi
|
||||
import ru.landgrafhomyak.db.skeleton1.api.ObjectClass
|
||||
import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement
|
||||
@ -15,12 +16,13 @@ public interface ModuleConstructorScope<mUE : Any> {
|
||||
public val rootNameNode: NameNode<mUE>
|
||||
|
||||
public fun <tUE : Any> table_create(
|
||||
lifeTime: Table.LifeTime = Table.LifeTime.DATABASE_SCOPE,
|
||||
lifeTime: LifeTime = LifeTime.REGULAR,
|
||||
location: NameNode<mUE>,
|
||||
initializer: Table.Constructor<tUE>
|
||||
): Table<tUE, mUE>
|
||||
|
||||
public fun object_create(
|
||||
lifeTime: LifeTime = LifeTime.REGULAR,
|
||||
location: NameNode<mUE>,
|
||||
metadata: ObjectClass.ImplementationsProvider
|
||||
): ModuleScopedObject<mUE>
|
||||
|
@ -1,6 +1,7 @@
|
||||
package ru.landgrafhomyak.db.skeleton1.api.module
|
||||
|
||||
import kotlin.jvm.JvmName
|
||||
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
||||
import ru.landgrafhomyak.db.skeleton1.api.ObjectClass
|
||||
|
||||
@ -15,4 +16,7 @@ public interface ModuleScopedObject<mUE : Any> {
|
||||
public val objectClassProvider: ObjectClass.ImplementationsProvider
|
||||
|
||||
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 ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
||||
import ru.landgrafhomyak.db.skeleton1.api.DatabaseType
|
||||
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||
|
||||
public interface Column<RT, tUE : Any> {
|
||||
@ReflectionApi
|
||||
@ -20,9 +21,7 @@ public interface Column<RT, tUE : Any> {
|
||||
public val table: Table<tUE, *>
|
||||
|
||||
@ReflectionApi
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@get:JvmName("willBeDeletedAfterUpgrade")
|
||||
public val willBeDeletedAfterUpgrade: Boolean
|
||||
public val lifeTime: LifeTime
|
||||
|
||||
public val unwrappedColumn: Column<RT, tUE>
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package ru.landgrafhomyak.db.skeleton1.api.table
|
||||
|
||||
import kotlin.jvm.JvmName
|
||||
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
||||
import ru.landgrafhomyak.db.skeleton1.api.module.Module
|
||||
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>
|
||||
|
||||
@ReflectionApi
|
||||
public val pathFromParentModuleRoot: List<String>?
|
||||
public val pathFromParentModuleRoot: List<String>
|
||||
|
||||
@ReflectionApi
|
||||
public val parentModule: Module<mUE>
|
||||
|
||||
public enum class LifeTime {
|
||||
DATABASE_SCOPE,
|
||||
TRANSACTION_SCOPE,
|
||||
CONNECTION_SCOPE,
|
||||
MODULE_UPGRADE_SCOPE
|
||||
}
|
||||
|
||||
@ReflectionApi
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@get:JvmName("getLifeTime")
|
||||
public val lifeTime: LifeTime
|
||||
|
||||
@ReflectionApi
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@get:JvmName("getMemberColumns")
|
||||
public val memberColumns: Collection<Column<*, UE>>
|
||||
public fun memberColumns(scope: LifeTime): Collection<Column<*, UE>>
|
||||
|
||||
@ReflectionApi
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@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 fun memberObjects(scope: LifeTime): Collection<TableScopedObject<UE>>
|
||||
|
||||
public interface Constructor<tUE : Any> {
|
||||
public fun createTable(context: TableConstructorScope<tUE>): tUE
|
||||
|
@ -1,6 +1,7 @@
|
||||
package ru.landgrafhomyak.db.skeleton1.api.table
|
||||
|
||||
import kotlin.jvm.JvmName
|
||||
import ru.landgrafhomyak.db.skeleton1.api.LifeTime
|
||||
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
|
||||
import ru.landgrafhomyak.db.skeleton1.api.ObjectClass
|
||||
|
||||
@ -14,11 +15,8 @@ public interface TableScopedObject<tUE : Any> {
|
||||
@ReflectionApi
|
||||
public val objectClassProvider: ObjectClass.ImplementationsProvider
|
||||
|
||||
|
||||
@ReflectionApi
|
||||
@Suppress("INAPPLICABLE_JVM_NAME")
|
||||
@get:JvmName("willBeDeletedAfterUpgrade")
|
||||
public val willBeDeletedAfterUpgrade: Boolean
|
||||
public val lifeTime: LifeTime
|
||||
|
||||
public val unwrappedTableScopedObject: TableScopedObject<tUE>
|
||||
}
|
Loading…
Reference in New Issue
Block a user