Input and Output rows now have property to access uExt

This commit is contained in:
Andrew Golovashevich 2025-02-22 10:49:16 +03:00
parent d7877e57bc
commit 6f00197aa7
3 changed files with 37 additions and 33 deletions

View File

@ -11,16 +11,16 @@ public interface Reducer<rUE : Any> {
public fun interface Linker<_rUE : Any, qUE : Any, oUE : Any> {
public fun link(rUE: _rUE, linker: Scope<_rUE, qUE>): oUE
public fun link(linker: Scope<_rUE, qUE>): oUE
public interface Scope<_rUE : Any, qUE : Any> {
public val rUE: _rUE
public fun <RT, DT : DatabaseType<RT>> link(red: BidirectionalColumn<RT, DT, _rUE>, src: IntermediateColumn<RT, DT, qUE>): IntermediateColumn<RT, DT, qUE>
public fun <RT, DT : DatabaseType<RT>> linkAndInitialize(red: BidirectionalColumn<RT, DT, _rUE>, src: IntermediateColumn<RT, DT, qUE>, initial: RT): IntermediateColumn<RT, DT, qUE>
public fun <RT, DT : DatabaseType<RT>> linkAndInitialize(red: BidirectionalColumn<RT, DT, _rUE>, src: IntermediateColumn<RT, DT, qUE>, initial: QueryParam<RT, DT, qUE>): IntermediateColumn<RT, DT, qUE>
public fun <RT, DT : DatabaseType<RT>> link(red: OutputColumn<RT, DT, _rUE>): IntermediateColumn<RT, DT, qUE>
public fun <RT, DT : DatabaseType<RT>> linkAndInitialize(red: OutputColumn<RT, DT, _rUE>, initial: RT): IntermediateColumn<RT, DT, qUE>
public fun <RT, DT : DatabaseType<RT>> linkAndInitialize(red: OutputColumn<RT, DT, _rUE>, initial: QueryParam<RT, DT, qUE>): IntermediateColumn<RT, DT, qUE>
public interface Scope<rUE : Any, qUE : Any> {
public val uExt: rUE
public fun <RT, DT : DatabaseType<RT>> link(red: BidirectionalColumn<RT, DT, rUE>, src: IntermediateColumn<RT, DT, qUE>): IntermediateColumn<RT, DT, qUE>
public fun <RT, DT : DatabaseType<RT>> linkAndInitialize(red: BidirectionalColumn<RT, DT, rUE>, src: IntermediateColumn<RT, DT, qUE>, initial: RT): IntermediateColumn<RT, DT, qUE>
public fun <RT, DT : DatabaseType<RT>> linkAndInitialize(red: BidirectionalColumn<RT, DT, rUE>, src: IntermediateColumn<RT, DT, qUE>, initial: QueryParam<RT, DT, qUE>): IntermediateColumn<RT, DT, qUE>
public fun <RT, DT : DatabaseType<RT>> link(red: OutputColumn<RT, DT, rUE>): IntermediateColumn<RT, DT, qUE>
public fun <RT, DT : DatabaseType<RT>> linkAndInitialize(red: OutputColumn<RT, DT, rUE>, initial: RT): IntermediateColumn<RT, DT, qUE>
public fun <RT, DT : DatabaseType<RT>> linkAndInitialize(red: OutputColumn<RT, DT, rUE>, initial: QueryParam<RT, DT, qUE>): IntermediateColumn<RT, DT, qUE>
}
}

View File

@ -4,19 +4,21 @@ import ru.landgrafhomyak.db.serdha0.api.LowLevelApi
import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType
import ru.landgrafhomyak.db.serdha0.api.misc.QueryParam
public interface InputRow<QueryUserExtension : Any/* todo*/> {
public operator fun <RuntimeType> set(c: QueryParam<RuntimeType, *, QueryUserExtension>, value: RuntimeType)
public interface InputRow<qUE : Any> {
public val uExt: qUE
public operator fun set(c: QueryParam<Byte, *, QueryUserExtension>, value: Byte): Unit = this.set<Byte>(c, value)
public operator fun set(c: QueryParam<UByte, *, QueryUserExtension>, value: UByte): Unit = this.set<UByte>(c, value)
public operator fun set(c: QueryParam<Short, *, QueryUserExtension>, value: Short): Unit = this.set<Short>(c, value)
public operator fun set(c: QueryParam<UShort, *, QueryUserExtension>, value: UShort): Unit = this.set<UShort>(c, value)
public operator fun set(c: QueryParam<Int, *, QueryUserExtension>, value: Int): Unit = this.set<Int>(c, value)
public operator fun set(c: QueryParam<UInt, *, QueryUserExtension>, value: UInt): Unit = this.set<UInt>(c, value)
public operator fun set(c: QueryParam<Long, *, QueryUserExtension>, value: Long): Unit = this.set<Long>(c, value)
public operator fun set(c: QueryParam<ULong, *, QueryUserExtension>, value: ULong): Unit = this.set<ULong>(c, value)
public operator fun set(c: QueryParam<Char, *, QueryUserExtension>, value: Char): Unit = this.set<Char>(c, value)
public operator fun set(c: QueryParam<Boolean, *, QueryUserExtension>, value: Boolean): Unit = this.set<Boolean>(c, value)
public operator fun <RuntimeType> set(c: QueryParam<RuntimeType, *, qUE>, value: RuntimeType)
public operator fun set(c: QueryParam<Byte, *, qUE>, value: Byte): Unit = this.set<Byte>(c, value)
public operator fun set(c: QueryParam<UByte, *, qUE>, value: UByte): Unit = this.set<UByte>(c, value)
public operator fun set(c: QueryParam<Short, *, qUE>, value: Short): Unit = this.set<Short>(c, value)
public operator fun set(c: QueryParam<UShort, *, qUE>, value: UShort): Unit = this.set<UShort>(c, value)
public operator fun set(c: QueryParam<Int, *, qUE>, value: Int): Unit = this.set<Int>(c, value)
public operator fun set(c: QueryParam<UInt, *, qUE>, value: UInt): Unit = this.set<UInt>(c, value)
public operator fun set(c: QueryParam<Long, *, qUE>, value: Long): Unit = this.set<Long>(c, value)
public operator fun set(c: QueryParam<ULong, *, qUE>, value: ULong): Unit = this.set<ULong>(c, value)
public operator fun set(c: QueryParam<Char, *, qUE>, value: Char): Unit = this.set<Char>(c, value)
public operator fun set(c: QueryParam<Boolean, *, qUE>, value: Boolean): Unit = this.set<Boolean>(c, value)
public interface WithRedirect<QueryUserExtension : Any, ParentQueryUserExtension : Any> : InputRow<QueryUserExtension> {
public fun <RT, DT : DatabaseType<RT>> redirect(c: QueryParam<RT, DT, QueryUserExtension>, value: QueryParam<RT, DT, ParentQueryUserExtension>)

View File

@ -3,19 +3,21 @@ package ru.landgrafhomyak.db.serdha0.api.runtime
import ru.landgrafhomyak.db.serdha0.api.LowLevelApi
import ru.landgrafhomyak.db.serdha0.api.misc.Column
public interface OutputRow<QueryUserExtension : Any> {
public operator fun <RuntimeType> get(c: Column<RuntimeType, *, QueryUserExtension>): RuntimeType
public interface OutputRow<qUE : Any> {
public val uExt: qUE
public operator fun get(c: Column<Byte, *, QueryUserExtension>): Byte = this.get<Byte>(c)
public operator fun get(c: Column<UByte, *, QueryUserExtension>): UByte = this.get<UByte>(c)
public operator fun get(c: Column<Short, *, QueryUserExtension>): Short = this.get<Short>(c)
public operator fun get(c: Column<UShort, *, QueryUserExtension>): UShort = this.get<UShort>(c)
public operator fun get(c: Column<Int, *, QueryUserExtension>): Int = this.get<Int>(c)
public operator fun get(c: Column<UInt, *, QueryUserExtension>): UInt = this.get<UInt>(c)
public operator fun get(c: Column<Long, *, QueryUserExtension>): Long = this.get<Long>(c)
public operator fun get(c: Column<ULong, *, QueryUserExtension>): ULong = this.get<ULong>(c)
public operator fun get(c: Column<Char, *, QueryUserExtension>): Char = this.get<Char>(c)
public operator fun get(c: Column<Boolean, *, QueryUserExtension>): Boolean = this.get<Boolean>(c)
public operator fun <RuntimeType> get(c: Column<RuntimeType, *, qUE>): RuntimeType
public operator fun get(c: Column<Byte, *, qUE>): Byte = this.get<Byte>(c)
public operator fun get(c: Column<UByte, *, qUE>): UByte = this.get<UByte>(c)
public operator fun get(c: Column<Short, *, qUE>): Short = this.get<Short>(c)
public operator fun get(c: Column<UShort, *, qUE>): UShort = this.get<UShort>(c)
public operator fun get(c: Column<Int, *, qUE>): Int = this.get<Int>(c)
public operator fun get(c: Column<UInt, *, qUE>): UInt = this.get<UInt>(c)
public operator fun get(c: Column<Long, *, qUE>): Long = this.get<Long>(c)
public operator fun get(c: Column<ULong, *, qUE>): ULong = this.get<ULong>(c)
public operator fun get(c: Column<Char, *, qUE>): Char = this.get<Char>(c)
public operator fun get(c: Column<Boolean, *, qUE>): Boolean = this.get<Boolean>(c)
@Suppress("ClassName")
@LowLevelApi