Some shortcuts for constructing queries and fix in executors mangling

This commit is contained in:
Andrew Golovashevich 2025-02-24 16:52:19 +03:00
parent e9377b7640
commit f747cc6f0e
8 changed files with 285 additions and 4 deletions

View File

@ -0,0 +1,113 @@
@file:JvmName("_ParamsForRedirectKt")
package ru.landgrafhomyak.db.serdha0.user_commons.construction
import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType
import ru.landgrafhomyak.db.serdha0.api.misc.QueryParam
import ru.landgrafhomyak.db.serdha0.api.queries.DeleteQuery
import ru.landgrafhomyak.db.serdha0.api.queries.InsertQuery
import ru.landgrafhomyak.db.serdha0.api.queries.SelectQuery
import ru.landgrafhomyak.db.serdha0.api.queries.UpdateQuery
public fun <qUE : Any, sqUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.Simple.Constructor.Scope<qUE, sqUE>.paramFromSubquery(
name: String, subParam0: QueryParam<RT, DT, sqUE>, vararg subParamsN: QueryParam<RT, DT, sqUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(name, subParam0.type)
this.subqueryParams.redirect(subParam0, param)
for (subParam in subParamsN)
this.subqueryParams.redirect(subParam, param)
return param
}
public fun <qUE : Any, lsqUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.WithJoin.Constructor.Scope<qUE, lsqUE, *>.paramFromLeftSubquery(
name: String, leftSubParams0: QueryParam<RT, DT, lsqUE>, vararg leftSubParamsN: QueryParam<RT, DT, lsqUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(name, leftSubParams0.type)
this.leftSubqueryParams.redirect(leftSubParams0, param)
for (subParam in leftSubParamsN)
this.leftSubqueryParams.redirect(subParam, param)
return param
}
public fun <qUE : Any, rsqUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.WithJoin.Constructor.Scope<qUE, *, rsqUE>.paramFromRightSubquery(
name: String, rightSubParams0: QueryParam<RT, DT, rsqUE>, vararg rightSubParamsN: QueryParam<RT, DT, rsqUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(name, rightSubParams0.type)
this.rightSubqueryParams.redirect(rightSubParams0, param)
for (subParam in rightSubParamsN)
this.rightSubqueryParams.redirect(subParam, param)
return param
}
public fun <qUE : Any, sqUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.Reducing.Constructor.Scope<qUE, sqUE>.paramFromSubquery(
name: String, subParam0: QueryParam<RT, DT, sqUE>, vararg subParamsN: QueryParam<RT, DT, sqUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(name, subParam0.type)
this.sourceParams.redirect(subParam0, param)
for (subParam in subParamsN)
this.sourceParams.redirect(subParam, param)
return param
}
public fun <qUE : Any, sqUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.Folding.Constructor.Scope<qUE, sqUE>.paramFromSubquery(
name: String, subParam0: QueryParam<RT, DT, sqUE>, vararg subParamsN: QueryParam<RT, DT, sqUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(name, subParam0.type)
this.sourceParams.redirect(subParam0, param)
for (subParam in subParamsN)
this.sourceParams.redirect(subParam, param)
return param
}
public fun <qUE : Any, fsqUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.Union.Constructor.Scope<qUE, fsqUE, *>.paramFromFirstSubquery(
name: String, firstSubParams0: QueryParam<RT, DT, fsqUE>, vararg firstSubParamsN: QueryParam<RT, DT, fsqUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(name, firstSubParams0.type)
this.firstSubqueryParams.redirect(firstSubParams0, param)
for (subParam in firstSubParamsN)
this.firstSubqueryParams.redirect(subParam, param)
return param
}
public fun <qUE : Any, lsqUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.Union.Constructor.Scope<qUE, *, lsqUE>.paramFromLastSubquery(
name: String, lastSubParams0: QueryParam<RT, DT, lsqUE>, vararg lastSubParamsN: QueryParam<RT, DT, lsqUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(name, lastSubParams0.type)
this.lastSubqueryParams.redirect(lastSubParams0, param)
for (subParam in lastSubParamsN)
this.lastSubqueryParams.redirect(subParam, param)
return param
}
public fun <qUE : Any, sqUE : Any, RT, DT : DatabaseType<RT>> InsertQuery.FromSubquery.Constructor.Scope<qUE, *, sqUE>.paramFromSubquery(
name: String, subParam0: QueryParam<RT, DT, sqUE>, vararg subParamsN: QueryParam<RT, DT, sqUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(name, subParam0.type)
this.sourceQueryParams.redirect(subParam0, param)
for (subParam in subParamsN)
this.sourceQueryParams.redirect(subParam, param)
return param
}
public fun <qUE : Any, sqUE : Any, RT, DT : DatabaseType<RT>> UpdateQuery.FromSubquery.Constructor.Scope<qUE, *, sqUE>.paramFromSubquery(
name: String, subParam0: QueryParam<RT, DT, sqUE>, vararg subParamsN: QueryParam<RT, DT, sqUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(name, subParam0.type)
this.selectorParams.redirect(subParam0, param)
for (subParam in subParamsN)
this.selectorParams.redirect(subParam, param)
return param
}
public fun <qUE : Any, sqUE : Any, RT, DT : DatabaseType<RT>> DeleteQuery.FromSubquery.Constructor.Scope<qUE, *, sqUE>.paramFromSubquery(
name: String, subParam0: QueryParam<RT, DT, sqUE>, vararg subParamsN: QueryParam<RT, DT, sqUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(name, subParam0.type)
this.selectorParams.redirect(subParam0, param)
for (subParam in subParamsN)
this.selectorParams.redirect(subParam, param)
return param
}

View File

@ -0,0 +1,76 @@
@file:JvmName("_QueryParamKt")
package ru.landgrafhomyak.db.serdha0.user_commons.construction
import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.serdha0.api.misc.Column
import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType
import ru.landgrafhomyak.db.serdha0.api.misc.QueryParam
import ru.landgrafhomyak.db.serdha0.api.queries.DeleteQuery
import ru.landgrafhomyak.db.serdha0.api.queries.InsertQuery
import ru.landgrafhomyak.db.serdha0.api.queries.SelectQuery
import ru.landgrafhomyak.db.serdha0.api.queries.UpdateQuery
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.Simple.Constructor.Scope<qUE, ocUE>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
@JvmName("queryParamLike\$left")
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.WithJoin.Constructor.Scope<qUE, ocUE, *>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
@JvmName("queryParamLike\$right")
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.WithJoin.Constructor.Scope<qUE, *, ocUE>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.Reducing.Constructor.Scope<qUE, ocUE>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.Folding.Constructor.Scope<qUE, ocUE>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
@JvmName("queryParamLike\$first")
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.Union.Constructor.Scope<qUE, ocUE, *>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
@JvmName("queryParamLike\$last")
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.Union.Constructor.Scope<qUE, *, ocUE>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> InsertQuery.SingleRow.Constructor.Scope<qUE, ocUE>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> InsertQuery.FromSubquery.Constructor.Scope<qUE, *, ocUE>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> InsertQuery.MultipleRows.Constructor.Scope<qUE, ocUE>.inputColumnLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.inputColumn(name, column.type)
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> UpdateQuery.SingleRow.Constructor.Scope<qUE, ocUE>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> UpdateQuery.FromSubquery.Constructor.Scope<qUE, *, ocUE>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> UpdateQuery.MultipleRows.Constructor.Scope<qUE, ocUE>.inputColumnLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.inputColumn(name, column.type)
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> DeleteQuery.SingleRow.Constructor.Scope<qUE, ocUE>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> DeleteQuery.FromSubquery.Constructor.Scope<qUE, *, ocUE>.queryParamLike(
name: String, column: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> = this.queryParam(name, column.type)

View File

@ -0,0 +1,20 @@
@file:JvmName("_ReturnColumnKt")
package ru.landgrafhomyak.db.serdha0.user_commons.construction
import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.serdha0.api.misc.Column
import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType
import ru.landgrafhomyak.db.serdha0.api.queries.SelectQuery
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.Simple.Constructor.Scope<qUE, ocUE>.returnColumnFromSubquery(
name: String, column: Column<RT, DT, ocUE>
): Column<RT, DT, qUE> = this.returnColumn(name, this.selectColumnFromSubquery(column))
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.WithJoin.Constructor.Scope<qUE, ocUE, *>.returnColumnFromLeft(
name: String, column: Column<RT, DT, ocUE>
): Column<RT, DT, qUE> = this.returnColumn(name, this.selectColumnFromLeft(column))
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> SelectQuery.WithJoin.Constructor.Scope<qUE, *, ocUE>.returnColumnFromRight(
name: String, column: Column<RT, DT, ocUE>
): Column<RT, DT, qUE> = this.returnColumn(name, this.selectColumnFromRight(column))

View File

@ -0,0 +1,71 @@
@file:JvmName("_UpsertColumnKt")
package ru.landgrafhomyak.db.serdha0.user_commons.construction
import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.serdha0.api.misc.Column
import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType
import ru.landgrafhomyak.db.serdha0.api.misc.QueryParam
import ru.landgrafhomyak.db.serdha0.api.queries.InsertQuery
import ru.landgrafhomyak.db.serdha0.api.queries.UpdateQuery
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> InsertQuery.SingleRow.Constructor.Scope<qUE, ocUE>.insertParamToColumn(
paramName: String, column0: Column<RT, DT, ocUE>, vararg columnN: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(paramName, column0.type)
this.insertParam(column0, param)
for (column in columnN)
this.insertParam(column, param)
return param
}
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> InsertQuery.FromSubquery.Constructor.Scope<qUE, ocUE, *>.insertParamToColumn(
paramName: String, column0: Column<RT, DT, ocUE>, vararg columnN: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(paramName, column0.type)
this.insertParam(column0, param)
for (column in columnN)
this.insertParam(column, param)
return param
}
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> InsertQuery.MultipleRows.Constructor.Scope<qUE, ocUE>.insertParamToColumn(
paramName: String, column0: Column<RT, DT, ocUE>, vararg columnN: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> {
val param = this.inputColumn(paramName, column0.type)
this.insertColumn(column0, param)
for (column in columnN)
this.insertColumn(column, param)
return param
}
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> UpdateQuery.SingleRow.Constructor.Scope<qUE, ocUE>.updateColumnWithParam(
paramName: String, column0: Column<RT, DT, ocUE>, vararg columnN: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(paramName, column0.type)
this.updateColumnWithParam(column0, param)
for (column in columnN)
this.updateColumnWithParam(column, param)
return param
}
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> UpdateQuery.FromSubquery.Constructor.Scope<qUE, ocUE, *>.updateColumnWithParam(
paramName: String, column0: Column<RT, DT, ocUE>, vararg columnN: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> {
val param = this.queryParam(paramName, column0.type)
this.updateColumnWithParam(column0, param)
for (column in columnN)
this.updateColumnWithParam(column, param)
return param
}
public fun <qUE : Any, ocUE : Any, RT, DT : DatabaseType<RT>> UpdateQuery.MultipleRows.Constructor.Scope<qUE, ocUE>.updateColumnWithParam(
paramName: String, column0: Column<RT, DT, ocUE>, vararg columnN: Column<RT, DT, ocUE>
): QueryParam<RT, DT, qUE> {
val param = this.inputColumn(paramName, column0.type)
this.updateColumnWithParam(column0, param)
for (column in columnN)
this.updateColumnWithParam(column, param)
return param
}

View File

@ -1,5 +1,5 @@
@file:OptIn(LowLevelApi::class)
@file:JvmName("Row2Void")
@file:JvmName("_Row2RowKt")
@file:Suppress("DuplicatedCode")
package ru.landgrafhomyak.db.serdha0.user_commons.executors

View File

@ -1,5 +1,5 @@
@file:OptIn(LowLevelApi::class)
@file:JvmName("Row2Void")
@file:JvmName("_Row2Table")
@file:Suppress("DuplicatedCode")
package ru.landgrafhomyak.db.serdha0.user_commons.executors

View File

@ -1,5 +1,5 @@
@file:OptIn(LowLevelApi::class)
@file:JvmName("Row2Void")
@file:JvmName("_Row2VoidKt")
@file:Suppress("DuplicatedCode")
package ru.landgrafhomyak.db.serdha0.user_commons.executors

View File

@ -1,9 +1,10 @@
@file:OptIn(LowLevelApi::class)
@file:JvmName("Rows2VoidKt")
@file:JvmName("_Rows2VoidKt")
@file:Suppress("DuplicatedCode")
package ru.landgrafhomyak.db.serdha0.user_commons.executors
import kotlin.contracts.contract
import kotlin.jvm.JvmName
import ru.landgrafhomyak.db.serdha0.api.LowLevelApi
import ru.landgrafhomyak.db.serdha0.api.queries._Query