Object operations

This commit is contained in:
Andrew Golovashevich 2025-05-11 23:34:47 +03:00
parent 6de9eba7b0
commit 98ed264aa1
10 changed files with 48 additions and 25 deletions

View File

@ -7,7 +7,7 @@ public interface DatabaseType<@Suppress("unused") RUNTIME_TYPE : Any?> {
public interface Scope<RUNTIME_TYPE> { public interface Scope<RUNTIME_TYPE> {
@Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS") @Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS")
public fun <DATABASE_TYPE, DATABASE_TYPE_UNBOUND> addImplementation( public fun <DATABASE_TYPE, DATABASE_TYPE_UNBOUND> addImplementation(
key: DriverType<DATABASE_TYPE_UNBOUND, *, *, *, *, *, *, *, *>, type: DATABASE_TYPE key: DriverType<DATABASE_TYPE_UNBOUND, *, *, *, *, *, *, *, *, *>, type: DATABASE_TYPE
) where DATABASE_TYPE_UNBOUND : DatabaseType<*>, ) where DATABASE_TYPE_UNBOUND : DatabaseType<*>,
DATABASE_TYPE : DatabaseType<RUNTIME_TYPE>, DATABASE_TYPE : DatabaseType<RUNTIME_TYPE>,
DATABASE_TYPE : DATABASE_TYPE_UNBOUND DATABASE_TYPE : DATABASE_TYPE_UNBOUND

View File

@ -11,6 +11,7 @@ public interface DriverType<
STATEMENT_CONSTRUCTOR__PARAMS_2_VOID : RawStatement.Params2Void.Constructor<*>, STATEMENT_CONSTRUCTOR__PARAMS_2_VOID : RawStatement.Params2Void.Constructor<*>,
STATEMENT_CONSTRUCTOR__PARAMS_2_ROW : RawStatement.Params2Row.Constructor<*>, STATEMENT_CONSTRUCTOR__PARAMS_2_ROW : RawStatement.Params2Row.Constructor<*>,
STATEMENT_CONSTRUCTOR__PARAMS_2_ROW_OR_NULL : RawStatement.Params2RowOrNull.Constructor<*>, STATEMENT_CONSTRUCTOR__PARAMS_2_ROW_OR_NULL : RawStatement.Params2RowOrNull.Constructor<*>,
STATEMENT_CONSTRUCTOR__PARAMS_2_TABLE : RawStatement.Params2Table.Constructor<*> STATEMENT_CONSTRUCTOR__PARAMS_2_TABLE : RawStatement.Params2Table.Constructor<*>,
> { OBJECT_OPERATIONS : ObjectOperations<*>
> {
} }

View File

@ -0,0 +1,16 @@
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 interface Scope<RUNTIME_TYPE> {
@Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS")
public fun <OPERATIONS, OPERATIONS_UNBOUND> addImplementation(
key: DriverType<*, *, *, *, *, *, *, *, *, OPERATIONS_UNBOUND>, type: OPERATIONS
) where OPERATIONS_UNBOUND : ObjectOperations<*>,
OPERATIONS : ObjectOperations<RUNTIME_TYPE>,
OPERATIONS : OPERATIONS_UNBOUND
}
}
}

View File

@ -11,30 +11,30 @@ import ru.landgrafhomyak.db.skeleton1.api.errors.SchemaDefinitionException
@OptIn(ExperimentalCoroutinesApi::class) @OptIn(ExperimentalCoroutinesApi::class)
public class EntityNotImplementedException : SchemaDefinitionException, CopyableThrowable<EntityNotImplementedException> { public class EntityNotImplementedException : SchemaDefinitionException, CopyableThrowable<EntityNotImplementedException> {
public val provider: Any public val provider: Any
public val driver: DriverType<*, *, *, *, *, *, *, *, *> public val driver: DriverType<*, *, *, *, *, *, *, *, *, *>
public constructor(provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *>) : super(formatMessage(provider, driver)) { public constructor(provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *, *>) : super(formatMessage(provider, driver)) {
this.provider = provider this.provider = provider
this.driver = driver this.driver = driver
} }
public constructor(provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *>, customMessage: String) : super(customMessage) { public constructor(provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *, *>, customMessage: String) : super(customMessage) {
this.provider = provider this.provider = provider
this.driver = driver this.driver = driver
} }
public constructor(provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *>, customMessage: String, cause: Throwable) : super(customMessage, cause) { public constructor(provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *, *>, customMessage: String, cause: Throwable) : super(customMessage, cause) {
this.provider = provider this.provider = provider
this.driver = driver this.driver = driver
} }
public constructor(provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *>, cause: Throwable) : super(formatMessage(provider, driver), cause) { public constructor(provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *, *>, cause: Throwable) : super(formatMessage(provider, driver), cause) {
this.provider = provider this.provider = provider
this.driver = driver this.driver = driver
} }
public constructor( public constructor(
provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *>, provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *, *>,
message: String?, cause: Throwable?, message: String?, cause: Throwable?,
@Suppress("unused", "LocalVariableName") _marker: Unit @Suppress("unused", "LocalVariableName") _marker: Unit
) : super(message, cause, _marker) { ) : super(message, cause, _marker) {
@ -55,7 +55,7 @@ public class EntityNotImplementedException : SchemaDefinitionException, Copyable
public companion object { public companion object {
@JvmStatic @JvmStatic
public fun formatMessage( public fun formatMessage(
provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *> provider: Any, driver: DriverType<*, *, *, *, *, *, *, *, *, *>
): String = "$provider doesn't provides implementation for driver $driver" ): String = "$provider doesn't provides implementation for driver $driver"
} }
} }

View File

@ -2,6 +2,7 @@ package ru.landgrafhomyak.db.skeleton1.api.module
import kotlin.jvm.JvmName import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi
import ru.landgrafhomyak.db.skeleton1.api.ObjectOperations
import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement
import ru.landgrafhomyak.db.skeleton1.api.statement._Statement import ru.landgrafhomyak.db.skeleton1.api.statement._Statement
import ru.landgrafhomyak.db.skeleton1.api.table.Table import ru.landgrafhomyak.db.skeleton1.api.table.Table
@ -19,7 +20,7 @@ public interface CreateModuleScope<mUE : Any, RK : Any> {
name: String, initializer: Table.Constructor<tUE, RK> name: String, initializer: Table.Constructor<tUE, RK>
): Table<tUE, mUE, RK> ): Table<tUE, mUE, RK>
public fun moduleScopedObject(namespace: Namespace<mUE, RK> = this.rootNs, name: String): ModuleScopedObject<mUE, RK> public fun <oUE : Any?> moduleScopedObject(namespace: Namespace<mUE, RK> = this.rootNs, name: String, metadata: ObjectOperations.ImplementationsProvider<oUE>): ModuleScopedObject<oUE, mUE, RK>
public fun <mUE : Any> substituteModule(rootNs: Namespace<mUE, RK>, template: Module.Template<mUE>): Module<mUE, RK> public fun <mUE : Any> substituteModule(rootNs: Namespace<mUE, RK>, template: Module.Template<mUE>): Module<mUE, RK>

View File

@ -2,7 +2,8 @@ package ru.landgrafhomyak.db.skeleton1.api.module
import ru.landgrafhomyak.db.skeleton1.api.DebugApi import ru.landgrafhomyak.db.skeleton1.api.DebugApi
public interface ModuleScopedObject<mUE : Any, RUNTIME_KEY : Any> { public interface ModuleScopedObject<oUE : Any?, mUE : Any, RUNTIME_KEY : Any> {
public val uExt: oUE
@DebugApi @DebugApi
public val name: String public val name: String

View File

@ -16,7 +16,7 @@ public interface RawStatement<qUE : Any?, RUNTIME_KEY : Any> : _Statement<qUE, R
public interface Scope<USER_EXTENSION : Any?> { public interface Scope<USER_EXTENSION : Any?> {
@Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS") @Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS")
public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation( public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation(
driverType: DriverType<*, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *, *, *, *>, driverType: DriverType<*, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *, *, *, *, *>,
constructor: STATEMENT_CONSTRUCTOR constructor: STATEMENT_CONSTRUCTOR
) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>, ) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>,
STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>, STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>,
@ -36,7 +36,7 @@ public interface RawStatement<qUE : Any?, RUNTIME_KEY : Any> : _Statement<qUE, R
public interface Scope<USER_EXTENSION : Any> { public interface Scope<USER_EXTENSION : Any> {
@Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS") @Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS")
public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation( public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation(
driverType: DriverType<*, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *, *, *>, driverType: DriverType<*, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *, *, *, *>,
constructor: STATEMENT_CONSTRUCTOR constructor: STATEMENT_CONSTRUCTOR
) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>, ) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>,
STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>, STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>,
@ -56,7 +56,7 @@ public interface RawStatement<qUE : Any?, RUNTIME_KEY : Any> : _Statement<qUE, R
public interface Scope<USER_EXTENSION : Any> { public interface Scope<USER_EXTENSION : Any> {
@Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS") @Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS")
public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation( public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation(
driverType: DriverType<*, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *, *>, driverType: DriverType<*, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *, *, *>,
constructor: STATEMENT_CONSTRUCTOR constructor: STATEMENT_CONSTRUCTOR
) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>, ) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>,
STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>, STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>,
@ -77,7 +77,7 @@ public interface RawStatement<qUE : Any?, RUNTIME_KEY : Any> : _Statement<qUE, R
public interface Selector<USER_EXTENSION : Any> { public interface Selector<USER_EXTENSION : Any> {
@Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS") @Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS")
public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation( public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation(
driverType: DriverType<*, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *>, driverType: DriverType<*, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *, *>,
constructor: STATEMENT_CONSTRUCTOR constructor: STATEMENT_CONSTRUCTOR
) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>, ) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>,
STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>, STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>,
@ -97,7 +97,7 @@ public interface RawStatement<qUE : Any?, RUNTIME_KEY : Any> : _Statement<qUE, R
public interface Scope<USER_EXTENSION : Any> { public interface Scope<USER_EXTENSION : Any> {
@Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS") @Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS")
public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation( public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation(
driverType: DriverType<*, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *>, driverType: DriverType<*, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *>,
constructor: STATEMENT_CONSTRUCTOR constructor: STATEMENT_CONSTRUCTOR
) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>, ) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>,
STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>, STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>,
@ -117,7 +117,7 @@ public interface RawStatement<qUE : Any?, RUNTIME_KEY : Any> : _Statement<qUE, R
public interface Scope<USER_EXTENSION : Any> { public interface Scope<USER_EXTENSION : Any> {
@Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS") @Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS")
public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation( public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation(
driverType: DriverType<*, *, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *>, driverType: DriverType<*, *, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *>,
constructor: STATEMENT_CONSTRUCTOR constructor: STATEMENT_CONSTRUCTOR
) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>, ) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>,
STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>, STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>,
@ -137,7 +137,7 @@ public interface RawStatement<qUE : Any?, RUNTIME_KEY : Any> : _Statement<qUE, R
public interface Scope<USER_EXTENSION : Any> { public interface Scope<USER_EXTENSION : Any> {
@Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS") @Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS")
public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation( public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation(
driverType: DriverType<*, *, *, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *>, driverType: DriverType<*, *, *, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *>,
constructor: STATEMENT_CONSTRUCTOR constructor: STATEMENT_CONSTRUCTOR
) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>, ) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>,
STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>, STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>,
@ -157,7 +157,7 @@ public interface RawStatement<qUE : Any?, RUNTIME_KEY : Any> : _Statement<qUE, R
public interface Scope<USER_EXTENSION : Any> { public interface Scope<USER_EXTENSION : Any> {
@Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS") @Suppress("ERROR_SUPPRESSION", "BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER", "INCONSISTENT_TYPE_PARAMETER_BOUNDS")
public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation( public fun <STATEMENT_CONSTRUCTOR, STATEMENT_CONSTRUCTOR_UNBOUND> addImplementation(
driverType: DriverType<*, *, *, *, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND>, driverType: DriverType<*, *, *, *, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *>,
constructor: STATEMENT_CONSTRUCTOR constructor: STATEMENT_CONSTRUCTOR
) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>, ) where STATEMENT_CONSTRUCTOR_UNBOUND : Constructor<*>,
STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>, STATEMENT_CONSTRUCTOR : Constructor<USER_EXTENSION>,

View File

@ -2,6 +2,7 @@ package ru.landgrafhomyak.db.skeleton1.api.table
import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi
import ru.landgrafhomyak.db.skeleton1.api.DatabaseType import ru.landgrafhomyak.db.skeleton1.api.DatabaseType
import ru.landgrafhomyak.db.skeleton1.api.ObjectOperations
import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement
import ru.landgrafhomyak.db.skeleton1.api.statement._Statement import ru.landgrafhomyak.db.skeleton1.api.statement._Statement
import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow
@ -11,7 +12,7 @@ public interface TableConstructorScope<tUE : Any, RK : Any> {
public fun <RT> column(name: String, type: DatabaseType.ImplementationsProvider<RT>, manualCreate: Boolean = false): Column<RT, tUE, RK> public fun <RT> column(name: String, type: DatabaseType.ImplementationsProvider<RT>, manualCreate: Boolean = false): Column<RT, tUE, RK>
public fun <RT, ttUE : Any> columnWithBoundType(name: String, foreign: Column<RT, ttUE, RK>): Column<RT, tUE, RK> public fun <RT, ttUE : Any> columnWithBoundType(name: String, foreign: Column<RT, ttUE, RK>): Column<RT, tUE, RK>
public fun tableScopedObject(name: String): TableScopedObject<tUE, RK> public fun <oUE : Any?> tableScopedObject(name: String, metadata: ObjectOperations.ImplementationsProvider<oUE>): TableScopedObject<oUE, tUE, RK>
public fun addAlterStatement(stmt: _Statement.Void2Void<*, RK>) public fun addAlterStatement(stmt: _Statement.Void2Void<*, RK>)
public fun addAlterStatement(stmt: RawStatement.Void2Void.ImplementationsProvider<*>) public fun addAlterStatement(stmt: RawStatement.Void2Void.ImplementationsProvider<*>)

View File

@ -2,7 +2,9 @@ package ru.landgrafhomyak.db.skeleton1.api.table
import ru.landgrafhomyak.db.skeleton1.api.DebugApi import ru.landgrafhomyak.db.skeleton1.api.DebugApi
public interface TableScopedObject<tUE : Any, RUNTIME_KEY : Any> { public interface TableScopedObject<oUE : Any?, tUE : Any, RUNTIME_KEY : Any> {
public val uExt: oUE
@DebugApi @DebugApi
public val name: String public val name: String

View File

@ -1,6 +1,7 @@
package ru.landgrafhomyak.db.skeleton1.api.table package ru.landgrafhomyak.db.skeleton1.api.table
import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi import ru.landgrafhomyak.db.skeleton1.api.LowLevelApi
import ru.landgrafhomyak.db.skeleton1.api.ObjectOperations
import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement import ru.landgrafhomyak.db.skeleton1.api.statement.RawStatement
import ru.landgrafhomyak.db.skeleton1.api.statement._Statement import ru.landgrafhomyak.db.skeleton1.api.statement._Statement
import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow
@ -18,9 +19,9 @@ public interface TableUpgradeScope<tnUE : Any, toUE : Any, RK : Any> : TableCons
public fun removeColumnWithBoundType(c: Column<*, toUE, RK>) public fun removeColumnWithBoundType(c: Column<*, toUE, RK>)
public fun <RT> removeColumnWithBoundTypeAfterUpgrade(c: Column<RT, toUE, RK>): Column<RT, tnUE, RK> public fun <RT> removeColumnWithBoundTypeAfterUpgrade(c: Column<RT, toUE, RK>): Column<RT, tnUE, RK>
public fun keepTableScopedObject(obj: TableScopedObject<toUE, RK>): TableScopedObject<tnUE, RK> public fun <oUE : Any?> keepTableScopedObject(obj: TableScopedObject<oUE, toUE, RK>): TableScopedObject<oUE, tnUE, RK>
public fun renameTableScopedObject(obj: TableScopedObject<toUE, RK>, newName: String): TableScopedObject<tnUE, RK> public fun <oUE : Any?> renameTableScopedObject(obj: TableScopedObject<oUE, toUE, RK>, newName: String): TableScopedObject<oUE, tnUE, RK>
public fun removeTableScopedObject(obj: TableScopedObject<toUE, RK>): TableScopedObject<tnUE, RK> public fun <oUE : Any?> removeTableScopedObject(obj: TableScopedObject<oUE, toUE, RK>): TableScopedObject<oUE, tnUE, RK>
public fun addAlterStatementAfterUpgrade(stmt: _Statement.Void2Void<*, RK>) public fun addAlterStatementAfterUpgrade(stmt: _Statement.Void2Void<*, RK>)