Changing queries entry points from query-type to io-type
This commit is contained in:
parent
02916994cd
commit
8695fca966
@ -1,7 +1,7 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.misc
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.Row
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.OutputRow
|
||||
|
||||
public interface Expression<ExpressionUserExtension : Any> {
|
||||
public val userExtension: ExpressionUserExtension
|
||||
@ -36,6 +36,6 @@ public interface Expression<ExpressionUserExtension : Any> {
|
||||
}
|
||||
|
||||
public interface Action<ExpressionUserExtension : Any> {
|
||||
public fun calculate(input: Row<ExpressionUserExtension>, output: ParametersSetter<ExpressionUserExtension>)
|
||||
public fun calculate(input: OutputRow<ExpressionUserExtension>, output: InputRow<ExpressionUserExtension>)
|
||||
}
|
||||
}
|
@ -4,7 +4,7 @@ import ru.landgrafhomyak.serdha.api.v0.misc.Column
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
||||
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
||||
|
||||
public interface DeleteQuery<QueryUserExtension : Any> : _Query<QueryUserExtension> {
|
||||
@ -16,7 +16,7 @@ public interface DeleteQuery<QueryUserExtension : Any> : _Query<QueryUserExtensi
|
||||
public val types: DatabaseTypesProvider
|
||||
public fun <RT, DT : DatabaseType<RT>> param(name: String, type: DT): QueryParam<RT, DT, QueryUserExtension>
|
||||
|
||||
public val selectorParams: ParametersSetter.WithRedirect<SelectorTableUserExtension, QueryUserExtension>
|
||||
public val selectorParams: InputRow.WithRedirect<SelectorTableUserExtension, QueryUserExtension>
|
||||
public var selectorColumn: Column<*, DatabaseType.ROW_ID<TargetTableUserExtension>, SelectorTableUserExtension>
|
||||
|
||||
public fun <RT, DT : DatabaseType<RT>> returnFromSubquery(name: String, column: Column<RT, DT, SelectorTableUserExtension>): Column<RT, DT, QueryUserExtension>
|
||||
|
@ -5,7 +5,7 @@ import ru.landgrafhomyak.serdha.api.v0.table.Table
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
||||
import ru.landgrafhomyak.serdha.api.v0.table.UniqueIndex
|
||||
|
||||
public interface InsertQuery<QueryUserExtension : Any> : _Query<QueryUserExtension> {
|
||||
@ -52,7 +52,7 @@ public interface InsertQuery<QueryUserExtension : Any> : _Query<QueryUserExtensi
|
||||
public interface Scope<QueryUserExtension : Any, TargetTableUserExtension : Any, SourceQueryUserExtension : Any> : _CommonInsertCreatorScope<QueryUserExtension, TargetTableUserExtension> {
|
||||
public fun <RT, DT : DatabaseType<RT>> queryParam(name: String, type: DT): QueryParam<RT, DT, QueryUserExtension>
|
||||
|
||||
public val sourceQueryParams: ParametersSetter.WithRedirect<SourceQueryUserExtension, QueryUserExtension>
|
||||
public val sourceQueryParams: InputRow.WithRedirect<SourceQueryUserExtension, QueryUserExtension>
|
||||
|
||||
public fun <RT, DT : DatabaseType<RT>> insertConstant(dst: Column<RT, DT, TargetTableUserExtension>, src: QueryParam<RT, DT, QueryUserExtension>)
|
||||
public fun <RT, DT : DatabaseType<RT>> insertFromSubquery(dst: Column<RT, DT, TargetTableUserExtension>, src: QueryParam<RT, DT, SourceQueryUserExtension>)
|
||||
|
@ -6,7 +6,7 @@ import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Expression
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
||||
|
||||
public interface SelectQuery<QueryUserExtension : Any> : _Query<QueryUserExtension> {
|
||||
public enum class Order {
|
||||
@ -40,8 +40,8 @@ public interface SelectQuery<QueryUserExtension : Any> : _Query<QueryUserExtensi
|
||||
public fun createSelectWithJoin(creator: Scope<QueryUserExtension, LeftTableUserExtension, RightTableUserExtension>): QueryUserExtension
|
||||
|
||||
public interface Scope<QueryUserExtension : Any, LeftTableUserExtension : Any, RightTableUserExtension : Any> {
|
||||
public val leftSubqueryParams: ParametersSetter.WithRedirect<LeftTableUserExtension, QueryUserExtension>
|
||||
public val rightSubqueryParams: ParametersSetter.WithRedirect<RightTableUserExtension, QueryUserExtension>
|
||||
public val leftSubqueryParams: InputRow.WithRedirect<LeftTableUserExtension, QueryUserExtension>
|
||||
public val rightSubqueryParams: InputRow.WithRedirect<RightTableUserExtension, QueryUserExtension>
|
||||
|
||||
public fun <RT, DT : DatabaseType<RT>> selectColumnFromLeft(column: Column<RT, DT, LeftTableUserExtension>): IntermediateColumn<RT, DT, QueryUserExtension>
|
||||
public fun <RT, DT : DatabaseType<RT>> selectColumnFromRight(column: Column<RT, DT, RightTableUserExtension>): IntermediateColumn<RT, DT, QueryUserExtension>
|
||||
@ -54,7 +54,7 @@ public interface SelectQuery<QueryUserExtension : Any> : _Query<QueryUserExtensi
|
||||
public fun createSelect(creator: Scope<QueryUserExtension, TableUserExtension>): QueryUserExtension
|
||||
|
||||
public interface Scope<QueryUserExtension : Any, TableUserExtension : Any> : _CommonSelectCreatorScope<QueryUserExtension> {
|
||||
public val subqueryParams: ParametersSetter.WithRedirect<TableUserExtension, QueryUserExtension>
|
||||
public val subqueryParams: InputRow.WithRedirect<TableUserExtension, QueryUserExtension>
|
||||
|
||||
public fun <RT, DT : DatabaseType<RT>> selectColumnFromSubquery(param: Column<RT, DT, TableUserExtension>): IntermediateColumn<RT, DT, QueryUserExtension>
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ import ru.landgrafhomyak.serdha.api.v0.table.Table
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
|
||||
import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow
|
||||
|
||||
public interface UpdateQuery<QueryUserExtension : Any> : _Query<QueryUserExtension> {
|
||||
public interface FromSubquery<QueryUserExtension : Any> : UpdateQuery<QueryUserExtension>, _Query.Params2Table<QueryUserExtension> {
|
||||
@ -16,7 +16,7 @@ public interface UpdateQuery<QueryUserExtension : Any> : _Query<QueryUserExtensi
|
||||
public val types: DatabaseTypesProvider
|
||||
public fun <RT, DT : DatabaseType<RT>> param(name: String, type: DT): QueryParam<RT, DT, QueryUserExtension>
|
||||
|
||||
public val selectorParams: ParametersSetter.WithRedirect<SelectorTableUserExtension, QueryUserExtension>
|
||||
public val selectorParams: InputRow.WithRedirect<SelectorTableUserExtension, QueryUserExtension>
|
||||
public var selectorColumn: Column<*, DatabaseType.ROW_ID<TargetTableUserExtension>, SelectorTableUserExtension>
|
||||
|
||||
public fun <RT, DT : DatabaseType<RT>> updateColumnWithSubquery(dst: Column<RT, DT, TargetTableUserExtension>, src: Column<RT, DT, SelectorTableUserExtension>)
|
||||
|
@ -1,9 +1,10 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.runtime
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
|
||||
|
||||
public interface ParametersSetter<QueryUserExtension : Any/* todo*/> {
|
||||
public interface InputRow<QueryUserExtension : Any/* todo*/> {
|
||||
public operator fun <RuntimeType> set(c: QueryParam<RuntimeType, *, QueryUserExtension>, value: RuntimeType)
|
||||
|
||||
public operator fun set(c: QueryParam<Byte, *, QueryUserExtension>, value: Byte): Unit = this.set<Byte>(c, value)
|
||||
@ -17,7 +18,28 @@ public interface ParametersSetter<QueryUserExtension : Any/* todo*/> {
|
||||
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 interface WithRedirect<QueryUserExtension : Any, ParentQueryUserExtension : Any> : ParametersSetter<QueryUserExtension> {
|
||||
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>)
|
||||
}
|
||||
|
||||
@Suppress("ClassName")
|
||||
@LowLevelApi
|
||||
public interface _Scope<QueryUserExtension : Any, out Next> : InputRow<QueryUserExtension> {
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun _finish(): Next
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun _abort()
|
||||
}
|
||||
|
||||
|
||||
@Suppress("ClassName")
|
||||
@LowLevelApi
|
||||
public interface _Iterator<QueryUserExtension : Any, out Next> : _Scope<QueryUserExtension, Next> {
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public fun _next(): Boolean
|
||||
}
|
||||
}
|
@ -1,8 +1,9 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.runtime
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
||||
import ru.landgrafhomyak.serdha.api.v0.misc.Column
|
||||
|
||||
public interface Row<QueryUserExtension : Any> {
|
||||
public interface OutputRow<QueryUserExtension : Any> {
|
||||
public operator fun <RuntimeType> get(c: Column<RuntimeType, *, QueryUserExtension>): RuntimeType
|
||||
|
||||
public operator fun get(c: Column<Byte, *, QueryUserExtension>): Byte = this.get<Byte>(c)
|
||||
@ -15,4 +16,20 @@ public interface Row<QueryUserExtension : Any> {
|
||||
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)
|
||||
|
||||
@Suppress("ClassName")
|
||||
@LowLevelApi
|
||||
public interface _Iterator<QueryUserExtension : Any, out Next> : OutputRow<QueryUserExtension> {
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun _next(): Boolean
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun _abort()
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun _finish(): Next
|
||||
}
|
||||
}
|
@ -4,11 +4,7 @@ import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
||||
import ru.landgrafhomyak.serdha.api.v0.module.Module
|
||||
import ru.landgrafhomyak.serdha.api.v0.table.RowId
|
||||
import ru.landgrafhomyak.serdha.api.v0.table.Table
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.CopyQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.DeleteQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.InsertQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.SelectQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.UpdateQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries._Query
|
||||
|
||||
public interface SynchronizedDatabase<DatabaseUserExtension : Any> : Module<DatabaseUserExtension> {
|
||||
@Suppress("FunctionName")
|
||||
@ -17,23 +13,19 @@ public interface SynchronizedDatabase<DatabaseUserExtension : Any> : Module<Data
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun <QueryUserWrapper : Any> _autoTransactedSelect(query: SelectQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>
|
||||
public suspend fun <QueryUserExtension : Any> _executeAutoTransactedQuery(compiledQuery: _Query.Void2Table<QueryUserExtension>): OutputRow._Iterator<QueryUserExtension, Unit>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun <QueryUserWrapper : Any> _autoTransactedInsert(query: InsertQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ParametersSetter._Multi<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>>
|
||||
public suspend fun <QueryUserExtension : Any> _executeAutoTransactedQuery(compiledQuery: _Query.Params2Table<QueryUserExtension>): InputRow._Scope<QueryUserExtension, OutputRow._Iterator<QueryUserExtension, Unit>>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun <QueryUserWrapper : Any> _autoTransactedCopy(query: CopyQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>
|
||||
public suspend fun <QueryUserExtension : Any> _executeAutoTransactedQuery(compiledQuery: _Query.Table2Void<QueryUserExtension>): InputRow._Iterator<QueryUserExtension, Unit>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun <QueryUserWrapper : Any> _autoTransactedUpdate(query: UpdateQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>?>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun <QueryUserWrapper : Any> _autoTransactedDelete(query: DeleteQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>?>
|
||||
public suspend fun <QueryUserExtension : Any> _executeAutoTransactedQuery(compiledQuery: _Query.Params2Void<QueryUserExtension>): InputRow._Scope<QueryUserExtension, Unit>
|
||||
|
||||
public interface AtomicScript<C, A, R> {
|
||||
public suspend fun executeTransaction(transaction: Transaction, context: C, args: A): R
|
||||
@ -47,7 +39,7 @@ public interface SynchronizedDatabase<DatabaseUserExtension : Any> : Module<Data
|
||||
|
||||
public fun <TableUserException : Any, V> mapOfRowIds(
|
||||
table: Table<TableUserException, *>,
|
||||
builder: (MutableMap<Row<TableUserException>, V>) -> Unit
|
||||
builder: (MutableMap<OutputRow<TableUserException>, V>) -> Unit
|
||||
): Map<RowId<TableUserException>, V>
|
||||
|
||||
public fun <TableUserException : Any, V> mutableMapOfRowIds(table: Table<TableUserException, *>): MutableMap<RowId<TableUserException>, V>
|
||||
|
@ -1,32 +1,24 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.runtime
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.CopyQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.DeleteQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.InsertQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.SelectQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries.UpdateQuery
|
||||
import ru.landgrafhomyak.serdha.api.v0.queries._Query
|
||||
|
||||
public interface Transaction {
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public fun <QueryUserWrapper : Any> _select(compiledQuery: SelectQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>
|
||||
public suspend fun <QueryUserExtension : Any> _executeQuery(compiledQuery: _Query.Void2Table<QueryUserExtension>): OutputRow._Iterator<QueryUserExtension, Unit>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public fun <QueryUserWrapper : Any> _insert(compiledQuery: InsertQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ParametersSetter._Multi<InsertQuery.Creator.Scope.DataParam<QueryUserWrapper>, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>>
|
||||
public suspend fun <QueryUserExtension : Any> _executeQuery(compiledQuery: _Query.Params2Table<QueryUserExtension>): InputRow._Scope<QueryUserExtension, OutputRow._Iterator<QueryUserExtension, Unit>>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public fun <QueryUserWrapper : Any> _copy(compiledQuery: CopyQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>>?>
|
||||
public suspend fun <QueryUserExtension : Any> _executeQuery(compiledQuery: _Query.Table2Void<QueryUserExtension>): InputRow._Iterator<QueryUserExtension, Unit>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public fun <QueryUserWrapper : Any> _update(compiledQuery: UpdateQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>?>
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public fun <QueryUserWrapper : Any> _delete(compiledQuery: DeleteQuery<QueryUserWrapper>): _ParametersSetter<QueryUserWrapper, _ResultSet<QueryUserWrapper, Unit>?>
|
||||
public suspend fun <QueryUserExtension : Any> _executeQuery(compiledQuery: _Query.Params2Void<QueryUserExtension>): InputRow._Scope<QueryUserExtension, Unit>
|
||||
|
||||
public suspend fun rollback()
|
||||
|
||||
|
@ -1,19 +0,0 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.runtime
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
||||
|
||||
@Suppress("ClassName", "FunctionName")
|
||||
@LowLevelApi
|
||||
public interface _ParametersSetter<QueryUserExtension : Any, out Result> : ParametersSetter<QueryUserExtension> {
|
||||
@LowLevelApi
|
||||
public suspend fun _execute(): Result
|
||||
|
||||
@LowLevelApi
|
||||
public suspend fun _abort()
|
||||
|
||||
@LowLevelApi
|
||||
public interface _Multi<QueryUserExtension : Any, out Result> : _ParametersSetter<QueryUserExtension, Result> {
|
||||
@LowLevelApi
|
||||
public fun _next(): Boolean
|
||||
}
|
||||
}
|
@ -1,19 +0,0 @@
|
||||
package ru.landgrafhomyak.serdha.api.v0.runtime
|
||||
|
||||
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
|
||||
|
||||
@Suppress("ClassName")
|
||||
@LowLevelApi
|
||||
public interface _ResultSet<QueryUserExtension : Any, out Next> : Row<QueryUserExtension> {
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun _next(): Boolean
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun _abort()
|
||||
|
||||
@Suppress("FunctionName")
|
||||
@LowLevelApi
|
||||
public suspend fun _close(): Next
|
||||
}
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user