User extension for queries marked as 'out' to allow interfaces

This commit is contained in:
Andrew Golovashevich 2025-02-13 11:27:15 +03:00
parent 306bf7c971
commit 1ce03daf99
7 changed files with 25 additions and 25 deletions

View File

@ -1,6 +1,6 @@
package ru.landgrafhomyak.db.serdha0.api.misc package ru.landgrafhomyak.db.serdha0.api.misc
@Suppress("ClassName") @Suppress("ClassName")
public interface _Selectable<UE : Any> { public interface _Selectable<out UE : Any> {
public val uExt: UE public val uExt: UE
} }

View File

@ -8,8 +8,8 @@ import ru.landgrafhomyak.db.serdha0.api.runtime.InputRow
import ru.landgrafhomyak.db.serdha0.api.table.RowId import ru.landgrafhomyak.db.serdha0.api.table.RowId
import ru.landgrafhomyak.db.serdha0.api.table.Table import ru.landgrafhomyak.db.serdha0.api.table.Table
public interface DeleteQuery<qUE : Any> : _Query<qUE> { public interface DeleteQuery<out qUE : Any> : _Query<qUE> {
public interface SingleRow<qUE : Any> : DeleteQuery<qUE>, _Query.Params2Table<qUE> { public interface SingleRow<out qUE : Any> : DeleteQuery<qUE>, _Query.Params2Table<qUE> {
public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<SingleRow<qUE>> { public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<SingleRow<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): SingleRow<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): SingleRow<qUE> =
outQueries.deleteSingleRow(this) outQueries.deleteSingleRow(this)
@ -36,7 +36,7 @@ public interface DeleteQuery<qUE : Any> : _Query<qUE> {
} }
} }
public interface FromSubquery<qUE : Any> : DeleteQuery<qUE>, _Query.Params2Table<qUE> { public interface FromSubquery<out qUE : Any> : DeleteQuery<qUE>, _Query.Params2Table<qUE> {
public interface Constructor<qUE : Any, ttUE : Any, sUE : Any> : _Query.Constructor<FromSubquery<qUE>> { public interface Constructor<qUE : Any, ttUE : Any, sUE : Any> : _Query.Constructor<FromSubquery<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery<qUE> =
outQueries.deleteFromSubquery(this) outQueries.deleteFromSubquery(this)
@ -67,7 +67,7 @@ public interface DeleteQuery<qUE : Any> : _Query<qUE> {
} }
} }
public interface MultipleRows<qUE : Any> : DeleteQuery<qUE>, _Query.Table2Void<qUE> { public interface MultipleRows<out qUE : Any> : DeleteQuery<qUE>, _Query.Table2Void<qUE> {
public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<MultipleRows<qUE>> { public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<MultipleRows<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows<qUE> =
outQueries.deleteMultipleRows(this) outQueries.deleteMultipleRows(this)

View File

@ -8,7 +8,7 @@ import ru.landgrafhomyak.db.serdha0.api.misc._Selectable
import ru.landgrafhomyak.db.serdha0.api.runtime.InputRow import ru.landgrafhomyak.db.serdha0.api.runtime.InputRow
import ru.landgrafhomyak.db.serdha0.api.table.UniqueIndex import ru.landgrafhomyak.db.serdha0.api.table.UniqueIndex
public interface InsertQuery<qUE : Any> : _Query<qUE> { public interface InsertQuery<out qUE : Any> : _Query<qUE> {
@Suppress("ClassName") @Suppress("ClassName")
public interface _UpsertClauseScope<qUE : Any, tUE : Any> { public interface _UpsertClauseScope<qUE : Any, tUE : Any> {
public fun keepColumn(column: Column<*, *, tUE>) public fun keepColumn(column: Column<*, *, tUE>)
@ -27,7 +27,7 @@ public interface InsertQuery<qUE : Any> : _Query<qUE> {
} }
public interface SingleRow<qUE : Any> : InsertQuery<qUE>, _Query.Params2Table<qUE> { public interface SingleRow<out qUE : Any> : InsertQuery<qUE>, _Query.Params2Table<qUE> {
public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<SingleRow<qUE>> { public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<SingleRow<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): SingleRow<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): SingleRow<qUE> =
outQueries.insertSingleRow(this) outQueries.insertSingleRow(this)
@ -52,7 +52,7 @@ public interface InsertQuery<qUE : Any> : _Query<qUE> {
} }
public interface FromSubquery<qUE : Any> : InsertQuery<qUE>, _Query.Params2Table<qUE> { public interface FromSubquery<out qUE : Any> : InsertQuery<qUE>, _Query.Params2Table<qUE> {
public interface Constructor<qUE : Any, ttUE : Any, sUE : Any> : _Query.Constructor<FromSubquery<qUE>> { public interface Constructor<qUE : Any, ttUE : Any, sUE : Any> : _Query.Constructor<FromSubquery<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery<qUE> =
outQueries.insertFromSubquery(this) outQueries.insertFromSubquery(this)
@ -82,7 +82,7 @@ public interface InsertQuery<qUE : Any> : _Query<qUE> {
} }
} }
public interface MultipleRows<qUE : Any> : InsertQuery<qUE>, _Query.Table2Void<qUE> { public interface MultipleRows<out qUE : Any> : InsertQuery<qUE>, _Query.Table2Void<qUE> {
public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<MultipleRows<qUE>> { public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<MultipleRows<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows<qUE> =
outQueries.insertMultipleRows(this) outQueries.insertMultipleRows(this)

View File

@ -10,7 +10,7 @@ import ru.landgrafhomyak.db.serdha0.api.misc.Reducer
import ru.landgrafhomyak.db.serdha0.api.misc._Selectable import ru.landgrafhomyak.db.serdha0.api.misc._Selectable
import ru.landgrafhomyak.db.serdha0.api.runtime.InputRow import ru.landgrafhomyak.db.serdha0.api.runtime.InputRow
public interface SelectQuery<qUE : Any> : _Query<qUE> { public interface SelectQuery<out qUE : Any> : _Query<qUE> {
public enum class Order { public enum class Order {
ASC, DESC ASC, DESC
} }
@ -51,7 +51,7 @@ public interface SelectQuery<qUE : Any> : _Query<qUE> {
public fun <RT, DT : DatabaseType<RT>> returnColumn(name: String, column: IntermediateColumn<RT, DT, qUE>): Column<RT, DT, qUE> public fun <RT, DT : DatabaseType<RT>> returnColumn(name: String, column: IntermediateColumn<RT, DT, qUE>): Column<RT, DT, qUE>
} }
public interface Simple<qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> { public interface Simple<out qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> {
public interface Constructor<qUE : Any, tUE : Any> : _Query.Constructor<Simple<qUE>> { public interface Constructor<qUE : Any, tUE : Any> : _Query.Constructor<Simple<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Simple<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Simple<qUE> =
outQueries.select(this) outQueries.select(this)
@ -69,7 +69,7 @@ public interface SelectQuery<qUE : Any> : _Query<qUE> {
} }
} }
public interface WithJoin<qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> { public interface WithJoin<out qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> {
public interface Constructor<qUE : Any, lsqUE : Any, rsqUE : Any> : _Query.Constructor<WithJoin<qUE>> { public interface Constructor<qUE : Any, lsqUE : Any, rsqUE : Any> : _Query.Constructor<WithJoin<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): WithJoin<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): WithJoin<qUE> =
outQueries.selectWithJoin(this) outQueries.selectWithJoin(this)
@ -96,7 +96,7 @@ public interface SelectQuery<qUE : Any> : _Query<qUE> {
} }
} }
public interface Reducing<qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> { public interface Reducing<out qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> {
public interface Constructor<qUE : Any, tUE : Any> : _Query.Constructor<Reducing<qUE>> { public interface Constructor<qUE : Any, tUE : Any> : _Query.Constructor<Reducing<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Reducing<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Reducing<qUE> =
outQueries.selectReducing(this) outQueries.selectReducing(this)
@ -122,7 +122,7 @@ public interface SelectQuery<qUE : Any> : _Query<qUE> {
} }
} }
public interface Folding<qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> { public interface Folding<out qUE : Any> : SelectQuery<qUE>, _Query.Params2Table<qUE> {
public interface Constructor<qUE : Any, tUE : Any> : _Query.Constructor<Folding<qUE>> { public interface Constructor<qUE : Any, tUE : Any> : _Query.Constructor<Folding<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Folding<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Folding<qUE> =
outQueries.selectFolding(this) outQueries.selectFolding(this)

View File

@ -7,8 +7,8 @@ import ru.landgrafhomyak.db.serdha0.api.misc.QueryParam
import ru.landgrafhomyak.db.serdha0.api.misc._Selectable import ru.landgrafhomyak.db.serdha0.api.misc._Selectable
import ru.landgrafhomyak.db.serdha0.api.runtime.InputRow import ru.landgrafhomyak.db.serdha0.api.runtime.InputRow
public interface UpdateQuery<qUE : Any> : _Query<qUE> { public interface UpdateQuery<out qUE : Any> : _Query<qUE> {
public interface SingleRow<qUE : Any> : UpdateQuery<qUE>, _Query.Params2Table<qUE> { public interface SingleRow<out qUE : Any> : UpdateQuery<qUE>, _Query.Params2Table<qUE> {
public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<SingleRow<qUE>> { public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<SingleRow<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): SingleRow<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): SingleRow<qUE> =
outQueries.updateSingleRow(this) outQueries.updateSingleRow(this)
@ -38,7 +38,7 @@ public interface UpdateQuery<qUE : Any> : _Query<qUE> {
} }
} }
public interface FromSubquery<qUE : Any> : UpdateQuery<qUE>, _Query.Params2Table<qUE> { public interface FromSubquery<out qUE : Any> : UpdateQuery<qUE>, _Query.Params2Table<qUE> {
public interface Constructor<qUE : Any, ttUE : Any, sUE : Any> : _Query.Constructor<FromSubquery<qUE>> { public interface Constructor<qUE : Any, ttUE : Any, sUE : Any> : _Query.Constructor<FromSubquery<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery<qUE> =
outQueries.updateFromSubquery(this) outQueries.updateFromSubquery(this)
@ -74,7 +74,7 @@ public interface UpdateQuery<qUE : Any> : _Query<qUE> {
} }
} }
public interface MultipleRows<qUE : Any> : UpdateQuery<qUE>, _Query.Table2Void<qUE> { public interface MultipleRows<out qUE : Any> : UpdateQuery<qUE>, _Query.Table2Void<qUE> {
public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<MultipleRows<qUE>> { public interface Constructor<qUE : Any, ttUE : Any> : _Query.Constructor<MultipleRows<qUE>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows<qUE> = override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows<qUE> =
outQueries.updateMultipleRows(this) outQueries.updateMultipleRows(this)

View File

@ -4,13 +4,13 @@ import ru.landgrafhomyak.db.serdha0.api.misc._Selectable
@Suppress("ClassName") @Suppress("ClassName")
public interface _Query<qUE : Any> { public interface _Query<out qUE : Any> {
public val uExt: qUE public val uExt: qUE
public interface Table2Void<QueryUserExtension : Any> : _Query<QueryUserExtension> public interface Table2Void<out qUE : Any> : _Query<qUE>
public interface Params2Void<QueryUserExtension : Any> : _Query<QueryUserExtension> public interface Params2Void<out qUE : Any> : _Query<qUE>
public interface Params2Table<QueryUserExtension : Any> : _Query<QueryUserExtension>, _Selectable<QueryUserExtension> public interface Params2Table<out qUE : Any> : _Query<qUE>, _Selectable<qUE>
public interface Void2Table<QueryUserExtension : Any> : _Query<QueryUserExtension>, _Selectable<QueryUserExtension> public interface Void2Table<out qUE : Any> : _Query<qUE>, _Selectable<qUE>
public interface Constructor<R> { public interface Constructor<R> {
public fun createQuery(internalQueries: Scope, outQueries: Scope): R public fun createQuery(internalQueries: Scope, outQueries: Scope): R

View File

@ -3,8 +3,8 @@ package ru.landgrafhomyak.db.serdha0.api.table
import ru.landgrafhomyak.db.serdha0.api.misc._Selectable import ru.landgrafhomyak.db.serdha0.api.misc._Selectable
import ru.landgrafhomyak.db.serdha0.api.module.Module import ru.landgrafhomyak.db.serdha0.api.module.Module
public interface Table<UserExtension : Any, PreviousUserExtension : Any> : _Selectable<UserExtension> { public interface Table<out UE : Any, pUE : Any> : _Selectable<UE> {
public override val uExt: UserExtension public override val uExt: UE
public val name: String public val name: String
public val module: Module<*> public val module: Module<*>