From 461f8e0d9c0b501f4f2db478db2a44d9c5594d70 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Mon, 27 Jan 2025 03:44:42 +0300 Subject: [PATCH] Shortened generics' names in queries and moved tables references from creator's param to scope --- .../serdha/api/v0/queries/DeleteQuery.kt | 55 +++++++------ .../serdha/api/v0/queries/InsertQuery.kt | 81 ++++++++++--------- .../serdha/api/v0/queries/SelectQuery.kt | 59 +++++++------- .../serdha/api/v0/queries/UpdateQuery.kt | 75 +++++++++-------- 4 files changed, 148 insertions(+), 122 deletions(-) diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/DeleteQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/DeleteQuery.kt index 0baaf49..cb44ab5 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/DeleteQuery.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/DeleteQuery.kt @@ -8,19 +8,21 @@ import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow import ru.landgrafhomyak.serdha.api.v0.table.RowId import ru.landgrafhomyak.serdha.api.v0.table.Table -public interface DeleteQuery : _Query { - public interface SingleRow : DeleteQuery, _Query.Params2Table { - public interface Creator { - public fun createDeleteSingleRowWithReturning(table: Table, creator: Scope): QueryUserExtension +public interface DeleteQuery : _Query { + public interface SingleRow : DeleteQuery, _Query.Params2Table { + public interface Creator { + public fun createDeleteSingleRowWithReturning(creator: Scope): qUE + + public interface Scope { + public val tt: Table - public interface Scope { public val types: DatabaseTypesProvider - public fun > param(name: String, type: DT): QueryParam + public fun > param(name: String, type: DT): QueryParam - public var rowToRemove: QueryParam<*, DatabaseType.ROW_ID, QueryUserExtension> + public var rowToRemove: QueryParam<*, DatabaseType.ROW_ID, qUE> - public fun > returnRemovedValue(name: String, column: Column): Column - public fun > returnParam(name: String, column: QueryParam): Column + public fun > returnRemovedValue(name: String, column: Column): Column + public fun > returnParam(name: String, column: QueryParam): Column public fun ifNoRowSkip() public fun ifNoRowJustReturn() @@ -29,20 +31,23 @@ public interface DeleteQuery : _Query : DeleteQuery, _Query.Params2Table { - public interface Creator { - public fun createDeleteFromSubqueryWithReturning(table: Table, creator: Scope): QueryUserExtension + public interface FromSubquery : DeleteQuery, _Query.Params2Table { + public interface Creator { + public fun createDeleteFromSubqueryWithReturning(creator: Scope): qUE + + public interface Scope { + public val tt: Table + public val sUExt: sUE - public interface Scope { public val types: DatabaseTypesProvider - public fun > param(name: String, type: DT): QueryParam + public fun > param(name: String, type: DT): QueryParam - public val selectorParams: InputRow.WithRedirect - public var selectorColumn: Column<*, DatabaseType.ROW_ID, SelectorTableUserExtension> + public val selectorParams: InputRow.WithRedirect + 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 > 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() @@ -51,12 +56,14 @@ public interface DeleteQuery : _Query : DeleteQuery, _Query.Table2Void { - public interface Creator { - public fun createMultipleRows(table: Table, creator: Scope): QueryUserExtension + public interface MultipleRows : DeleteQuery, _Query.Table2Void { + public interface Creator { + public fun createMultipleRows(creator: Scope): qUE - public interface Scope { - public val rowsToRemove: QueryParam, DatabaseType.ROW_ID, QueryUserExtension> + public interface Scope { + public val tt: Table + + public val rowsToRemove: QueryParam, DatabaseType.ROW_ID, qUE> public fun ifNoRowSkip() public fun ifNoRowThrow() diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/InsertQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/InsertQuery.kt index 6a5dddf..dccc1ae 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/InsertQuery.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/InsertQuery.kt @@ -8,72 +8,79 @@ import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow import ru.landgrafhomyak.serdha.api.v0.table.UniqueIndex -public interface InsertQuery : _Query { +public interface InsertQuery : _Query { @Suppress("ClassName") - public interface _UpsertClauseScope { - public fun keepColumn(column: Column<*, *, TargetTableUserExtension>) - public fun overrideColumn(column: Column<*, *, TargetTableUserExtension>) - public fun > setFromParam(dst: Column, src: QueryParam) - public fun setConstant(dst: Column, src: RT) + 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 { + public interface _CommonInsertCreatorScope { public val types: DatabaseTypesProvider - public fun onConflictUpdate(u: UniqueIndex, c: (_UpsertClauseScope) -> Unit) - public fun onConflictThrow(u: UniqueIndex) - public fun onConflictSkip(u: UniqueIndex) + 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 Creator { - public fun createInsertSingleRowWithReturning(table: Table, creator: Scope): QueryUserExtension + public interface SingleRow : InsertQuery, _Query.Params2Table { + public interface Creator { + public fun createInsertSingleRowWithReturning(creator: Scope): qUE - public interface Scope : _CommonInsertCreatorScope { - public fun > queryParam(name: String, type: DT): QueryParam + public interface Scope : _CommonInsertCreatorScope { + public val tt: Table - public fun > insertConstant(dst: Column, src: QueryParam) + public fun > queryParam(name: String, type: DT): QueryParam - public fun onConflictReturnOnly(u: UniqueIndex) + public fun > insertConstant(dst: Column, src: QueryParam) - public fun > returnInsertedValue(name: String, c: Column): Column - public fun > returnParam(name: String, c: QueryParam): Column + 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 Creator { - public fun createInsertSingleRowWithReturning(table: Table, creator: Scope): QueryUserExtension + public interface FromSubquery : InsertQuery, _Query.Params2Table { + public interface Creator { + public fun createInsertSingleRowWithReturning(creator: Scope): qUE - public interface Scope : _CommonInsertCreatorScope { - public fun > queryParam(name: String, type: DT): QueryParam + public interface Scope : _CommonInsertCreatorScope { + public val tt: Table + public val sUExt: sUE - public val sourceQueryParams: InputRow.WithRedirect + public fun > queryParam(name: String, type: DT): QueryParam - public fun > insertConstant(dst: Column, src: QueryParam) - public fun > insertFromSubquery(dst: Column, src: QueryParam) + public val sourceQueryParams: InputRow.WithRedirect - public fun onConflictReturnOnly(u: UniqueIndex) + public fun > insertConstant(dst: Column, src: QueryParam) + public fun > insertFromSubquery(dst: Column, src: QueryParam) - public fun > returnFromSubquery(name: String, column: Column): Column - public fun > returnNewValue(name: String, column: Column): Column - public fun > returnParam(name: String, param: QueryParam): Column + public fun onConflictReturnOnly(u: UniqueIndex) + + public fun > returnFromSubquery(name: String, column: Column): Column + public fun > returnNewValue(name: String, column: Column): Column + public fun > returnParam(name: String, param: QueryParam): Column } } } - public interface MultipleRows : InsertQuery, _Query.Table2Void { - public interface Creator { - public fun createInsertMultipleRows(table: Table, creator: Scope): QueryUserExtension + public interface MultipleRows : InsertQuery, _Query.Table2Void { + public interface Creator { + public fun createInsertMultipleRows(creator: Scope): qUE - public interface Scope : _CommonInsertCreatorScope { - public fun > inputColumn(name: String, type: DT): QueryParam + public interface Scope : _CommonInsertCreatorScope { + public val tt: Table - public fun > insertColumn(dst: Column, src: QueryParam) + public fun > inputColumn(name: String, type: DT): QueryParam + + public fun > insertColumn(dst: Column, src: QueryParam) } } } diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/SelectQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/SelectQuery.kt index 357b251..f36304e 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/SelectQuery.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/SelectQuery.kt @@ -9,56 +9,61 @@ import ru.landgrafhomyak.serdha.api.v0.misc.Expression import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow -public interface SelectQuery : _Query { +public interface SelectQuery : _Query { public enum class Order { ASC, DESC } @Suppress("ClassName") - public interface _CommonSelectCreatorScope { + public interface _CommonSelectCreatorScope { public val types: DatabaseTypesProvider - public fun > queryParam(name: String, type: DT): QueryParam - public fun > paramAsColumn(param: QueryParam): IntermediateColumn + public fun > queryParam(name: String, type: DT): QueryParam + public fun > paramAsColumn(param: QueryParam): IntermediateColumn - public val builtinExpressions: BuiltinExpressionsProvider - public fun mapColumns( - expression: Expression, - input: Expression.InputLinker, - output: Expression.OutputLinker + public val builtinExpressions: BuiltinExpressionsProvider + public fun mapColumns( + expression: Expression, + input: Expression.InputLinker, + output: Expression.OutputLinker ) - public fun where(column: IntermediateColumn) - public fun orderBy(order: Order, vararg column: IntermediateColumn<*, *, QueryUserExtension>) + public fun where(column: IntermediateColumn) + public fun orderBy(order: Order, vararg column: IntermediateColumn<*, *, qUE>) public var limit: UInt public var offset: ULong - public fun > returnParam(name: String, param: QueryParam): Column - public fun > returnColumn(name: String, column: IntermediateColumn): Column + public fun > returnParam(name: String, param: QueryParam): Column + public fun > returnColumn(name: String, column: IntermediateColumn): Column } - public interface WithJoin : SelectQuery, _Query.Params2Table { - public interface Creator : _CommonSelectCreatorScope { - public fun createSelectWithJoin(creator: Scope): QueryUserExtension + public interface WithJoin : SelectQuery, _Query.Params2Table { + public interface Creator : _CommonSelectCreatorScope { + public fun createSelectWithJoin(creator: Scope): qUE - public interface Scope { - public val leftSubqueryParams: InputRow.WithRedirect - public val rightSubqueryParams: InputRow.WithRedirect + public interface Scope { + public val lsqUExt: lsqUE + public val rsqUExt: rsqUE - public fun > selectColumnFromLeft(column: Column): IntermediateColumn - public fun > selectColumnFromRight(column: Column): IntermediateColumn + public val leftSubqueryParams: InputRow.WithRedirect + public val rightSubqueryParams: InputRow.WithRedirect + + public fun > selectColumnFromLeft(column: Column): IntermediateColumn + public fun > selectColumnFromRight(column: Column): IntermediateColumn } } } - public interface FromSubquery : SelectQuery, _Query.Params2Table { - public interface Creator { - public fun createSelect(creator: Scope): QueryUserExtension + public interface FromSubquery : SelectQuery, _Query.Params2Table { + public interface Creator { + public val tUExt: tUE - public interface Scope : _CommonSelectCreatorScope { - public val subqueryParams: InputRow.WithRedirect + public fun createSelect(creator: Scope): qUE - public fun > selectColumnFromSubquery(param: Column): IntermediateColumn + public interface Scope : _CommonSelectCreatorScope { + public val subqueryParams: InputRow.WithRedirect + + public fun > selectColumnFromSubquery(param: Column): IntermediateColumn } } } diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/UpdateQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/UpdateQuery.kt index f85dee9..4f0a3dd 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/UpdateQuery.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/UpdateQuery.kt @@ -7,23 +7,25 @@ import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam import ru.landgrafhomyak.serdha.api.v0.runtime.InputRow -public interface UpdateQuery : _Query { - public interface SingleRow : UpdateQuery, _Query.Params2Table { - public interface Creator { - public fun createUpdateSingleWithReturning(table: Table, creator: Scope): QueryUserExtension +public interface UpdateQuery : _Query { + public interface SingleRow : UpdateQuery, _Query.Params2Table { + public interface Creator { + public fun createUpdateSingleWithReturning(table: Table, creator: Scope): qUE + + public interface Scope { + public val tt: Table - public interface Scope { public val types: DatabaseTypesProvider - public fun > param(name: String, type: DT): QueryParam + public fun > param(name: String, type: DT): QueryParam - public var rowToUpdate: QueryParam<*, DatabaseType.ROW_ID, QueryUserExtension> + public var rowToUpdate: QueryParam<*, DatabaseType.ROW_ID, qUE> - public fun > updateColumnWithOldValue(dst: Column, src: Column) - public fun > updateColumnWithParam(dst: Column, src: QueryParam) + 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 > 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() @@ -32,25 +34,28 @@ public interface UpdateQuery : _Query : UpdateQuery, _Query.Params2Table { - public interface Creator { - public fun createUpdateFromSubqueryWithReturning(table: Table, creator: Scope): QueryUserExtension + public interface FromSubquery : UpdateQuery, _Query.Params2Table { + public interface Creator { + public fun createUpdateFromSubqueryWithReturning(creator: Scope): qUE + + public interface Scope { + public val tt: Table + public val sUExt: sUE - public interface Scope { public val types: DatabaseTypesProvider - public fun > param(name: String, type: DT): QueryParam + public fun > param(name: String, type: DT): QueryParam - public val selectorParams: InputRow.WithRedirect - public var selectorColumn: Column<*, DatabaseType.ROW_ID, SelectorTableUserExtension> + public val selectorParams: InputRow.WithRedirect + 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 > 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 > 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() @@ -59,18 +64,20 @@ public interface UpdateQuery : _Query : UpdateQuery, _Query.Table2Void { - public interface Creator { - public fun createUpdateMultipleRows(table: Table, creator: Scope): QueryUserExtension + public interface MultipleRows : UpdateQuery, _Query.Table2Void { + public interface Creator { + public fun createUpdateMultipleRows(creator: Scope): qUE + + public interface Scope { + public val tt: Table - public interface Scope { public val types: DatabaseTypesProvider - public fun > param(name: String, type: DT): QueryParam + public fun > inputColumn(name: String, type: DT): QueryParam - public var rowToUpdate: QueryParam<*, DatabaseType.ROW_ID, QueryUserExtension> + public var rowToUpdate: QueryParam<*, DatabaseType.ROW_ID, qUE> - public fun > updateColumnWithOldValue(dst: Column, src: Column) - public fun > updateColumnWithParam(dst: Column, src: QueryParam) + public fun > updateColumnWithOldValue(dst: Column, src: Column) + public fun > updateColumnWithParam(dst: Column, src: QueryParam) public fun ifNoRowSkip() public fun ifNoRowThrow()