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
@Suppress("ClassName")
public interface _Selectable<UE : Any> {
public interface _Selectable<out UE : Any> {
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.Table
public interface DeleteQuery<qUE : Any> : _Query<qUE> {
public interface SingleRow<qUE : Any> : DeleteQuery<qUE>, _Query.Params2Table<qUE> {
public interface DeleteQuery<out qUE : Any> : _Query<qUE> {
public interface SingleRow<out qUE : Any> : DeleteQuery<qUE>, _Query.Params2Table<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> =
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>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery<qUE> =
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>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows<qUE> =
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.table.UniqueIndex
public interface InsertQuery<qUE : Any> : _Query<qUE> {
public interface InsertQuery<out qUE : Any> : _Query<qUE> {
@Suppress("ClassName")
public interface _UpsertClauseScope<qUE : Any, tUE : Any> {
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>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): SingleRow<qUE> =
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>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery<qUE> =
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>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows<qUE> =
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.runtime.InputRow
public interface SelectQuery<qUE : Any> : _Query<qUE> {
public interface SelectQuery<out qUE : Any> : _Query<qUE> {
public enum class Order {
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 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>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Simple<qUE> =
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>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): WithJoin<qUE> =
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>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Reducing<qUE> =
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>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): Folding<qUE> =
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.runtime.InputRow
public interface UpdateQuery<qUE : Any> : _Query<qUE> {
public interface SingleRow<qUE : Any> : UpdateQuery<qUE>, _Query.Params2Table<qUE> {
public interface UpdateQuery<out qUE : Any> : _Query<qUE> {
public interface SingleRow<out qUE : Any> : UpdateQuery<qUE>, _Query.Params2Table<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> =
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>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): FromSubquery<qUE> =
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>> {
override fun createQuery(internalQueries: _Query.Constructor.Scope, outQueries: _Query.Constructor.Scope): MultipleRows<qUE> =
outQueries.updateMultipleRows(this)

View File

@ -4,13 +4,13 @@ import ru.landgrafhomyak.db.serdha0.api.misc._Selectable
@Suppress("ClassName")
public interface _Query<qUE : Any> {
public interface _Query<out qUE : Any> {
public val uExt: qUE
public interface Table2Void<QueryUserExtension : Any> : _Query<QueryUserExtension>
public interface Params2Void<QueryUserExtension : Any> : _Query<QueryUserExtension>
public interface Params2Table<QueryUserExtension : Any> : _Query<QueryUserExtension>, _Selectable<QueryUserExtension>
public interface Void2Table<QueryUserExtension : Any> : _Query<QueryUserExtension>, _Selectable<QueryUserExtension>
public interface Table2Void<out qUE : Any> : _Query<qUE>
public interface Params2Void<out qUE : Any> : _Query<qUE>
public interface Params2Table<out qUE : Any> : _Query<qUE>, _Selectable<qUE>
public interface Void2Table<out qUE : Any> : _Query<qUE>, _Selectable<qUE>
public interface Constructor<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.module.Module
public interface Table<UserExtension : Any, PreviousUserExtension : Any> : _Selectable<UserExtension> {
public override val uExt: UserExtension
public interface Table<out UE : Any, pUE : Any> : _Selectable<UE> {
public override val uExt: UE
public val name: String
public val module: Module<*>