diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/DeleteQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/DeleteQuery.kt deleted file mode 100644 index bbab57c..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/DeleteQuery.kt +++ /dev/null @@ -1,122 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.queries - -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.Column -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.DatabaseType -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.QueryParam -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc._Selectable -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.InputRow -import ru.landgrafhomyak.db.sql_skeleton_0.api.table.RowId -import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table - -public interface DeleteQuery : _Query { - public interface SingleRow : DeleteQuery, _Query.Params2Table { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): SingleRow = - outQueries.deleteSingleRow(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("targetTable") - public val targetTable: Table - - public fun createDeleteSingleRowWithReturning(context: Scope): qUE - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("tt") - public val tt: Table - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("types") - public val types: DatabaseType.Provider - public fun > queryParam(name: String, type: DT): QueryParam - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("rowToRemove") - public val rowToRemove: QueryParam, DatabaseType.ROW_ID, qUE> - - public fun > returnRemovedValue(name: String, column: Column): Column - public fun > returnParam(name: String, column: QueryParam): Column - - public fun ifNoRowSkip() - public fun ifNoRowJustReturn() - public fun ifNoRowThrow() - } - } - } - - public interface FromSubquery : DeleteQuery, _Query.Params2Table { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery = - outQueries.deleteFromSubquery(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("rowToRemove") - public val targetTable: Table - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("selector") - public val selector: _Selectable - - public fun createDeleteFromSubqueryWithReturning(context: Scope): qUE - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("tt") - public val tt: Table - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("src") - public val src: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("types") - public val types: DatabaseType.Provider - public fun > queryParam(name: String, type: DT): QueryParam - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("selectorParams") - public val selectorParams: InputRow.WithRedirect - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("_getSelectorColumn") - @set:JvmName("selectorColumn") - public var selectorColumn: Column, DatabaseType.ROW_ID, sUE> - - public fun > returnFromSubquery(name: String, column: Column): Column - public fun > returnRemovedValue(name: String, column: Column): Column - public fun > returnParam(name: String, column: QueryParam): Column - - public fun ifNoRowSkip() - public fun ifNoRowJustReturn() - public fun ifNoRowThrow() - } - } - } - - public interface MultipleRows : DeleteQuery, _Query.Table2Void { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows = - outQueries.deleteMultipleRows(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("targetTable") - public val targetTable: Table - - public fun createMultipleRows(context: Scope): qUE - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("tt") - public val tt: Table - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("rowsToRemove") - public val rowsToRemove: QueryParam, DatabaseType.ROW_ID, qUE> - - public fun ifNoRowSkip() - public fun ifNoRowThrow() - } - } - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/InsertQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/InsertQuery.kt deleted file mode 100644 index 9b14346..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/InsertQuery.kt +++ /dev/null @@ -1,126 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.queries - -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.Column -import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.DatabaseType -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.QueryParam -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc._Selectable -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.InputRow -import ru.landgrafhomyak.db.sql_skeleton_0.api.table.UniqueIndex - -public interface InsertQuery : _Query { - @Suppress("ClassName") - public interface _UpsertClauseScope { - public fun keepColumn(column: Column<*, *, tUE>) - public fun overrideColumn(column: Column<*, *, tUE>) - public fun > setFromParam(dst: Column, src: QueryParam) - public fun setConstant(dst: Column, src: RT) - } - - @Suppress("ClassName") - public interface _CommonInsertCreatorScope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("types") - public val types: DatabaseType.Provider - - public fun onConflictUpdate(u: UniqueIndex, c: (_UpsertClauseScope) -> Unit) - public fun onConflictThrow(u: UniqueIndex) - public fun onConflictSkip(u: UniqueIndex) - } - - - public interface SingleRow : InsertQuery, _Query.Params2Table { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): SingleRow = - outQueries.insertSingleRow(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("targetTable") - public val targetTable: Table - - public fun createInsertSingleRowWithReturning(context: Scope): qUE - - public interface Scope : _CommonInsertCreatorScope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("tt") - public val tt: Table - - public fun > queryParam(name: String, type: DT): QueryParam - - public fun > insertConstant(dst: Column, src: RT) - public fun > insertParam(dst: Column, src: QueryParam) - - public fun onConflictReturnOnly(u: UniqueIndex) - - public fun > returnInsertedValue(name: String, c: Column): Column - public fun > returnParam(name: String, c: QueryParam): Column - } - } - } - - - public interface FromSubquery : InsertQuery, _Query.Params2Table { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery = - outQueries.insertFromSubquery(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("targetTable") - public val targetTable: Table - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("selector") - public val selector: _Selectable - - public fun createInsertSingleRowWithReturning(context: Scope): qUE - - public interface Scope : _CommonInsertCreatorScope { - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("tt") - public val tt: Table - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("src") - public val src: _Selectable - - public fun > queryParam(name: String, type: DT): QueryParam - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("sourceQueryParams") - public val sourceQueryParams: InputRow.WithRedirect - - public fun > insertConstant(dst: Column, src: RT) - public fun > insertParam(dst: Column, src: QueryParam) - public fun > insertFromSubquery(dst: Column, src: Column) - - public fun onConflictReturnOnly(u: UniqueIndex) - - public fun > returnFromSubquery(name: String, column: Column): Column - public fun > returnInsertedValue(name: String, column: Column): Column - public fun > returnParam(name: String, param: QueryParam): Column - } - } - } - - public interface MultipleRows : InsertQuery, _Query.Table2Void { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows = - outQueries.insertMultipleRows(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("targetTable") - public val targetTable: Table - public fun createInsertMultipleRows(context: Scope): qUE - - public interface Scope : _CommonInsertCreatorScope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("tt") - public val tt: Table - - public fun > inputColumn(name: String, type: DT): QueryParam - - public fun > insertColumn(dst: Column, src: QueryParam) - } - } - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt index 83f535f..01f541f 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt @@ -41,13 +41,15 @@ public interface RawStatement { } - public interface Void2Void { + public interface Void2Void : _Statement.Void2Void { public interface Constructor { public fun createRawStatement_void2void(scope: STATEMENT_SCOPE): RAW_STATEMENT } } - public interface Void2Single { + public interface Void2Row : _Statement.Void2Row { + override val uExt: QUERY_USER_EXTENSION + public interface Constructor< out QUERY_USER_EXTENSION : Any, in STATEMENT_SCOPE : Any?, @@ -57,9 +59,9 @@ public interface RawStatement { in GETTER_SCOPE : Any, in SETTER_SCOPE : Any > { - public fun createRawStatement_void2single(scope: STATEMENT_SCOPE): RAW_STATEMENT + public fun createRawStatement_void2row(scope: STATEMENT_SCOPE): RAW_STATEMENT - public fun linkRawStatement_void2single( + public fun linkRawStatement_void2row( scope: _OutputConstructorScope< @UnsafeVariance QUERY_USER_EXTENSION, @UnsafeVariance TYPE_SCOPE, @UnsafeVariance TYPE_DESCRIPTOR, @UnsafeVariance GETTER_SCOPE, @UnsafeVariance SETTER_SCOPE > @@ -67,7 +69,9 @@ public interface RawStatement { } } - public interface Void2AtMostSingle { + public interface Void2RowOrNull : _Statement.Void2RowOrNull { + override val uExt: QUERY_USER_EXTENSION + public interface Constructor< out QUERY_USER_EXTENSION : Any, in STATEMENT_SCOPE : Any?, @@ -77,9 +81,9 @@ public interface RawStatement { in GETTER_SCOPE : Any, in SETTER_SCOPE : Any > { - public fun createRawStatement_void2atMostSingle(scope: STATEMENT_SCOPE): RAW_STATEMENT + public fun createRawStatement_void2rowOrNull(scope: STATEMENT_SCOPE): RAW_STATEMENT - public fun linkRawStatement_void2atMostSingle( + public fun linkRawStatement_void2rowOrNull( scope: _OutputConstructorScope< @UnsafeVariance QUERY_USER_EXTENSION, @UnsafeVariance TYPE_SCOPE, @UnsafeVariance TYPE_DESCRIPTOR, @UnsafeVariance GETTER_SCOPE, @UnsafeVariance SETTER_SCOPE > @@ -87,7 +91,9 @@ public interface RawStatement { } } - public interface Void2Table { + public interface Void2Table : _Statement.Void2Table { + override val uExt: QUERY_USER_EXTENSION + public interface Constructor< out QUERY_USER_EXTENSION : Any, in STATEMENT_SCOPE : Any?, @@ -107,7 +113,7 @@ public interface RawStatement { } } - public interface Params2Void { + public interface Params2Void : _Statement.Params2Void { public interface Constructor< out QUERY_USER_EXTENSION : Any, in STATEMENT_SCOPE : Any?, @@ -127,7 +133,7 @@ public interface RawStatement { } } - public interface Params2Single { + public interface Params2Row : _Statement.Params2Row { public interface Constructor< out QUERY_USER_EXTENSION : Any, in STATEMENT_SCOPE : Any?, @@ -137,9 +143,9 @@ public interface RawStatement { in GETTER_SCOPE : Any, in SETTER_SCOPE : Any > { - public fun createRawStatement_params2single(scope: STATEMENT_SCOPE): RAW_STATEMENT + public fun createRawStatement_params2row(scope: STATEMENT_SCOPE): RAW_STATEMENT - public fun linkRawStatement_params2single( + public fun linkRawStatement_params2row( scope: _IOConstructorScope< @UnsafeVariance QUERY_USER_EXTENSION, @UnsafeVariance TYPE_SCOPE, @UnsafeVariance TYPE_DESCRIPTOR, @UnsafeVariance GETTER_SCOPE, @UnsafeVariance SETTER_SCOPE > @@ -147,7 +153,7 @@ public interface RawStatement { } } - public interface Params2AtMostSingle { + public interface Params2RowOrNull : _Statement.Params2RowOrNull { public interface Constructor< out QUERY_USER_EXTENSION : Any, in STATEMENT_SCOPE : Any?, @@ -157,9 +163,9 @@ public interface RawStatement { in GETTER_SCOPE : Any, in SETTER_SCOPE : Any > { - public fun createRawStatement_params2atMostSingle(scope: STATEMENT_SCOPE): RAW_STATEMENT + public fun createRawStatement_params2rowOrNull(scope: STATEMENT_SCOPE): RAW_STATEMENT - public fun linkRawStatement_params2atMostSingle( + public fun linkRawStatement_params2rowOrNull( scope: _OutputConstructorScope< @UnsafeVariance QUERY_USER_EXTENSION, @UnsafeVariance TYPE_SCOPE, @UnsafeVariance TYPE_DESCRIPTOR, @UnsafeVariance GETTER_SCOPE, @UnsafeVariance SETTER_SCOPE > @@ -167,7 +173,7 @@ public interface RawStatement { } } - public interface Params2Table { + public interface Params2Table : _Statement.Params2Table { public interface Constructor< out QUERY_USER_EXTENSION : Any, in STATEMENT_SCOPE : Any?, diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/SelectQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/SelectQuery.kt deleted file mode 100644 index 5d60391..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/SelectQuery.kt +++ /dev/null @@ -1,260 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.queries - -import kotlin.jvm.JvmField -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.Column -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.IntermediateColumn -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.DatabaseType -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.Mapper -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.FiltersScope -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.QueryParam -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.Reducer -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc._Selectable -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.InputRow - -public interface SelectQuery : _Query { - public enum class Order { - ASC, DESC - } - - public abstract class JoinType { - public class LeftJoin( - @JvmField - public val leftNull: Null, - @JvmField - public val behaviour: Behaviour - ) : JoinType() { - @Suppress("ClassName") - public abstract class Null { - public object NULL_NOT_EXPECTED : Null() - public object AS_ID : Null() - public object SKIP : Null() - public object JOIN_TO_NULL : Null() - } - - @Suppress("ClassName") - public abstract class Behaviour { - public object LEFT_TO_UNIQUE_RIGHT : Behaviour() - public object LEFT_TO_UNIQUE_RIGHT_OR_TO_NULL : Behaviour() - public object LEFT_FOR_EACH_RIGHT : Behaviour() - public object LEFT_FOR_EACH_RIGHT_OR_TO_NULL : Behaviour() - } - } - - public object CrossJoin : JoinType() - } - - @Suppress("ClassName") - public interface _CommonSelectCreatorScope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("types") - public val types: DatabaseType.Provider - public fun > queryParam(name: String, type: DT): QueryParam - public fun > paramAsColumn(param: QueryParam): IntermediateColumn - - public fun createMapper(constructor: Mapper.Constructor): Mapper - public fun mapColumns( - mapper: Mapper, - input: Mapper.InputLinker, - output: Mapper.OutputLinker - ): oUE - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("filters") - public val filters: FiltersScope - public fun orderBy(order: Order, vararg column: IntermediateColumn<*, *, qUE>) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("_getLimit") - @set:JvmName("limit") - public var limit: UInt - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("_getOffset") - @set:JvmName("offset") - public var offset: ULong - - public fun > returnParam(name: String, param: QueryParam): Column - public fun > returnColumn(name: String, column: IntermediateColumn): Column - } - - public interface Simple : SelectQuery, _Query.Params2Table { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Simple = - outQueries.select(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("source") - public val source: _Selectable - - public fun createSelect(context: Scope): qUE - - public interface Scope : _CommonSelectCreatorScope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("src") - public val src: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("subqueryParams") - public val subqueryParams: InputRow.WithRedirect - - public fun > selectColumnFromSubquery(param: Column): IntermediateColumn - } - } - } - - public interface WithJoin : SelectQuery, _Query.Params2Table { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): WithJoin = - outQueries.selectWithJoin(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("left") - public val left: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("right") - public val right: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("joinType") - public val joinType: JoinType - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("leftColumnToJoin") - public val leftColumnToJoin: Column<*, *, lsqUE> - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("rightColumnToJoin") - public val rightColumnToJoin: Column<*, *, rsqUE> - - public fun createSelectWithJoin(context: Scope): qUE - - public interface Scope : _CommonSelectCreatorScope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("lsq") - public val lsq: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("rsq") - public val rsq: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("leftSubqueryParams") - public val leftSubqueryParams: InputRow.WithRedirect - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("rightSubqueryParams") - public val rightSubqueryParams: InputRow.WithRedirect - - public fun > selectColumnFromLeft(column: Column): IntermediateColumn - public fun > selectColumnFromRight(column: Column): IntermediateColumn - public fun > selectColumnFromRightAsNullable(column: Column): IntermediateColumn, qUE> - } - } - } - - public interface Reducing : SelectQuery, _Query.Params2Table { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Reducing = - outQueries.selectReducing(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("source") - public val source: _Selectable - - public fun createSelectWithReduce(context: Scope): qUE - - public interface Scope : _CommonSelectCreatorScope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("src") - public val src: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("sourceParams") - public val sourceParams: InputRow.WithRedirect - - public fun > selectColumnFromSubquery(param: Column): IntermediateColumn - - public fun createReducer(constructor: Reducer.Constructor): Reducer - public fun reduceRows( - reducer: Reducer, - linker: Reducer.Linker, - ): oUE - - public fun groupBy(vararg columns: IntermediateColumn<*, *, qUE>) - } - } - } - - public interface Folding : SelectQuery, _Query.Params2Table { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Folding = - outQueries.selectFolding(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("source") - public val source: _Selectable - - public fun createSelectWithFold(context: Scope): qUE - - public interface Scope : _CommonSelectCreatorScope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("src") - public val src: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("sourceParams") - public val sourceParams: InputRow.WithRedirect - - public fun > selectColumnFromSubquery(param: Column): IntermediateColumn - - public fun createReducer(constructor: Reducer.Constructor): Reducer - public fun foldRows( - reducer: Reducer, - linker: Reducer.Linker, - ): oUE - - public fun groupBy(vararg columns: IntermediateColumn<*, *, qUE>) - } - } - } - - - public interface Union : SelectQuery, _Query.Params2Table { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Union = - outQueries.selectUnion(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("first") - public val first: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("last") - public val last: _Selectable - - public fun createSelectWithJoin(context: Scope): qUE - - public interface Scope : _CommonSelectCreatorScope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("fq") - public val fq: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("lq") - public val lq: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("firstSubqueryParams") - public val firstSubqueryParams: InputRow.WithRedirect - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("lastSubqueryParams") - public val lastSubqueryParams: InputRow.WithRedirect - - public fun > uniteColumns(first: Column, last: Column): IntermediateColumn - } - } - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/UpdateQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/UpdateQuery.kt deleted file mode 100644 index 3fe2c6d..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/UpdateQuery.kt +++ /dev/null @@ -1,137 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.queries - -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.Column -import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.DatabaseType -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.QueryParam -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc._Selectable -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.InputRow -import ru.landgrafhomyak.db.sql_skeleton_0.api.table.RowId - -public interface UpdateQuery : _Query { - public interface SingleRow : UpdateQuery, _Query.Params2Table { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): SingleRow = - outQueries.updateSingleRow(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("targetTable") - public val targetTable: Table - public fun createUpdateSingleWithReturning(context: Scope): qUE - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("tt") - public val tt: Table - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("types") - public val types: DatabaseType.Provider - public fun > queryParam(name: String, type: DT): QueryParam - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("rowToUpdate") - public val rowToUpdate: QueryParam, DatabaseType.ROW_ID, qUE> - - public fun > updateColumnWithOldValue(dst: Column, src: Column) - public fun > updateColumnWithParam(dst: Column, src: QueryParam) - - public fun > returnOldValue(name: String, column: Column): Column - public fun > returnNewValue(name: String, column: Column): Column - public fun > returnParam(name: String, param: QueryParam): Column - - public fun ifNoRowSkip() - public fun ifNoRowJustReturn() - public fun ifNoRowThrow() - } - } - } - - public interface FromSubquery : UpdateQuery, _Query.Params2Table { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery = - outQueries.updateFromSubquery(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("targetTable") - public val targetTable: Table - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("selector") - public val selector: _Selectable - - public fun createUpdateFromSubqueryWithReturning(context: Scope): qUE - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("tt") - public val tt: Table - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("src") - public val src: _Selectable - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("types") - public val types: DatabaseType.Provider - public fun > queryParam(name: String, type: DT): QueryParam - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("selectorParams") - public val selectorParams: InputRow.WithRedirect - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("_getSelectorColumn") - @set:JvmName("selectorColumn") - public var selectorColumn: Column, DatabaseType.ROW_ID, sUE> - - public fun > updateColumnWithSubquery(dst: Column, src: Column) - public fun > updateColumnWithOldValue(dst: Column, src: Column) - public fun > updateColumnWithParam(dst: Column, src: QueryParam) - - public fun > returnFromSubquery(name: String, column: Column): Column - public fun > returnOldValue(name: String, column: Column): Column - public fun > returnNewValue(name: String, column: Column): Column - public fun > returnParam(name: String, param: QueryParam): Column - - public fun ifNoRowSkip() - public fun ifNoRowJustReturn() - public fun ifNoRowThrow() - } - } - } - - public interface MultipleRows : UpdateQuery, _Query.Table2Void { - public interface Constructor : _Query.Constructor> { - override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows = - outQueries.updateMultipleRows(this) - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("targetTable") - public val targetTable: Table - public fun createUpdateMultipleRows(context: Scope): qUE - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("tt") - public val tt: Table - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("types") - public val types: DatabaseType.Provider - public fun > inputColumn(name: String, type: DT): QueryParam - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("rowToUpdate") - public val rowToUpdate: QueryParam, DatabaseType.ROW_ID, qUE> - - public fun > updateColumnWithOldValue(dst: Column, src: Column) - public fun > updateColumnWithParam(dst: Column, src: QueryParam) - - public fun ifNoRowSkip() - public fun ifNoRowThrow() - } - } - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Query.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Query.kt deleted file mode 100644 index 458d04e..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Query.kt +++ /dev/null @@ -1,47 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.queries - -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc._Selectable - - -@Suppress("ClassName") -public interface _Query { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("uExt") - public val uExt: qUE - - public interface Table2Void : _Query - public interface Params2Void : _Query - public interface Params2Table : _Query, _Selectable - public interface Void2Table : _Query, _Selectable - - public interface Constructor { - public fun createQuery(internalQueries: Scope, outQueries: Scope): R - - public interface _SelectsScope { - @Suppress("INAPPLICABLE_JVM_NAME") - @JvmName("_composite") - public operator fun invoke(constructor: Constructor): R - - public fun select(constructor: SelectQuery.Simple.Constructor): SelectQuery.Simple - public fun selectWithJoin(constructor: SelectQuery.WithJoin.Constructor): SelectQuery.WithJoin - public fun selectReducing(constructor: SelectQuery.Reducing.Constructor): SelectQuery.Reducing - public fun selectFolding(constructor: SelectQuery.Folding.Constructor): SelectQuery.Folding - public fun selectUnion(constructor: SelectQuery.Union.Constructor): SelectQuery.Union - } - - public interface Scope : _SelectsScope { - public fun insertSingleRow(constructor: InsertQuery.SingleRow.Constructor): InsertQuery.SingleRow - public fun insertFromSubquery(constructor: InsertQuery.FromSubquery.Constructor): InsertQuery.FromSubquery - public fun insertMultipleRows(constructor: InsertQuery.MultipleRows.Constructor): InsertQuery.MultipleRows - - public fun updateSingleRow(constructor: UpdateQuery.SingleRow.Constructor): UpdateQuery.SingleRow - public fun updateFromSubquery(constructor: UpdateQuery.FromSubquery.Constructor): UpdateQuery.FromSubquery - public fun updateMultipleRows(constructor: UpdateQuery.MultipleRows.Constructor): UpdateQuery.MultipleRows - - public fun deleteSingleRow(constructor: DeleteQuery.SingleRow.Constructor): DeleteQuery.SingleRow - public fun deleteFromSubquery(constructor: DeleteQuery.FromSubquery.Constructor): DeleteQuery.FromSubquery - public fun deleteMultipleRows(constructor: DeleteQuery.MultipleRows.Constructor): DeleteQuery.MultipleRows - } - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Statement.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Statement.kt new file mode 100644 index 0000000..c6f34c3 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Statement.kt @@ -0,0 +1,25 @@ +package ru.landgrafhomyak.db.sql_skeleton_0.api.queries + +import kotlin.jvm.JvmName +import ru.landgrafhomyak.db.sql_skeleton_0.api.misc._Selectable + + +@Suppress("ClassName") +public interface _Statement { + @Suppress("INAPPLICABLE_JVM_NAME") + @get:JvmName("uExt") + public val uExt: qUE + + public interface Void2Void : _Statement { + override val uExt: Nothing? + get() = null + } + + public interface Void2Row : _Statement + public interface Void2RowOrNull : _Statement + public interface Void2Table : _Statement + public interface Params2Void : _Statement + public interface Params2Row : _Statement + public interface Params2RowOrNull : _Statement + public interface Params2Table : _Statement +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectKey.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectKey.kt index 2c102bb..300d997 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectKey.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectKey.kt @@ -1,10 +1,11 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.raw public interface DialectKey< - RAW_STATEMENT, - TYPE_SCOPE, - TYPE_DESCRIPTOR , - GETTER_SCOPE, - SETTER_SCOPE + STATEMENT_SCOPE : Any?, + RAW_STATEMENT : Any, + TYPE_SCOPE : Any?, + TYPE_DESCRIPTOR : Any, + GETTER_SCOPE : Any, + SETTER_SCOPE : Any > { } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectResolver.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectResolver.kt index 9d2d209..8d72e78 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectResolver.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectResolver.kt @@ -1,5 +1,115 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.raw -public interface DialectResolver, out R: Any> { - public fun resolveSqlDialect(key: K): R? +import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.DatabaseType as _DatabaseType +import ru.landgrafhomyak.db.sql_skeleton_0.api.queries.RawStatement as _RawQuery + +public interface DialectResolver { + public interface DatabaseType { + public suspend fun < + TYPE_SCOPE : Any?, + TYPE_DESCRIPTOR : Any, + GETTER_SCOPE : Any, + SETTER_SCOPE : Any + > resolveDatabaseTypeByDialect( + key: DialectKey<*, *, TYPE_SCOPE, TYPE_DESCRIPTOR, GETTER_SCOPE, SETTER_SCOPE> + ): _DatabaseType + } + + public interface RawQuery_Void2Void { + public suspend fun < + STATEMENT_SCOPE : Any?, + RAW_STATEMENT : Any + > resolveDatabaseTypeByDialect( + key: DialectKey + ): _RawQuery.Void2Void.Constructor + } + + public interface RawQuery_Void2Row { + public suspend fun < + STATEMENT_SCOPE : Any?, + RAW_STATEMENT : Any, + TYPE_SCOPE : Any?, + TYPE_DESCRIPTOR : Any, + GETTER_SCOPE : Any, + SETTER_SCOPE : Any + > resolveDatabaseTypeByDialect( + key: DialectKey + ): _RawQuery.Void2Row.Constructor + } + + public interface RawQuery_Void2RowOrNull { + public suspend fun < + STATEMENT_SCOPE : Any?, + RAW_STATEMENT : Any, + TYPE_SCOPE : Any?, + TYPE_DESCRIPTOR : Any, + GETTER_SCOPE : Any, + SETTER_SCOPE : Any + > resolveDatabaseTypeByDialect( + key: DialectKey + ): _RawQuery.Void2RowOrNull.Constructor + } + + public interface RawQuery_Void2Table { + public suspend fun < + STATEMENT_SCOPE : Any?, + RAW_STATEMENT : Any, + TYPE_SCOPE : Any?, + TYPE_DESCRIPTOR : Any, + GETTER_SCOPE : Any, + SETTER_SCOPE : Any + > resolveDatabaseTypeByDialect( + key: DialectKey + ): _RawQuery.Void2Table.Constructor + } + public interface RawQuery_Params2Void { + public suspend fun < + STATEMENT_SCOPE : Any?, + RAW_STATEMENT : Any, + TYPE_SCOPE : Any?, + TYPE_DESCRIPTOR : Any, + GETTER_SCOPE : Any, + SETTER_SCOPE : Any + > resolveDatabaseTypeByDialect( + key: DialectKey + ): _RawQuery.Params2Void.Constructor + } + + public interface RawQuery_Params2Row { + public suspend fun < + STATEMENT_SCOPE : Any?, + RAW_STATEMENT : Any, + TYPE_SCOPE : Any?, + TYPE_DESCRIPTOR : Any, + GETTER_SCOPE : Any, + SETTER_SCOPE : Any + > resolveDatabaseTypeByDialect( + key: DialectKey + ): _RawQuery.Params2Row.Constructor + } + public interface RawQuery_Params2RowOrNull { + public suspend fun < + STATEMENT_SCOPE : Any?, + RAW_STATEMENT : Any, + TYPE_SCOPE : Any?, + TYPE_DESCRIPTOR : Any, + GETTER_SCOPE : Any, + SETTER_SCOPE : Any + > resolveDatabaseTypeByDialect( + key: DialectKey + ): _RawQuery.Params2RowOrNull.Constructor + } + + public interface RawQuery_Params2Table { + public suspend fun < + STATEMENT_SCOPE : Any?, + RAW_STATEMENT : Any, + TYPE_SCOPE : Any?, + TYPE_DESCRIPTOR : Any, + GETTER_SCOPE : Any, + SETTER_SCOPE : Any + > resolveDatabaseTypeByDialect( + key: DialectKey + ): _RawQuery.Params2Table.Constructor + } } \ No newline at end of file