From 99759909a53b4d8e854e7d132d5d880579fd350c Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Sat, 25 Jan 2025 00:17:59 +0300 Subject: [PATCH] Removing subtypes of inputs --- .../serdha/api/v0/misc/Expression.kt | 2 +- .../serdha/api/v0/misc/Input.kt | 9 --- .../serdha/api/v0/misc/QueryParam.kt | 6 ++ .../serdha/api/v0/misc/SelectedTable.kt | 2 +- .../serdha/api/v0/queries/CopyQuery.kt | 21 ------- .../serdha/api/v0/queries/DeleteQuery.kt | 4 +- .../serdha/api/v0/queries/InsertQuery.kt | 39 +++++++++---- .../serdha/api/v0/queries/UpdateQuery.kt | 4 +- .../api/v0/queries/_CommonCreateQueryScope.kt | 30 ---------- .../queries/_CreateInsertOrCopyQueryScope.kt | 55 ------------------- .../serdha/api/v0/runtime/ParametersSetter.kt | 24 ++++---- 11 files changed, 51 insertions(+), 145 deletions(-) delete mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/Input.kt create mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/QueryParam.kt delete mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/CopyQuery.kt delete mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/_CommonCreateQueryScope.kt delete mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/_CreateInsertOrCopyQueryScope.kt diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/Expression.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/Expression.kt index bb95488..6ceca69 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/Expression.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/Expression.kt @@ -7,7 +7,7 @@ public interface Expression { public val userExtension: ExpressionUserExtension public interface RuntimeExpressionInput, ExpressionUserExtension : Any> : Column - public interface RuntimeExpressionOutput, ExpressionUserExtension : Any> : Input.Column + public interface RuntimeExpressionOutput, ExpressionUserExtension : Any> : QueryParam public fun interface InputLinker { public fun link(linker: Scope) diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/Input.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/Input.kt deleted file mode 100644 index de032ca..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/Input.kt +++ /dev/null @@ -1,9 +0,0 @@ -package ru.landgrafhomyak.serdha.api.v0.misc - -public interface Input, OwnerQueryUserExtension : Any> : IntermediateColumn { - public val name: String - public val userWrapper: OwnerQueryUserExtension - - public interface QueryParam, OwnerQueryUserExtension : Any> : IntermediateColumn - public interface Column, OwnerQueryUserExtension : Any> : IntermediateColumn -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/QueryParam.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/QueryParam.kt new file mode 100644 index 0000000..9063259 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/QueryParam.kt @@ -0,0 +1,6 @@ +package ru.landgrafhomyak.serdha.api.v0.misc + +public interface QueryParam, OwnerQueryUserExtension : Any> { + public val name: String + public val userWrapper: OwnerQueryUserExtension +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/SelectedTable.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/SelectedTable.kt index b3a8d30..4a4808b 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/SelectedTable.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/misc/SelectedTable.kt @@ -4,6 +4,6 @@ public interface SelectedTable> selectColumn(column: Column): SelectedColumn public interface WithParamsRedirect : SelectedTable { - public fun > setParam(subqueryParam: Input.QueryParam, parentParam: Input.QueryParam) + public fun > setParam(subqueryParam: QueryParam, parentParam: QueryParam) } } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/CopyQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/CopyQuery.kt deleted file mode 100644 index 5dc4ccb..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/CopyQuery.kt +++ /dev/null @@ -1,21 +0,0 @@ -package ru.landgrafhomyak.serdha.api.v0.queries - -import ru.landgrafhomyak.serdha.api.v0.misc.Expression -import ru.landgrafhomyak.serdha.api.v0.module.CreateModuleScope -import ru.landgrafhomyak.serdha.api.v0.misc.Column -import ru.landgrafhomyak.serdha.api.v0.table.Table -import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType - -public interface CopyQuery { - public val userExtension: QueryUserExtension - - - public interface Creator { - - public fun createCopy(table: Table, creator: Scope): QueryUserExtension - - public interface Scope { - public fun > insert(column: Column, expression: Expression) - } - } -} \ No newline at end of file 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 433174c..c3f9efe 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 @@ -3,7 +3,7 @@ package ru.landgrafhomyak.serdha.api.v0.queries import ru.landgrafhomyak.serdha.api.v0.misc.Column import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider -import ru.landgrafhomyak.serdha.api.v0.misc.Input +import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam import ru.landgrafhomyak.serdha.api.v0.misc.SelectedColumn import ru.landgrafhomyak.serdha.api.v0.misc.SelectedTable import ru.landgrafhomyak.serdha.api.v0.table.Table @@ -22,7 +22,7 @@ public interface DeleteQuery { public val types: DatabaseTypesProvider - public fun > param(name: String, type: DT): Input.QueryParam + public fun > param(name: String, type: DT): QueryParam } } 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 c0e8927..c1f5c18 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 @@ -1,11 +1,10 @@ package ru.landgrafhomyak.serdha.api.v0.queries -import ru.landgrafhomyak.serdha.api.v0.misc.Expression import ru.landgrafhomyak.serdha.api.v0.misc.Column import ru.landgrafhomyak.serdha.api.v0.table.Table import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider -import ru.landgrafhomyak.serdha.api.v0.misc.Input +import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam import ru.landgrafhomyak.serdha.api.v0.misc.SelectedColumn import ru.landgrafhomyak.serdha.api.v0.misc.SelectedTable import ru.landgrafhomyak.serdha.api.v0.table.UniqueIndex @@ -17,20 +16,13 @@ public interface InsertQuery { public interface _UpsertClauseScope { public fun keepColumn(c: Column<*, *, TargetTableUserExtension>) public fun overrideColumn(c: Column<*, *, TargetTableUserExtension>) - public fun setConstant(c: Input.QueryParam<*, *, QueryUserExtension>) + public fun setConstant(c: QueryParam<*, *, QueryUserExtension>) } @Suppress("ClassName") public interface _CommonInsertCreatorScope { public val types: DatabaseTypesProvider - public fun > queryParam(name: String, type: DT): Input.Column - - public fun > insertConstant( - column: Column, - paramName: String = column.name, - ): Input.QueryParam - public fun onConflictUpdate(u: UniqueIndex, c: (_UpsertClauseScope) -> Unit) public fun onConflictThrow(u: UniqueIndex) @@ -44,6 +36,17 @@ public interface InsertQuery { public fun createInsertSingleRow(table: Table, creator: Scope): QueryUserExtension public interface Scope : _CommonInsertCreatorScope { + public fun > queryParam(name: String, type: DT): QueryParam + + public fun > insertConstant( + column: Column, + paramName: String = column.name, + ): QueryParam + + public fun > insertConstant( + column: Column, + param: QueryParam + ) } } @@ -66,6 +69,18 @@ public interface InsertQuery { public fun createInsertFromQuery(table: Table, creator: Scope): QueryUserExtension public interface Scope : _CommonInsertCreatorScope { + public fun > queryParam(name: String, type: DT): QueryParam + + public fun > insertConstant( + column: Column, + paramName: String = column.name, + ): QueryParam + + public fun > insertConstant( + column: Column, + param: QueryParam + ) + public val sourceValues: SelectedTable public fun > insertColumn(dst: Column, src: SelectedColumn) @@ -90,9 +105,9 @@ public interface InsertQuery { public fun createInsertMultipleRows(table: Table, creator: Scope): QueryUserExtension public interface Scope : _CommonInsertCreatorScope { - public fun > inputColumn(name: String, type: DT): Input.Column + public fun > inputColumn(name: String, type: DT): QueryParam - public fun > insertColumn(dst: Column, src: Input.Column) + public fun > insertColumn(dst: Column, src: QueryParam) } } } 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 0dbebbb..a67835a 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 @@ -3,7 +3,7 @@ package ru.landgrafhomyak.serdha.api.v0.queries import ru.landgrafhomyak.serdha.api.v0.misc.Column import ru.landgrafhomyak.serdha.api.v0.table.Table import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType -import ru.landgrafhomyak.serdha.api.v0.misc.Input +import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam import ru.landgrafhomyak.serdha.api.v0.misc.SelectedColumn import ru.landgrafhomyak.serdha.api.v0.misc.SelectedTable @@ -23,7 +23,7 @@ public interface UpdateQuery { public fun > updateColumn(c: Column, e: SelectedColumn) - public fun > param(name: String, type: DT): Input.QueryParam + public fun > param(name: String, type: DT): QueryParam } } diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/_CommonCreateQueryScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/_CommonCreateQueryScope.kt deleted file mode 100644 index 4089eec..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/_CommonCreateQueryScope.kt +++ /dev/null @@ -1,30 +0,0 @@ -package ru.landgrafhomyak.serdha.api.v0.queries - -import ru.landgrafhomyak.serdha.api.v0.misc.BuiltinExpressionsProvider -import ru.landgrafhomyak.serdha.api.v0.misc.IntermediateColumn -import ru.landgrafhomyak.serdha.api.v0.misc.Column -import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType -import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseTypesProvider -import ru.landgrafhomyak.serdha.api.v0.misc.Input -import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter - -@Suppress("ClassName") -public interface _CommonCreateQueryScope { - public val types: DatabaseTypesProvider - - public val expressionBuilder: BuiltinExpressionsProvider - - public interface SubqueryParametersSetter : ParametersSetter { - public operator fun > set(c: Input.QueryParam, value: IntermediateColumn) - } - - public interface _ReturningClauseScope { - public fun > returnExpression(expression: IntermediateColumn): Column - - public var isDistinct: Boolean - - public fun orderBy(order: SelectQuery.Order, vararg columns: Column<*, *, QueryUserExtension>) - - public fun groupBy(vararg columns: Column<*, *, QueryUserExtension>) - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/_CreateInsertOrCopyQueryScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/_CreateInsertOrCopyQueryScope.kt deleted file mode 100644 index 9559d42..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/queries/_CreateInsertOrCopyQueryScope.kt +++ /dev/null @@ -1,55 +0,0 @@ -package ru.landgrafhomyak.serdha.api.v0.queries - -import ru.landgrafhomyak.serdha.api.v0.misc.IntermediateColumn -import ru.landgrafhomyak.serdha.api.v0.misc.Column -import ru.landgrafhomyak.serdha.api.v0.table.UniqueIndex -import ru.landgrafhomyak.serdha.api.v0.misc.DatabaseType -import ru.landgrafhomyak.serdha.api.v0.misc.SelectedTable - -@Suppress("ClassName") -public interface _CreateInsertOrCopyQueryScope : _CommonCreateQueryScope { - public val insertedValues: SelectedTable - - @Suppress("ClassName") - public interface _UpsertClauseScope { - public fun > oldColumnValue(c: Column): IntermediateColumn - - public fun > updateColumn(c: Column, e: IntermediateColumn) - } - - public fun onConflictUpdate(u: UniqueIndex, c: (_UpsertClauseScope) -> Unit) - - public fun onConflictThrow(u: UniqueIndex) - - public fun onConflictIgnore(u: UniqueIndex) - - public val returningInserted: _CommonCreateQueryScope._ReturningClauseScope - - @Suppress("ClassName") - public interface _ReturningUpdatedClauseScope : _CommonCreateQueryScope._ReturningClauseScope { - public fun > oldColumnValue(c: Column): IntermediateColumn - } - - public val returningUpdated: _ReturningUpdatedClauseScope -} - - - - - - - - - - - - - - - - - - - - - diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/ParametersSetter.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/ParametersSetter.kt index 4b9a1f2..1c3184b 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/ParametersSetter.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/runtime/ParametersSetter.kt @@ -1,18 +1,18 @@ package ru.landgrafhomyak.serdha.api.v0.runtime -import ru.landgrafhomyak.serdha.api.v0.misc.Input +import ru.landgrafhomyak.serdha.api.v0.misc.QueryParam public interface ParametersSetter { - public operator fun set(c: Input, value: RuntimeType) + public operator fun set(c: QueryParam, value: RuntimeType) - public operator fun set(c: Input, value: Byte): Unit = this.set(c, value) - public operator fun set(c: Input, value: UByte): Unit = this.set(c, value) - public operator fun set(c: Input, value: Short): Unit = this.set(c, value) - public operator fun set(c: Input, value: UShort): Unit = this.set(c, value) - public operator fun set(c: Input, value: Int): Unit = this.set(c, value) - public operator fun set(c: Input, value: UInt): Unit = this.set(c, value) - public operator fun set(c: Input, value: Long): Unit = this.set(c, value) - public operator fun set(c: Input, value: ULong): Unit = this.set(c, value) - public operator fun set(c: Input, value: Char): Unit = this.set(c, value) - public operator fun set(c: Input, value: Boolean): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Byte): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: UByte): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Short): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: UShort): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Int): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: UInt): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Long): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: ULong): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Char): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Boolean): Unit = this.set(c, value) } \ No newline at end of file