'DebugApi' -> 'ReflectionApi' and member collections in table and module descriptors

This commit is contained in:
Andrew Golovashevich 2025-05-16 16:11:39 +03:00
parent 3633ed898d
commit fe289fe8c5
27 changed files with 95 additions and 86 deletions

View File

@ -3,4 +3,4 @@ package ru.landgrafhomyak.db.skeleton1.api
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY)
@Retention(AnnotationRetention.BINARY)
@RequiresOptIn
public annotation class DebugApi
public annotation class ReflectionApi

View File

@ -1,13 +1,10 @@
package ru.landgrafhomyak.db.skeleton1.api.errors
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.statement.InputParam
import ru.landgrafhomyak.db.skeleton1.api.statement._Statement
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class AccessWhileInitializationException : IllegalStateException, CopyableThrowable<AccessWhileInitializationException> {
public val `object`: Any

View File

@ -1,9 +1,9 @@
package ru.landgrafhomyak.db.skeleton1.api.errors
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
@DebugApi
@ReflectionApi
public abstract class ExecutionException : RuntimeException {
public constructor() : super()
public constructor(message: String) : super(message)

View File

@ -1,8 +1,8 @@
package ru.landgrafhomyak.db.skeleton1.api.errors
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
@DebugApi
@ReflectionApi
public abstract class SchemaDefinitionException : RuntimeException {
public constructor() : super()
public constructor(message: String) : super(message)

View File

@ -1,8 +1,8 @@
package ru.landgrafhomyak.db.skeleton1.api.errors
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
@DebugApi
@ReflectionApi
public abstract class SchemaSynchronizationException : RuntimeException {
public constructor() : super()
public constructor(message: String) : super(message)

View File

@ -3,11 +3,11 @@ package ru.landgrafhomyak.db.skeleton1.api.errors
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.statement.InputParam
import ru.landgrafhomyak.db.skeleton1.api.statement._Statement
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class UninitializedParameterException : RuntimeException, CopyableThrowable<UninitializedParameterException> {
public val statement: _Statement<*, *>

View File

@ -3,11 +3,11 @@ package ru.landgrafhomyak.db.skeleton1.api.errors.definition
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.DriverMetainfo
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class EntityNotImplementedException : SchemaDefinitionException, CopyableThrowable<EntityNotImplementedException> {
public val provider: Any

View File

@ -3,10 +3,10 @@ package ru.landgrafhomyak.db.skeleton1.api.errors.definition
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class ExportedEntitiesNotImportedException : SchemaDefinitionException, CopyableThrowable<ExportedEntitiesNotImportedException> {
public val sourceScope: Any

View File

@ -1,14 +1,11 @@
package ru.landgrafhomyak.db.skeleton1.api.errors.definition
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
import ru.landgrafhomyak.db.skeleton1.api.statement.InputParam
import ru.landgrafhomyak.db.skeleton1.api.statement._Statement
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class IncorrectNameException : SchemaDefinitionException, CopyableThrowable<IncorrectNameException> {
public val name: String

View File

@ -3,10 +3,10 @@ package ru.landgrafhomyak.db.skeleton1.api.errors.definition
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class NameConflictException : SchemaDefinitionException, CopyableThrowable<NameConflictException> {
public val scope: Any

View File

@ -3,11 +3,11 @@ package ru.landgrafhomyak.db.skeleton1.api.errors.definition
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
import ru.landgrafhomyak.db.skeleton1.api.module.Namespace
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class NamespaceAlreadyBusyException : SchemaDefinitionException, CopyableThrowable<NamespaceAlreadyBusyException> {
public val namespace: Namespace<*, *>

View File

@ -3,11 +3,11 @@ package ru.landgrafhomyak.db.skeleton1.api.errors.definition
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
import ru.landgrafhomyak.db.skeleton1.api.table.Table
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class TableWithoutColumnsException : SchemaDefinitionException, CopyableThrowable<TableWithoutColumnsException> {
public val table: Table<*, *, *>

View File

@ -1,13 +1,9 @@
package ru.landgrafhomyak.db.skeleton1.api.errors.definition
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.DriverMetainfo
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
@DebugApi
@ReflectionApi
public abstract class UnboundParameterException : SchemaDefinitionException {
public val constructor: Any

View File

@ -3,11 +3,11 @@ package ru.landgrafhomyak.db.skeleton1.api.errors.definition
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
import ru.landgrafhomyak.db.skeleton1.api.module.Module
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class UnknownVersionException : SchemaDefinitionException, CopyableThrowable<UnknownVersionException> {
public val template: Module.Template<*>

View File

@ -3,10 +3,10 @@ package ru.landgrafhomyak.db.skeleton1.api.errors.definition
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class UnreferencedEntityAtUpgradeException : SchemaDefinitionException, CopyableThrowable<UnreferencedEntityAtUpgradeException> {
public val oldScope: Any

View File

@ -3,11 +3,11 @@ package ru.landgrafhomyak.db.skeleton1.api.errors.definition
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
import ru.landgrafhomyak.db.skeleton1.api.module.Module
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class VersionDuplicationException : SchemaDefinitionException, CopyableThrowable<VersionDuplicationException> {
public val template: Module.Template<*>

View File

@ -3,11 +3,10 @@ package ru.landgrafhomyak.db.skeleton1.api.errors.definition
import kotlin.jvm.JvmStatic
import kotlinx.coroutines.CopyableThrowable
import kotlinx.coroutines.ExperimentalCoroutinesApi
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
import ru.landgrafhomyak.db.skeleton1.api.module.Module
@DebugApi
@ReflectionApi
@OptIn(ExperimentalCoroutinesApi::class)
public class WrongScopeException : SchemaDefinitionException, CopyableThrowable<WrongScopeException> {
public val wrongObject: Any

View File

@ -1,12 +1,9 @@
package ru.landgrafhomyak.db.skeleton1.api.errors.synchronization
import kotlin.RuntimeException
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaSynchronizationException
import ru.landgrafhomyak.db.skeleton1.api.module.Module
@DebugApi
@ReflectionApi
public abstract class SchemaExecutionException : SchemaSynchronizationException {
public constructor() : super()
public constructor(message: String) : super(message)

View File

@ -1,12 +1,9 @@
package ru.landgrafhomyak.db.skeleton1.api.errors.synchronization
import kotlin.RuntimeException
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaSynchronizationException
import ru.landgrafhomyak.db.skeleton1.api.module.Module
@DebugApi
@ReflectionApi
public abstract class SchemaMismatchException : SchemaSynchronizationException {
public constructor() : super()
public constructor(message: String) : super(message)

View File

@ -1,10 +1,11 @@
package ru.landgrafhomyak.db.skeleton1.api.module
import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi
import ru.landgrafhomyak.db.skeleton1.api.statement.QueriesCompiler
import ru.landgrafhomyak.db.skeleton1.api.runtime.Transaction
import ru.landgrafhomyak.db.skeleton1.api.table.Table
public interface Module<mUE : Any, IK : Any> {
@ -12,15 +13,30 @@ public interface Module<mUE : Any, IK : Any> {
@get:JvmName("uExt")
public val uExt: mUE
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getVersionKey")
public val versionKey: String
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getParent")
public val parent: Module<*, IK>?
@get:JvmName("getParentModule")
public val parentModule: Module<*, IK>?
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getMemberTables")
public val memberTables: Collection<Table<*, mUE, IK>>
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getMemberObjects")
public val memberObjects: Collection<ModuleScopedObject<*, mUE, IK>>
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getMemberModules")
public val memberModules: Collection<Module<*, IK>>
public interface Constructor<mUE : Any, IK : Any> {
@Suppress("INAPPLICABLE_JVM_NAME")

View File

@ -1,20 +1,20 @@
package ru.landgrafhomyak.db.skeleton1.api.module
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.ObjectOperations
public interface ModuleScopedObject<oUE : Any?, mUE : Any, IK : Any> {
public val uExt: oUE
@DebugApi
@ReflectionApi
public val name: String
@DebugApi
@ReflectionApi
public val module: Module<mUE, IK>
@DebugApi
@ReflectionApi
public val namespace: Namespace<mUE, IK>
@DebugApi
@ReflectionApi
public val meta: ObjectOperations.ImplementationsProvider<oUE>
}

View File

@ -1,19 +1,19 @@
package ru.landgrafhomyak.db.skeleton1.api.module
import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
public interface Namespace<mUE : Any, IK : Any> {
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getName")
public val name: String
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getPath")
public val path: List<String>
@DebugApi
@ReflectionApi
public val module: Module<mUE, IK>
}

View File

@ -1,15 +1,15 @@
package ru.landgrafhomyak.db.skeleton1.api.statement
import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
public interface InputParam<@Suppress("unused") RT, sUE : Any, IK : Any> {
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getName")
public val name: String
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getStatement")
public val statement: _Statement<sUE, IK>

View File

@ -1,15 +1,15 @@
package ru.landgrafhomyak.db.skeleton1.api.statement
import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
public interface OutputColumn<@Suppress("unused") RT, sUE : Any, IK : Any> {
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("name")
public val name: String
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getStatement")
public val statement: _Statement<sUE, IK>

View File

@ -1,11 +1,11 @@
package ru.landgrafhomyak.db.skeleton1.api.table
import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.DatabaseType
public interface Column<RT, tUE : Any, IK : Any> {
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("name")
public val name: String
@ -14,7 +14,7 @@ public interface Column<RT, tUE : Any, IK : Any> {
@get:JvmName("type")
public val type: DatabaseType.ImplementationsProvider<RT>
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getTable")
public val table: Table<tUE, *, IK>

View File

@ -1,7 +1,7 @@
package ru.landgrafhomyak.db.skeleton1.api.table
import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.module.Module
import ru.landgrafhomyak.db.skeleton1.api.module.Namespace
@ -10,17 +10,17 @@ public interface Table<UE : Any, mUE : Any, IK : Any> {
@get:JvmName("uExt")
public val uExt: UE
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getName")
public val name: String
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getNamespace")
public val namespace: Namespace<mUE, IK>
@DebugApi
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getModule")
public val module: Module<mUE, IK>
@ -32,11 +32,21 @@ public interface Table<UE : Any, mUE : Any, IK : Any> {
MODULE_UPGRADE_SCOPE
}
@DebugApi
@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, IK>>
@ReflectionApi
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("getMemberObjects")
public val memberObjects: Collection<TableScopedObject<*, UE, IK>>
public interface Constructor<tUE : Any, RK : Any> {
public fun createTable(context: TableConstructorScope<tUE, RK>): tUE
}

View File

@ -1,17 +1,17 @@
package ru.landgrafhomyak.db.skeleton1.api.table
import ru.landgrafhomyak.db.skeleton1.api.DebugApi
import ru.landgrafhomyak.db.skeleton1.api.ReflectionApi
import ru.landgrafhomyak.db.skeleton1.api.ObjectOperations
public interface TableScopedObject<oUE : Any?, tUE : Any, IK : Any> {
public val uExt: oUE
@DebugApi
@ReflectionApi
public val name: String
@DebugApi
@ReflectionApi
public val table: Table<tUE, *, IK>
@DebugApi
@ReflectionApi
public val meta: ObjectOperations.ImplementationsProvider<oUE>
}