Fixes in 'Mapper' and 'Reducer'
This commit is contained in:
parent
fba3712662
commit
d45bdbad0d
@ -12,30 +12,32 @@ public interface Mapper<mUE : Any> {
|
||||
public fun interface InputLinker<mUE : Any, qUE : Any> {
|
||||
public fun link(linker: Scope<mUE, qUE>)
|
||||
|
||||
public interface Scope<mUE : Any, qUE : Any> {
|
||||
public operator fun <RT, DT : DatabaseType<RT>> set(p: InputColumn<RT, DT, mUE>, e: IntermediateColumn<RT, DT, qUE>)
|
||||
public interface Scope<_mUE : Any, qUE : Any> {
|
||||
public val mUE: _mUE
|
||||
public operator fun <RT, DT : DatabaseType<RT>> set(p: InputColumn<RT, DT, _mUE>, e: IntermediateColumn<RT, DT, qUE>)
|
||||
}
|
||||
}
|
||||
|
||||
public fun interface OutputLinker<mUE : Any, qUE : Any, oUE : Any> {
|
||||
public fun link(linker: Scope<mUE, qUE>): oUE
|
||||
|
||||
public interface Scope<ExpressionUserExtension : Any, QueryUserExtension : Any> {
|
||||
public operator fun <RT, DT : DatabaseType<RT>> get(p: OutputColumn<RT, DT, ExpressionUserExtension>): IntermediateColumn<RT, DT, QueryUserExtension>
|
||||
public interface Scope<_mUE : Any, qUE : Any> {
|
||||
public val mUE: _mUE
|
||||
public operator fun <RT, DT : DatabaseType<RT>> get(p: OutputColumn<RT, DT, _mUE>): IntermediateColumn<RT, DT, qUE>
|
||||
}
|
||||
}
|
||||
|
||||
public interface Constructor<mUE : Any> {
|
||||
public fun createMapper(context: Scope<mUE>): mUE
|
||||
public fun createMapper(context: Scope<mUE>): Action<mUE>
|
||||
|
||||
public interface Scope<mUE : Any> {
|
||||
public val types: DatabaseType.Provider
|
||||
public fun <RT, DT : DatabaseType<RT>> input(name: String, type: DT): InputColumn<RT, DT, mUE>
|
||||
public fun <RT, DT : DatabaseType<RT>> output(name: String, type: DT): OutputColumn<RT, DT, mUE>
|
||||
public var action: Action<mUE>
|
||||
}
|
||||
}
|
||||
|
||||
public interface Action<mUE : Any> {
|
||||
public fun calculate(ue: mUE, input: OutputRow<mUE>, output: InputRow<mUE>)
|
||||
public fun calculate(input: OutputRow<mUE>, output: InputRow<mUE>)
|
||||
}
|
||||
}
|
@ -6,36 +6,37 @@ import ru.landgrafhomyak.db.serdha0.api.runtime.OutputRow
|
||||
public interface Reducer<rUE : Any> {
|
||||
public val userExtension: rUE
|
||||
|
||||
public interface IOColumn<RT, DT : DatabaseType<RT>, rUE : Any> : Column<RT, DT, rUE>, QueryParam<RT, DT, rUE>
|
||||
public interface BidirectionalColumn<RT, DT : DatabaseType<RT>, rUE : Any> : Column<RT, DT, rUE>, QueryParam<RT, DT, rUE>
|
||||
public interface OutputColumn<RT, DT : DatabaseType<RT>, rUE : Any> : Column<RT, DT, rUE>, QueryParam<RT, DT, rUE>
|
||||
|
||||
|
||||
public fun interface ReduceLinker<rUE : Any, qUE : Any, oUE : Any> {
|
||||
public fun interface Linker<rUE : Any, qUE : Any, oUE : Any> {
|
||||
public fun link(linker: Scope<rUE, qUE>): oUE
|
||||
|
||||
public interface Scope<rUE : Any, qUE : Any> {
|
||||
public fun <RT, DT : DatabaseType<RT>> link(io: IOColumn<RT, DT, rUE>, src: IntermediateColumn<RT, DT, rUE>): IntermediateColumn<RT, DT, qUE>
|
||||
}
|
||||
}
|
||||
|
||||
public fun interface FoldLinker<rUE : Any, qUE : Any, oUE : Any> {
|
||||
public fun link(linker: Scope<rUE, qUE>): oUE
|
||||
|
||||
public interface Scope<rUE : Any, qUE : Any> {
|
||||
public fun <RT, DT : DatabaseType<RT>> link(io: IOColumn<RT, DT, rUE>, src: IntermediateColumn<RT, DT, rUE>, initial: RT): IntermediateColumn<RT, DT, qUE>
|
||||
public fun <RT, DT : DatabaseType<RT>> link(io: IOColumn<RT, DT, rUE>, src: IntermediateColumn<RT, DT, rUE>, initial: QueryParam<RT, DT, qUE>): IntermediateColumn<RT, DT, qUE>
|
||||
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, _rUE>): 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 Constructor<rUE : Any> {
|
||||
public fun createReducer(creator: Scope<rUE>): rUE
|
||||
public fun createReducer(context: Scope<rUE>): Action<rUE>
|
||||
|
||||
public interface Scope<rUE : Any> {
|
||||
public fun <RT, DT : DatabaseType<RT>> io(name: String, type: DT): IOColumn<RT, DT, rUE>
|
||||
public var action: Action<rUE>
|
||||
public val types: DatabaseType.Provider
|
||||
public fun <RT, DT : DatabaseType<RT>> outputColumn(name: String, type: DT): OutputColumn<RT, DT, rUE>
|
||||
public fun <RT, DT : DatabaseType<RT>> outputColumn(name: String, type: DT, defaultInitialValue: RT): OutputColumn<RT, DT, rUE>
|
||||
public fun <RT, DT : DatabaseType<RT>> bidirectionalColumn(name: String, type: DT): BidirectionalColumn<RT, DT, rUE>
|
||||
public fun <RT, DT : DatabaseType<RT>> bidirectionalColumn(name: String, type: DT, defaultInitialValue: RT): BidirectionalColumn<RT, DT, rUE>
|
||||
}
|
||||
}
|
||||
|
||||
public interface Action<rUE : Any> {
|
||||
public fun calculate(ue: rUE, acc: OutputRow<rUE>, row: OutputRow<rUE>, newAcc: InputRow<rUE>)
|
||||
public fun calculate(acc: OutputRow<rUE>, row: OutputRow<rUE>, newAcc: InputRow<rUE>)
|
||||
}
|
||||
}
|
@ -114,7 +114,7 @@ public interface SelectQuery<qUE : Any> : _Query<qUE> {
|
||||
public fun <rUE : Any> createReducer(constructor: Reducer.Constructor<rUE>): Reducer<rUE>
|
||||
public fun <mUE : Any, oUE : Any> reduceRows(
|
||||
reducer: Reducer<mUE>,
|
||||
linker: Reducer.ReduceLinker<mUE, qUE, oUE>,
|
||||
linker: Reducer.Linker<mUE, qUE, oUE>,
|
||||
): oUE
|
||||
|
||||
public fun groupBy(vararg columns: IntermediateColumn<*, *, qUE>)
|
||||
@ -140,7 +140,7 @@ public interface SelectQuery<qUE : Any> : _Query<qUE> {
|
||||
public fun <rUE : Any> createReducer(constructor: Reducer.Constructor<rUE>): Reducer<rUE>
|
||||
public fun <mUE : Any, oUE : Any> foldRows(
|
||||
reducer: Reducer<mUE>,
|
||||
linker: Reducer.FoldLinker<mUE, qUE, oUE>,
|
||||
linker: Reducer.Linker<mUE, qUE, oUE>,
|
||||
): oUE
|
||||
|
||||
public fun groupBy(vararg columns: IntermediateColumn<*, *, qUE>)
|
||||
|
Loading…
Reference in New Issue
Block a user