Separating queries descriptors for strict applying '_Selectable'

This commit is contained in:
Andrew Golovashevich 2025-01-26 17:43:40 +03:00
parent 5839d27b1f
commit 33fe39c70d
5 changed files with 53 additions and 41 deletions

View File

@ -1,4 +1,4 @@
package ru.landgrafhomyak.serdha.api.v0.queries package ru.landgrafhomyak.serdha.api.v0.misc
@Suppress("ClassName") @Suppress("ClassName")
public interface _Selectable<@Suppress("unused") QueryUserExtension : Any> public interface _Selectable<@Suppress("unused") QueryUserExtension : Any>

View File

@ -4,12 +4,14 @@ import ru.landgrafhomyak.serdha.api.v0.misc.Column
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
import ru.landgrafhomyak.serdha.api.v0.misc._Selectable
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
import ru.landgrafhomyak.serdha.api.v0.table.Table import ru.landgrafhomyak.serdha.api.v0.table.Table
public interface DeleteQuery<QueryUserExtension : Any> : _Selectable<QueryUserExtension> { public interface DeleteQuery<QueryUserExtension : Any> {
public val userExtension: QueryUserExtension public val userExtension: QueryUserExtension
public interface FromSubquery<QueryUserExtension : Any> : DeleteQuery<QueryUserExtension>, _Selectable<QueryUserExtension> {
public interface Creator<QueryUserExtension : Any, TargetTableUserExtension : Any, SelectorTableUserExtension : Any> { public interface Creator<QueryUserExtension : Any, TargetTableUserExtension : Any, SelectorTableUserExtension : Any> {
public fun createDeleteWithReturning(table: Table<TargetTableUserExtension, *>, creator: Scope<QueryUserExtension, TargetTableUserExtension, SelectorTableUserExtension>): QueryUserExtension public fun createDeleteWithReturning(table: Table<TargetTableUserExtension, *>, creator: Scope<QueryUserExtension, TargetTableUserExtension, SelectorTableUserExtension>): QueryUserExtension
@ -26,3 +28,4 @@ public interface DeleteQuery<QueryUserExtension : Any> : _Selectable<QueryUserEx
} }
} }
} }
}

View File

@ -5,6 +5,7 @@ import ru.landgrafhomyak.serdha.api.v0.table.Table
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
import ru.landgrafhomyak.serdha.api.v0.misc._Selectable
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
import ru.landgrafhomyak.serdha.api.v0.table.UniqueIndex import ru.landgrafhomyak.serdha.api.v0.table.UniqueIndex
@ -29,7 +30,7 @@ public interface InsertQuery<QueryUserExtension : Any> {
} }
public interface SingleRow<QueryUserExtension : Any, TargetTableUserExtension : Any> : InsertQuery<QueryUserExtension> { public interface SingleRow<QueryUserExtension : Any> : InsertQuery<QueryUserExtension>, _Selectable<QueryUserExtension> {
public interface Creator<QueryUserExtension : Any, TargetTableUserExtension : Any> { public interface Creator<QueryUserExtension : Any, TargetTableUserExtension : Any> {
public fun createInsertSingleRowWithReturning(table: Table<TargetTableUserExtension, *>, creator: Scope<QueryUserExtension, TargetTableUserExtension>): QueryUserExtension public fun createInsertSingleRowWithReturning(table: Table<TargetTableUserExtension, *>, creator: Scope<QueryUserExtension, TargetTableUserExtension>): QueryUserExtension
@ -47,7 +48,7 @@ public interface InsertQuery<QueryUserExtension : Any> {
} }
public interface FromSubquery<QueryUserExtension : Any, TargetTableUserExtension : Any> : InsertQuery<QueryUserExtension> { public interface FromSubquery<QueryUserExtension : Any> : InsertQuery<QueryUserExtension>, _Selectable<QueryUserExtension> {
public interface Creator<QueryUserExtension : Any, TargetTableUserExtension : Any, SourceQueryUserExtension : Any> { public interface Creator<QueryUserExtension : Any, TargetTableUserExtension : Any, SourceQueryUserExtension : Any> {
public fun createInsertSingleRowWithReturning(table: Table<TargetTableUserExtension, *>, creator: Scope<QueryUserExtension, TargetTableUserExtension, SourceQueryUserExtension>): QueryUserExtension public fun createInsertSingleRowWithReturning(table: Table<TargetTableUserExtension, *>, creator: Scope<QueryUserExtension, TargetTableUserExtension, SourceQueryUserExtension>): QueryUserExtension
@ -68,7 +69,7 @@ public interface InsertQuery<QueryUserExtension : Any> {
} }
} }
public interface MultipleRows<QueryUserExtension : Any, TargetTableUserExtension : Any> : InsertQuery<QueryUserExtension> { public interface MultipleRows<QueryUserExtension : Any> : InsertQuery<QueryUserExtension> {
public interface Creator<QueryUserExtension : Any, TargetTableUserExtension : Any> { public interface Creator<QueryUserExtension : Any, TargetTableUserExtension : Any> {
public fun createInsertMultipleRows(table: Table<TargetTableUserExtension, *>, creator: Scope<QueryUserExtension, TargetTableUserExtension>): QueryUserExtension public fun createInsertMultipleRows(table: Table<TargetTableUserExtension, *>, creator: Scope<QueryUserExtension, TargetTableUserExtension>): QueryUserExtension

View File

@ -6,6 +6,7 @@ import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider
import ru.landgrafhomyak.serdha.api.v0.misc.Expression import ru.landgrafhomyak.serdha.api.v0.misc.Expression
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
import ru.landgrafhomyak.serdha.api.v0.misc._Selectable
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
public interface SelectQuery<QueryUserExtension : Any> : _Selectable<QueryUserExtension> { public interface SelectQuery<QueryUserExtension : Any> : _Selectable<QueryUserExtension> {
@ -37,6 +38,7 @@ public interface SelectQuery<QueryUserExtension : Any> : _Selectable<QueryUserEx
public fun <RT, DT : DatabaseType<RT>> returnColumn(name: String, column: IntermediateColumn<RT, DT, QueryUserExtension>): Column<RT, DT, QueryUserExtension> public fun <RT, DT : DatabaseType<RT>> returnColumn(name: String, column: IntermediateColumn<RT, DT, QueryUserExtension>): Column<RT, DT, QueryUserExtension>
} }
public interface WithJoin<QueryUserExtension : Any> : SelectQuery<QueryUserExtension> {
public interface JoinCreator<QueryUserExtension : Any, LeftTableUserExtension : Any, RightTableUserExtension : Any> : _CommonSelectCreatorScope<QueryUserExtension> { public interface JoinCreator<QueryUserExtension : Any, LeftTableUserExtension : Any, RightTableUserExtension : Any> : _CommonSelectCreatorScope<QueryUserExtension> {
public fun createSelectWithJoin(creator: Scope<QueryUserExtension, LeftTableUserExtension, RightTableUserExtension>): QueryUserExtension public fun createSelectWithJoin(creator: Scope<QueryUserExtension, LeftTableUserExtension, RightTableUserExtension>): QueryUserExtension
@ -48,7 +50,9 @@ public interface SelectQuery<QueryUserExtension : Any> : _Selectable<QueryUserEx
public fun <RT, DT : DatabaseType<RT>> selectColumnFromRight(column: Column<RT, DT, RightTableUserExtension>): IntermediateColumn<RT, DT, QueryUserExtension> public fun <RT, DT : DatabaseType<RT>> selectColumnFromRight(column: Column<RT, DT, RightTableUserExtension>): IntermediateColumn<RT, DT, QueryUserExtension>
} }
} }
}
public interface FromSubquery<QueryUserExtension : Any> : InsertQuery<QueryUserExtension> {
public interface Creator<QueryUserExtension : Any, TableUserExtension : Any> { public interface Creator<QueryUserExtension : Any, TableUserExtension : Any> {
public fun createSelect(creator: Scope<QueryUserExtension, TableUserExtension>): QueryUserExtension public fun createSelect(creator: Scope<QueryUserExtension, TableUserExtension>): QueryUserExtension
@ -59,3 +63,4 @@ public interface SelectQuery<QueryUserExtension : Any> : _Selectable<QueryUserEx
} }
} }
} }
}

View File

@ -5,13 +5,15 @@ import ru.landgrafhomyak.serdha.api.v0.table.Table
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType
import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider
import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam
import ru.landgrafhomyak.serdha.api.v0.misc._Selectable
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
public interface UpdateQuery<QueryUserExtension : Any> : _Selectable<QueryUserExtension> { public interface UpdateQuery<QueryUserExtension : Any> : _Selectable<QueryUserExtension> {
public val userExtension: QueryUserExtension public val userExtension: QueryUserExtension
public interface FromSubquery<QueryUserExtension : Any> : _Selectable<QueryUserExtension> {
public interface Creator<QueryUserExtension : Any, TargetTableUserExtension : Any, SelectorTableUserExtension : Any> { public interface Creator<QueryUserExtension : Any, TargetTableUserExtension : Any, SelectorTableUserExtension : Any> {
public fun createUpdateWithReturning(table: Table<TargetTableUserExtension, *>, creator: Scope<QueryUserExtension, TargetTableUserExtension, SelectorTableUserExtension>): QueryUserExtension public fun createUpdateFromSubqueryWithReturning(table: Table<TargetTableUserExtension, *>, creator: Scope<QueryUserExtension, TargetTableUserExtension, SelectorTableUserExtension>): QueryUserExtension
public interface Scope<QueryUserExtension : Any, TargetTableUserExtension : Any, SelectorTableUserExtension : Any> { public interface Scope<QueryUserExtension : Any, TargetTableUserExtension : Any, SelectorTableUserExtension : Any> {
public val types: DatabaseTypesProvider public val types: DatabaseTypesProvider
@ -31,3 +33,4 @@ public interface UpdateQuery<QueryUserExtension : Any> : _Selectable<QueryUserEx
} }
} }
} }
}