From d7877e57bc2c74142b1975c1f2661623c8062506 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Tue, 18 Feb 2025 14:26:42 +0300 Subject: [PATCH] Fixes pack 1 --- .../db/serdha0/api/misc/DatabaseType.kt | 2 +- .../db/serdha0/api/misc/FiltersScope.kt | 4 ++-- .../landgrafhomyak/db/serdha0/api/misc/QueryParam.kt | 1 + .../ru/landgrafhomyak/db/serdha0/api/misc/Reducer.kt | 6 +++--- .../db/serdha0/api/queries/DeleteQuery.kt | 8 ++++---- .../db/serdha0/api/queries/InsertQuery.kt | 4 ++-- .../db/serdha0/api/queries/SelectQuery.kt | 4 +++- .../db/serdha0/api/queries/UpdateQuery.kt | 11 ++++++----- .../ru/landgrafhomyak/db/serdha0/api/table/Table.kt | 2 -- .../db/serdha0/api/table/TableConstructor.kt | 5 +++-- .../db/serdha0/api/table/TableUpgrade.kt | 1 + 11 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/DatabaseType.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/DatabaseType.kt index e67b160..82aa610 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/DatabaseType.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/DatabaseType.kt @@ -59,7 +59,7 @@ public interface DatabaseType<@Suppress("unused") RT> { public interface Provider { @Suppress("INAPPLICABLE_JVM_NAME", "FunctionName") @JvmName("ROW_ID") - public fun ROW_ID(table: Table): DatabaseType> + public fun ROW_ID(table: Table): DatabaseType.ROW_ID @Suppress("INAPPLICABLE_JVM_NAME", "PropertyName") @get:JvmName("BOOLEAN") diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/FiltersScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/FiltersScope.kt index bdbc71d..5bacd2d 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/FiltersScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/FiltersScope.kt @@ -13,8 +13,8 @@ public interface FiltersScope { GREATER_OR_EQUALS, } - public fun > compareWithParam(column: IntermediateColumn, operator: ComparisonType, param: QueryParam) - public fun > compareWithConstant(column: IntermediateColumn, operator: ComparisonType, constant: RT) + public fun > compareWithParam(column: IntermediateColumn, operator: ComparisonType, param: QueryParam) + public fun > compareWithConstant(column: IntermediateColumn, operator: ComparisonType, constant: RT) public fun ifTrue(column: IntermediateColumn) public fun ifFalse(column: IntermediateColumn) } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/QueryParam.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/QueryParam.kt index 6ba77e5..d1c59c3 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/QueryParam.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/QueryParam.kt @@ -3,4 +3,5 @@ package ru.landgrafhomyak.db.serdha0.api.misc public interface QueryParam, OwnerQueryUserExtension : Any> { public val name: String public val userWrapper: OwnerQueryUserExtension + public val type: DT } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/Reducer.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/Reducer.kt index 97cb68a..449b0e7 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/Reducer.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/misc/Reducer.kt @@ -10,12 +10,12 @@ public interface Reducer { public interface OutputColumn, rUE : Any> : Column, QueryParam - public fun interface Linker { - public fun link(linker: Scope): oUE + public fun interface Linker<_rUE : Any, qUE : Any, oUE : Any> { + public fun link(rUE: _rUE, linker: Scope<_rUE, qUE>): oUE public interface Scope<_rUE : Any, qUE : Any> { public val rUE: _rUE - public fun > link(red: BidirectionalColumn, src: IntermediateColumn): IntermediateColumn + public fun > link(red: BidirectionalColumn, src: IntermediateColumn): IntermediateColumn public fun > linkAndInitialize(red: BidirectionalColumn, src: IntermediateColumn, initial: RT): IntermediateColumn public fun > linkAndInitialize(red: BidirectionalColumn, src: IntermediateColumn, initial: QueryParam): IntermediateColumn public fun > link(red: OutputColumn): IntermediateColumn diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/DeleteQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/DeleteQuery.kt index 2e8ac74..3eeae43 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/DeleteQuery.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/DeleteQuery.kt @@ -22,9 +22,9 @@ public interface DeleteQuery : _Query { public val tt: Table public val types: DatabaseType.Provider - public fun > param(name: String, type: DT): QueryParam + public fun > queryParam(name: String, type: DT): QueryParam - public var rowToRemove: QueryParam<*, DatabaseType.ROW_ID, qUE> + public val rowToRemove: QueryParam<*, DatabaseType.ROW_ID, qUE> public fun > returnRemovedValue(name: String, column: Column): Column public fun > returnParam(name: String, column: QueryParam): Column @@ -51,10 +51,10 @@ public interface DeleteQuery : _Query { public val src: _Selectable public val types: DatabaseType.Provider - public fun > param(name: String, type: DT): QueryParam + public fun > queryParam(name: String, type: DT): QueryParam public val selectorParams: InputRow.WithRedirect - public var selectorColumn: Column<*, DatabaseType.ROW_ID, sUE> + public val selectorColumn: Column<*, DatabaseType.ROW_ID, sUE> public fun > returnFromSubquery(name: String, column: Column): Column public fun > returnRemovedValue(name: String, column: Column): Column diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/InsertQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/InsertQuery.kt index a0a6320..f515cf2 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/InsertQuery.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/InsertQuery.kt @@ -73,12 +73,12 @@ public interface InsertQuery : _Query { public fun > insertConstant(dst: Column, src: RT) public fun > insertParam(dst: Column, src: QueryParam) - public fun > insertFromSubquery(dst: Column, src: Column) + public fun > insertFromSubquery(dst: Column, src: Column) public fun onConflictReturnOnly(u: UniqueIndex) public fun > returnFromSubquery(name: String, column: Column): Column - public fun > returnNewValue(name: String, column: Column): Column + public fun > returnInsertedValue(name: String, column: Column): Column public fun > returnParam(name: String, param: QueryParam): Column } } diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/SelectQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/SelectQuery.kt index 2b3c03d..49c7e01 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/SelectQuery.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/SelectQuery.kt @@ -20,11 +20,13 @@ public interface SelectQuery : _Query { public val join: Join ) { public enum class LeftNull { + NULL_NOT_EXPECTED, AS_ID, SKIP, JOIN_TO_NULL } public enum class Join { - LEFT_TO_FIRST_RIGHT, LEFT_FOR_EACH_RIGHT, LEFT_FOR_EACH_RIGHT_OR_NULL, + LEFT_TO_FIRST_RIGHT, LEFT_FOR_EACH_RIGHT, LEFT_FOR_EACH_RIGHT_OR_TO_NULL, + EACH_LEFT_TO_EACH_RIGHT } } diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/UpdateQuery.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/UpdateQuery.kt index 5270af2..04d1b5c 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/UpdateQuery.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/queries/UpdateQuery.kt @@ -6,6 +6,7 @@ import ru.landgrafhomyak.db.serdha0.api.misc.DatabaseType import ru.landgrafhomyak.db.serdha0.api.misc.QueryParam import ru.landgrafhomyak.db.serdha0.api.misc._Selectable import ru.landgrafhomyak.db.serdha0.api.runtime.InputRow +import ru.landgrafhomyak.db.serdha0.api.table.RowId public interface UpdateQuery : _Query { public interface SingleRow : UpdateQuery, _Query.Params2Table { @@ -20,9 +21,9 @@ public interface UpdateQuery : _Query { public val tt: Table public val types: DatabaseType.Provider - public fun > param(name: String, type: DT): QueryParam + public fun > queryParam(name: String, type: DT): QueryParam - public var rowToUpdate: QueryParam<*, DatabaseType.ROW_ID, qUE> + public val rowToUpdate: QueryParam<*, DatabaseType.ROW_ID, qUE> public fun > updateColumnWithOldValue(dst: Column, src: Column) public fun > updateColumnWithParam(dst: Column, src: QueryParam) @@ -53,10 +54,10 @@ public interface UpdateQuery : _Query { public val src: _Selectable public val types: DatabaseType.Provider - public fun > param(name: String, type: DT): QueryParam + public fun > queryParam(name: String, type: DT): QueryParam public val selectorParams: InputRow.WithRedirect - public var selectorColumn: Column<*, DatabaseType.ROW_ID, sUE> + public val selectorColumn: Column, DatabaseType.ROW_ID, sUE> public fun > updateColumnWithSubquery(dst: Column, src: Column) public fun > updateColumnWithOldValue(dst: Column, src: Column) @@ -88,7 +89,7 @@ public interface UpdateQuery : _Query { public val types: DatabaseType.Provider public fun > inputColumn(name: String, type: DT): QueryParam - public var rowToUpdate: QueryParam<*, DatabaseType.ROW_ID, qUE> + public val rowToUpdate: QueryParam<*, DatabaseType.ROW_ID, qUE> public fun > updateColumnWithOldValue(dst: Column, src: Column) public fun > updateColumnWithParam(dst: Column, src: QueryParam) diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/Table.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/Table.kt index e75c1bb..d375c50 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/Table.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/Table.kt @@ -16,6 +16,4 @@ public interface Table : _Selectable { public val temporaryType: TemporaryType? public val namespacesFromModuleRoot: List - - public val isMutable: Boolean } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/TableConstructor.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/TableConstructor.kt index 82f92a0..49798da 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/TableConstructor.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/TableConstructor.kt @@ -18,10 +18,11 @@ public interface TableConstructor { public fun uniqueIndex(name: String, distinctNulls: Boolean, vararg columns: Column<*, *, tUE>): UniqueIndex public fun checkConstraint(name: String, constructor: RowExpression.Constructor, recheckExistingRows: Boolean = false): CheckConstraint - public fun defaultValue(c: Column, creator: RowExpression.Constructor): ColumnDefaultValue + public fun > defaultValue(c: Column, value: RT): ColumnDefaultValue + public fun > defaultValue(c: Column, creator: RowExpression.Constructor): ColumnDefaultValue @Suppress("PropertyName") - public val rowId_column: Column, DatabaseType>, tUE> + public val rowId_column: Column, DatabaseType.ROW_ID, tUE> @Suppress("PropertyName") public val rowId_uniqueConstraint: UniqueIndex diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/TableUpgrade.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/TableUpgrade.kt index 88d1c88..c9a0e87 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/TableUpgrade.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/serdha0/api/table/TableUpgrade.kt @@ -27,6 +27,7 @@ public interface TableUpgrade { public fun > keepDefaultValue(c: Column, d: ColumnDefaultValue): ColumnDefaultValue public fun > changeDefaultValue(c: Column, d: ColumnDefaultValue): ColumnDefaultValue + public fun > changeDefaultValue(c: Column, d: RT): ColumnDefaultValue public fun deleteDefaultValue(i: ColumnDefaultValue) public fun > keepForeignRowReference(