Safe way for manual column creating

This commit is contained in:
Andrew Golovashevich 2025-05-16 20:06:19 +03:00
parent 3d0d2ec38e
commit bb4fadac9d
2 changed files with 23 additions and 2 deletions

View File

@ -2,7 +2,7 @@ package ru.landgrafhomyak.db.skeleton1.api
public enum class ApiVersion(public val str: String) { public enum class ApiVersion(public val str: String) {
V_0_0("0.0") { V_0_0("0.0") {
override fun isImplements(v: ApiVersion) = this === v override fun isImplements(v: ApiVersion): Boolean = this === v
}; };
override fun toString(): String = "<db-skeleton api version '${this.str}'>" override fun toString(): String = "<db-skeleton api version '${this.str}'>"

View File

@ -9,7 +9,28 @@ import ru.landgrafhomyak.db.skeleton1.api.runtime.InputRow
public interface TableConstructorScope<tUE : Any, IK : Any> { public interface TableConstructorScope<tUE : Any, IK : Any> {
public fun <RT> column(name: String, type: DatabaseType.ImplementationsProvider<RT>, manualCreate: Boolean = false): Column<RT, tUE, IK> public fun <RT> column(name: String, type: DatabaseType.ImplementationsProvider<RT>): Column<RT, tUE, IK>
public fun <RT> column(
name: String, type: DatabaseType.ImplementationsProvider<RT>,
alterCreateColumn: _Statement.Void2Void<*, IK>
): Column<RT, tUE, IK>
public fun <RT> column(
name: String, type: DatabaseType.ImplementationsProvider<RT>,
alterCreateColumn: RawStatement.Void2Void.ImplementationsProvider<*>
): Column<RT, tUE, IK>
@LowLevelApi
public fun <RT, sUE : Any> _column(
name: String, type: DatabaseType.ImplementationsProvider<RT>,
alterCreateColumn: _Statement.Void2Void<sUE, IK>
): InputRow._Scope<sUE, IK, Column<RT, tUE, IK>>
@LowLevelApi
public fun <RT, sUE : Any> _column(
name: String, type: DatabaseType.ImplementationsProvider<RT>,
alterCreateColumn: RawStatement.Params2Void.ImplementationsProvider<sUE>
): InputRow._Scope<sUE, IK, Column<RT, tUE, IK>>
public fun <oUE : Any?> tableScopedObject(name: String, metadata: ObjectOperations.ImplementationsProvider<oUE>): TableScopedObject<oUE, tUE, IK> public fun <oUE : Any?> tableScopedObject(name: String, metadata: ObjectOperations.ImplementationsProvider<oUE>): TableScopedObject<oUE, tUE, IK>