kysely 0.21.6 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +70 -0
- package/README.md +27 -4
- package/dist/cjs/dialect/database-introspector.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +6 -3
- package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/cjs/dialect/postgres/postgres-driver.js +7 -2
- package/dist/cjs/dialect/postgres/postgres-introspector.js +8 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +4 -3
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/cjs/driver/database-connection.d.ts +6 -2
- package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +2 -3
- package/dist/cjs/dynamic/dynamic-reference-builder.js +1 -1
- package/dist/cjs/expression/expression.d.ts +100 -0
- package/dist/cjs/expression/expression.js +16 -0
- package/dist/cjs/index.d.ts +17 -8
- package/dist/cjs/index.js +15 -4
- package/dist/cjs/kysely.d.ts +3 -3
- package/dist/cjs/kysely.js +3 -3
- package/dist/cjs/migration/file-migration-provider.js +11 -4
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +25 -0
- package/dist/cjs/operation-node/aggregate-function-node.js +48 -0
- package/dist/cjs/operation-node/alias-node.d.ts +3 -10
- package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
- package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
- package/dist/cjs/operation-node/alter-table-node.js +9 -1
- package/dist/cjs/operation-node/and-node.d.ts +3 -4
- package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
- package/dist/cjs/operation-node/binary-operation-node.js +20 -0
- package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
- package/dist/cjs/operation-node/column-definition-node.js +16 -0
- package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
- package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
- package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
- package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -2
- package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
- package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-type-node.js +1 -2
- package/dist/cjs/operation-node/explain-node.d.ts +2 -4
- package/dist/cjs/operation-node/explain-node.js +1 -1
- package/dist/cjs/operation-node/from-node.d.ts +3 -4
- package/dist/cjs/operation-node/generated-node.d.ts +2 -3
- package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
- package/dist/cjs/operation-node/group-by-node.d.ts +1 -1
- package/dist/cjs/operation-node/group-by-node.js +3 -3
- package/dist/cjs/operation-node/having-node.d.ts +3 -4
- package/dist/cjs/operation-node/having-node.js +4 -4
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -4
- package/dist/cjs/operation-node/join-node.d.ts +5 -9
- package/dist/cjs/operation-node/join-node.js +6 -6
- package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
- package/dist/cjs/operation-node/on-conflict-node.js +12 -12
- package/dist/cjs/operation-node/on-node.d.ts +3 -4
- package/dist/cjs/operation-node/on-node.js +4 -4
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +14 -4
- package/dist/cjs/operation-node/operation-node-transformer.js +60 -20
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +14 -4
- package/dist/cjs/operation-node/operation-node-visitor.js +7 -2
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +5 -3
- package/dist/cjs/operation-node/operator-node.js +3 -5
- package/dist/cjs/operation-node/or-node.d.ts +3 -4
- package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
- package/dist/cjs/operation-node/over-node.d.ts +19 -0
- package/dist/cjs/operation-node/over-node.js +35 -0
- package/dist/cjs/operation-node/parens-node.d.ts +2 -3
- package/dist/cjs/operation-node/partition-by-item-node.d.ts +13 -0
- package/dist/cjs/operation-node/{filter-node.js → partition-by-item-node.js} +6 -8
- package/dist/cjs/operation-node/partition-by-node.d.ts +14 -0
- package/dist/cjs/operation-node/partition-by-node.js +24 -0
- package/dist/cjs/operation-node/query-node.d.ts +2 -3
- package/dist/cjs/operation-node/query-node.js +6 -6
- package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
- package/dist/cjs/operation-node/select-modifier-node.js +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +8 -9
- package/dist/cjs/operation-node/select-query-node.js +14 -14
- package/dist/cjs/operation-node/selection-node.d.ts +2 -3
- package/dist/cjs/operation-node/set-operation-node.d.ts +15 -0
- package/dist/cjs/operation-node/{union-node.js → set-operation-node.js} +7 -6
- package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
- package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
- package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
- package/dist/cjs/operation-node/unary-operation-node.js +19 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/value-list-node.d.ts +2 -8
- package/dist/cjs/operation-node/where-node.d.ts +3 -4
- package/dist/cjs/operation-node/where-node.js +4 -4
- package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
- package/dist/cjs/parser/binary-operation-parser.js +99 -0
- package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
- package/dist/cjs/parser/coalesce-parser.js +11 -0
- package/dist/cjs/parser/data-type-parser.d.ts +5 -5
- package/dist/cjs/parser/default-value-parser.d.ts +4 -5
- package/dist/cjs/parser/default-value-parser.js +2 -2
- package/dist/cjs/parser/expression-parser.d.ts +10 -0
- package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
- package/dist/cjs/parser/group-by-parser.d.ts +1 -1
- package/dist/cjs/parser/group-by-parser.js +2 -2
- package/dist/cjs/parser/identifier-parser.d.ts +2 -0
- package/dist/cjs/parser/identifier-parser.js +23 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
- package/dist/cjs/parser/insert-values-parser.js +2 -2
- package/dist/cjs/parser/join-parser.js +2 -2
- package/dist/cjs/parser/order-by-parser.d.ts +2 -2
- package/dist/cjs/parser/parse-utils.d.ts +2 -0
- package/dist/cjs/parser/parse-utils.js +9 -1
- package/dist/cjs/parser/partition-by-parser.d.ts +6 -0
- package/dist/cjs/parser/partition-by-parser.js +9 -0
- package/dist/cjs/parser/reference-parser.d.ts +14 -13
- package/dist/cjs/parser/reference-parser.js +12 -9
- package/dist/cjs/parser/select-parser.d.ts +6 -6
- package/dist/cjs/parser/select-parser.js +2 -2
- package/dist/cjs/parser/set-operation-parser.d.ts +3 -0
- package/dist/cjs/parser/set-operation-parser.js +8 -0
- package/dist/cjs/parser/table-parser.d.ts +11 -12
- package/dist/cjs/parser/table-parser.js +2 -2
- package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
- package/dist/cjs/parser/unary-operation-parser.js +17 -0
- package/dist/cjs/parser/update-set-parser.d.ts +1 -1
- package/dist/cjs/parser/value-parser.d.ts +5 -8
- package/dist/cjs/parser/value-parser.js +4 -4
- package/dist/cjs/parser/with-parser.d.ts +3 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +348 -0
- package/dist/cjs/query-builder/aggregate-function-builder.js +298 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
- package/dist/cjs/query-builder/delete-query-builder.js +19 -16
- package/dist/cjs/query-builder/expression-builder.d.ts +3 -3
- package/dist/cjs/query-builder/expression-builder.js +3 -3
- package/dist/cjs/query-builder/function-module.d.ts +241 -0
- package/dist/cjs/query-builder/function-module.js +214 -0
- package/dist/cjs/query-builder/having-interface.d.ts +9 -8
- package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
- package/dist/cjs/query-builder/insert-query-builder.js +11 -9
- package/dist/cjs/query-builder/insert-result.d.ts +8 -1
- package/dist/cjs/query-builder/insert-result.js +12 -1
- package/dist/cjs/query-builder/join-builder.d.ts +9 -8
- package/dist/cjs/query-builder/join-builder.js +10 -9
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
- package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
- package/dist/cjs/query-builder/over-builder.d.ts +59 -0
- package/dist/cjs/query-builder/over-builder.js +50 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +138 -47
- package/dist/cjs/query-builder/select-query-builder.js +122 -40
- package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
- package/dist/cjs/query-builder/update-query-builder.js +19 -16
- package/dist/cjs/query-builder/where-interface.d.ts +12 -11
- package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +15 -5
- package/dist/cjs/query-compiler/default-query-compiler.js +78 -47
- package/dist/cjs/query-executor/query-executor-base.js +16 -1
- package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
- package/dist/cjs/raw-builder/raw-builder.js +24 -14
- package/dist/cjs/raw-builder/sql.d.ts +15 -7
- package/dist/cjs/raw-builder/sql.js +6 -0
- package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
- package/dist/cjs/schema/alter-column-builder.js +55 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
- package/dist/cjs/schema/alter-table-builder.js +65 -280
- package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
- package/dist/cjs/schema/column-definition-builder.js +189 -0
- package/dist/cjs/schema/create-index-builder.d.ts +2 -2
- package/dist/cjs/schema/create-table-builder.d.ts +38 -5
- package/dist/cjs/schema/create-table-builder.js +36 -1
- package/dist/cjs/schema/create-view-builder.d.ts +3 -2
- package/dist/cjs/schema/schema.d.ts +2 -2
- package/dist/cjs/schema/schema.js +6 -5
- package/dist/cjs/util/compilable.d.ts +2 -2
- package/dist/cjs/util/explainable.d.ts +2 -2
- package/dist/cjs/util/infer-result.d.ts +46 -0
- package/dist/cjs/util/infer-result.js +2 -0
- package/dist/cjs/util/log-once.d.ts +5 -0
- package/dist/cjs/util/log-once.js +16 -0
- package/dist/cjs/util/object-utils.d.ts +1 -0
- package/dist/cjs/util/object-utils.js +5 -1
- package/dist/cjs/util/type-utils.d.ts +3 -13
- package/dist/esm/dialect/database-introspector.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
- package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/driver/database-connection.d.ts +6 -2
- package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
- package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
- package/dist/esm/expression/expression.d.ts +100 -0
- package/dist/esm/expression/expression.js +12 -0
- package/dist/esm/index.d.ts +17 -8
- package/dist/esm/index.js +13 -4
- package/dist/esm/kysely.d.ts +3 -3
- package/dist/esm/kysely.js +3 -3
- package/dist/esm/migration/file-migration-provider.js +11 -4
- package/dist/esm/operation-node/aggregate-function-node.d.ts +25 -0
- package/dist/esm/operation-node/aggregate-function-node.js +46 -0
- package/dist/esm/operation-node/alias-node.d.ts +3 -10
- package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
- package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
- package/dist/esm/operation-node/alter-table-node.js +9 -1
- package/dist/esm/operation-node/and-node.d.ts +3 -4
- package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
- package/dist/esm/operation-node/binary-operation-node.js +18 -0
- package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
- package/dist/esm/operation-node/column-definition-node.js +16 -0
- package/dist/esm/operation-node/column-update-node.d.ts +2 -3
- package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
- package/dist/esm/operation-node/create-index-node.d.ts +1 -3
- package/dist/esm/operation-node/create-table-node.d.ts +4 -5
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -2
- package/dist/esm/operation-node/default-value-node.d.ts +2 -4
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
- package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-type-node.js +1 -2
- package/dist/esm/operation-node/explain-node.d.ts +2 -4
- package/dist/esm/operation-node/explain-node.js +1 -1
- package/dist/esm/operation-node/from-node.d.ts +3 -4
- package/dist/esm/operation-node/generated-node.d.ts +2 -3
- package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
- package/dist/esm/operation-node/group-by-node.d.ts +1 -1
- package/dist/esm/operation-node/group-by-node.js +3 -3
- package/dist/esm/operation-node/having-node.d.ts +3 -4
- package/dist/esm/operation-node/having-node.js +4 -4
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -4
- package/dist/esm/operation-node/join-node.d.ts +5 -9
- package/dist/esm/operation-node/join-node.js +6 -6
- package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
- package/dist/esm/operation-node/on-conflict-node.js +12 -12
- package/dist/esm/operation-node/on-node.d.ts +3 -4
- package/dist/esm/operation-node/on-node.js +4 -4
- package/dist/esm/operation-node/operation-node-transformer.d.ts +14 -4
- package/dist/esm/operation-node/operation-node-transformer.js +60 -20
- package/dist/esm/operation-node/operation-node-visitor.d.ts +14 -4
- package/dist/esm/operation-node/operation-node-visitor.js +7 -2
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +5 -3
- package/dist/esm/operation-node/operator-node.js +2 -4
- package/dist/esm/operation-node/or-node.d.ts +3 -4
- package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
- package/dist/esm/operation-node/over-node.d.ts +19 -0
- package/dist/esm/operation-node/over-node.js +33 -0
- package/dist/esm/operation-node/parens-node.d.ts +2 -3
- package/dist/esm/operation-node/partition-by-item-node.d.ts +13 -0
- package/dist/esm/operation-node/partition-by-item-node.js +16 -0
- package/dist/esm/operation-node/partition-by-node.d.ts +14 -0
- package/dist/esm/operation-node/partition-by-node.js +22 -0
- package/dist/esm/operation-node/query-node.d.ts +2 -3
- package/dist/esm/operation-node/query-node.js +6 -6
- package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
- package/dist/esm/operation-node/select-modifier-node.js +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +8 -9
- package/dist/esm/operation-node/select-query-node.js +14 -14
- package/dist/esm/operation-node/selection-node.d.ts +2 -3
- package/dist/esm/operation-node/set-operation-node.d.ts +15 -0
- package/dist/esm/operation-node/set-operation-node.js +18 -0
- package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
- package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
- package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
- package/dist/esm/operation-node/unary-operation-node.js +17 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/value-list-node.d.ts +2 -8
- package/dist/esm/operation-node/where-node.d.ts +3 -4
- package/dist/esm/operation-node/where-node.js +4 -4
- package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
- package/dist/esm/parser/binary-operation-parser.js +92 -0
- package/dist/esm/parser/coalesce-parser.d.ts +4 -0
- package/dist/esm/parser/coalesce-parser.js +8 -0
- package/dist/esm/parser/data-type-parser.d.ts +5 -5
- package/dist/esm/parser/default-value-parser.d.ts +4 -5
- package/dist/esm/parser/default-value-parser.js +2 -2
- package/dist/esm/parser/expression-parser.d.ts +10 -0
- package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
- package/dist/esm/parser/group-by-parser.d.ts +1 -1
- package/dist/esm/parser/group-by-parser.js +2 -2
- package/dist/esm/parser/identifier-parser.d.ts +2 -0
- package/dist/esm/parser/identifier-parser.js +20 -0
- package/dist/esm/parser/insert-values-parser.d.ts +1 -1
- package/dist/esm/parser/insert-values-parser.js +2 -2
- package/dist/esm/parser/join-parser.js +2 -2
- package/dist/esm/parser/order-by-parser.d.ts +2 -2
- package/dist/esm/parser/parse-utils.d.ts +2 -0
- package/dist/esm/parser/parse-utils.js +7 -0
- package/dist/esm/parser/partition-by-parser.d.ts +6 -0
- package/dist/esm/parser/partition-by-parser.js +6 -0
- package/dist/esm/parser/reference-parser.d.ts +14 -13
- package/dist/esm/parser/reference-parser.js +10 -8
- package/dist/esm/parser/select-parser.d.ts +6 -6
- package/dist/esm/parser/select-parser.js +2 -2
- package/dist/esm/parser/set-operation-parser.d.ts +3 -0
- package/dist/esm/parser/set-operation-parser.js +5 -0
- package/dist/esm/parser/table-parser.d.ts +11 -12
- package/dist/esm/parser/table-parser.js +2 -2
- package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
- package/dist/esm/parser/unary-operation-parser.js +13 -0
- package/dist/esm/parser/update-set-parser.d.ts +1 -1
- package/dist/esm/parser/value-parser.d.ts +5 -8
- package/dist/esm/parser/value-parser.js +4 -4
- package/dist/esm/parser/with-parser.d.ts +3 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +348 -0
- package/dist/esm/query-builder/aggregate-function-builder.js +294 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
- package/dist/esm/query-builder/delete-query-builder.js +19 -16
- package/dist/esm/query-builder/expression-builder.d.ts +3 -3
- package/dist/esm/query-builder/expression-builder.js +3 -3
- package/dist/esm/query-builder/function-module.d.ts +241 -0
- package/dist/esm/query-builder/function-module.js +211 -0
- package/dist/esm/query-builder/having-interface.d.ts +9 -8
- package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
- package/dist/esm/query-builder/insert-query-builder.js +11 -9
- package/dist/esm/query-builder/insert-result.d.ts +8 -1
- package/dist/esm/query-builder/insert-result.js +12 -1
- package/dist/esm/query-builder/join-builder.d.ts +9 -8
- package/dist/esm/query-builder/join-builder.js +10 -9
- package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
- package/dist/esm/query-builder/on-conflict-builder.js +18 -17
- package/dist/esm/query-builder/over-builder.d.ts +59 -0
- package/dist/esm/query-builder/over-builder.js +47 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +138 -47
- package/dist/esm/query-builder/select-query-builder.js +120 -38
- package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
- package/dist/esm/query-builder/update-query-builder.js +19 -16
- package/dist/esm/query-builder/where-interface.d.ts +12 -11
- package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +15 -5
- package/dist/esm/query-compiler/default-query-compiler.js +79 -48
- package/dist/esm/query-executor/query-executor-base.js +16 -1
- package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
- package/dist/esm/raw-builder/raw-builder.js +23 -14
- package/dist/esm/raw-builder/sql.d.ts +15 -7
- package/dist/esm/raw-builder/sql.js +6 -0
- package/dist/esm/schema/alter-column-builder.d.ts +28 -0
- package/dist/esm/schema/alter-column-builder.js +51 -0
- package/dist/esm/schema/alter-table-builder.d.ts +39 -341
- package/dist/esm/schema/alter-table-builder.js +61 -274
- package/dist/esm/schema/column-definition-builder.d.ts +43 -155
- package/dist/esm/schema/column-definition-builder.js +189 -0
- package/dist/esm/schema/create-index-builder.d.ts +2 -2
- package/dist/esm/schema/create-table-builder.d.ts +38 -5
- package/dist/esm/schema/create-table-builder.js +36 -1
- package/dist/esm/schema/create-view-builder.d.ts +3 -2
- package/dist/esm/schema/schema.d.ts +2 -2
- package/dist/esm/schema/schema.js +6 -5
- package/dist/esm/util/compilable.d.ts +2 -2
- package/dist/esm/util/explainable.d.ts +2 -2
- package/dist/esm/util/infer-result.d.ts +46 -0
- package/dist/esm/util/infer-result.js +2 -0
- package/dist/esm/util/log-once.d.ts +5 -0
- package/dist/esm/util/log-once.js +13 -0
- package/dist/esm/util/object-utils.d.ts +1 -0
- package/dist/esm/util/object-utils.js +3 -0
- package/dist/esm/util/type-utils.d.ts +3 -13
- package/package.json +4 -1
- package/dist/cjs/operation-node/filter-node.d.ts +0 -18
- package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -17
- package/dist/cjs/operation-node/union-node.d.ts +0 -16
- package/dist/cjs/parser/complex-expression-parser.d.ts +0 -10
- package/dist/cjs/parser/filter-parser.d.ts +0 -24
- package/dist/cjs/parser/filter-parser.js +0 -109
- package/dist/cjs/parser/union-parser.d.ts +0 -5
- package/dist/cjs/parser/union-parser.js +0 -8
- package/dist/cjs/query-builder/function-builder.d.ts +0 -133
- package/dist/cjs/query-builder/function-builder.js +0 -160
- package/dist/esm/operation-node/filter-node.d.ts +0 -18
- package/dist/esm/operation-node/filter-node.js +0 -18
- package/dist/esm/operation-node/operation-node-utils.d.ts +0 -17
- package/dist/esm/operation-node/operation-node-utils.js +0 -2
- package/dist/esm/operation-node/union-node.d.ts +0 -16
- package/dist/esm/operation-node/union-node.js +0 -17
- package/dist/esm/parser/complex-expression-parser.d.ts +0 -10
- package/dist/esm/parser/filter-parser.d.ts +0 -24
- package/dist/esm/parser/filter-parser.js +0 -100
- package/dist/esm/parser/union-parser.d.ts +0 -5
- package/dist/esm/parser/union-parser.js +0 -5
- package/dist/esm/query-builder/function-builder.d.ts +0 -133
- package/dist/esm/query-builder/function-builder.js +0 -157
|
@@ -3,7 +3,7 @@ import { AliasNode } from '../operation-node/alias-node.js';
|
|
|
3
3
|
import { SelectModifierNode } from '../operation-node/select-modifier-node.js';
|
|
4
4
|
import { parseJoin, } from '../parser/join-parser.js';
|
|
5
5
|
import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
|
|
6
|
-
import {
|
|
6
|
+
import { parseReferenceExpressionOrList, } from '../parser/reference-parser.js';
|
|
7
7
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
8
8
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
9
9
|
import { parseOrderBy, } from '../parser/order-by-parser.js';
|
|
@@ -12,109 +12,115 @@ import { LimitNode } from '../operation-node/limit-node.js';
|
|
|
12
12
|
import { OffsetNode } from '../operation-node/offset-node.js';
|
|
13
13
|
import { freeze } from '../util/object-utils.js';
|
|
14
14
|
import { parseGroupBy, } from '../parser/group-by-parser.js';
|
|
15
|
-
import { parseUnion } from '../parser/union-parser.js';
|
|
16
15
|
import { NoResultError } from './no-result-error.js';
|
|
17
16
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
18
17
|
import { ExplainNode } from '../operation-node/explain-node.js';
|
|
18
|
+
import { parseSetOperation } from '../parser/set-operation-parser.js';
|
|
19
|
+
import { parseHaving, parseReferentialFilter, parseWhere, } from '../parser/binary-operation-parser.js';
|
|
20
|
+
import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
|
|
19
21
|
export class SelectQueryBuilder {
|
|
20
22
|
#props;
|
|
21
23
|
constructor(props) {
|
|
22
24
|
this.#props = freeze(props);
|
|
23
25
|
}
|
|
26
|
+
/** @private */
|
|
27
|
+
get expressionType() {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
24
30
|
where(...args) {
|
|
25
31
|
return new SelectQueryBuilder({
|
|
26
32
|
...this.#props,
|
|
27
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
33
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhere(args)),
|
|
28
34
|
});
|
|
29
35
|
}
|
|
30
36
|
whereRef(lhs, op, rhs) {
|
|
31
37
|
return new SelectQueryBuilder({
|
|
32
38
|
...this.#props,
|
|
33
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
39
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
34
40
|
});
|
|
35
41
|
}
|
|
36
42
|
orWhere(...args) {
|
|
37
43
|
return new SelectQueryBuilder({
|
|
38
44
|
...this.#props,
|
|
39
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
45
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhere(args)),
|
|
40
46
|
});
|
|
41
47
|
}
|
|
42
48
|
orWhereRef(lhs, op, rhs) {
|
|
43
49
|
return new SelectQueryBuilder({
|
|
44
50
|
...this.#props,
|
|
45
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
51
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
46
52
|
});
|
|
47
53
|
}
|
|
48
54
|
whereExists(arg) {
|
|
49
55
|
return new SelectQueryBuilder({
|
|
50
56
|
...this.#props,
|
|
51
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
57
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExists(arg)),
|
|
52
58
|
});
|
|
53
59
|
}
|
|
54
60
|
whereNotExists(arg) {
|
|
55
61
|
return new SelectQueryBuilder({
|
|
56
62
|
...this.#props,
|
|
57
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
63
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
58
64
|
});
|
|
59
65
|
}
|
|
60
66
|
orWhereExists(arg) {
|
|
61
67
|
return new SelectQueryBuilder({
|
|
62
68
|
...this.#props,
|
|
63
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
69
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExists(arg)),
|
|
64
70
|
});
|
|
65
71
|
}
|
|
66
72
|
orWhereNotExists(arg) {
|
|
67
73
|
return new SelectQueryBuilder({
|
|
68
74
|
...this.#props,
|
|
69
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
75
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
70
76
|
});
|
|
71
77
|
}
|
|
72
78
|
having(...args) {
|
|
73
79
|
return new SelectQueryBuilder({
|
|
74
80
|
...this.#props,
|
|
75
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode,
|
|
81
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseHaving(args)),
|
|
76
82
|
});
|
|
77
83
|
}
|
|
78
84
|
havingRef(lhs, op, rhs) {
|
|
79
85
|
return new SelectQueryBuilder({
|
|
80
86
|
...this.#props,
|
|
81
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode,
|
|
87
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
82
88
|
});
|
|
83
89
|
}
|
|
84
90
|
orHaving(...args) {
|
|
85
91
|
return new SelectQueryBuilder({
|
|
86
92
|
...this.#props,
|
|
87
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode,
|
|
93
|
+
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseHaving(args)),
|
|
88
94
|
});
|
|
89
95
|
}
|
|
90
96
|
orHavingRef(lhs, op, rhs) {
|
|
91
97
|
return new SelectQueryBuilder({
|
|
92
98
|
...this.#props,
|
|
93
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode,
|
|
99
|
+
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
94
100
|
});
|
|
95
101
|
}
|
|
96
102
|
havingExists(arg) {
|
|
97
103
|
return new SelectQueryBuilder({
|
|
98
104
|
...this.#props,
|
|
99
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode,
|
|
105
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseExists(arg)),
|
|
100
106
|
});
|
|
101
107
|
}
|
|
102
108
|
havingNotExist(arg) {
|
|
103
109
|
return new SelectQueryBuilder({
|
|
104
110
|
...this.#props,
|
|
105
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode,
|
|
111
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseNotExists(arg)),
|
|
106
112
|
});
|
|
107
113
|
}
|
|
108
114
|
orHavingExists(arg) {
|
|
109
115
|
return new SelectQueryBuilder({
|
|
110
116
|
...this.#props,
|
|
111
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode,
|
|
117
|
+
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseExists(arg)),
|
|
112
118
|
});
|
|
113
119
|
}
|
|
114
120
|
orHavingNotExists(arg) {
|
|
115
121
|
return new SelectQueryBuilder({
|
|
116
122
|
...this.#props,
|
|
117
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode,
|
|
123
|
+
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseNotExists(arg)),
|
|
118
124
|
});
|
|
119
125
|
}
|
|
120
126
|
select(selection) {
|
|
@@ -126,7 +132,7 @@ export class SelectQueryBuilder {
|
|
|
126
132
|
distinctOn(selection) {
|
|
127
133
|
return new SelectQueryBuilder({
|
|
128
134
|
...this.#props,
|
|
129
|
-
queryNode: SelectQueryNode.
|
|
135
|
+
queryNode: SelectQueryNode.cloneWithDistinctOn(this.#props.queryNode, parseReferenceExpressionOrList(selection)),
|
|
130
136
|
});
|
|
131
137
|
}
|
|
132
138
|
/**
|
|
@@ -151,7 +157,7 @@ export class SelectQueryBuilder {
|
|
|
151
157
|
modifyFront(modifier) {
|
|
152
158
|
return new SelectQueryBuilder({
|
|
153
159
|
...this.#props,
|
|
154
|
-
queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.
|
|
160
|
+
queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode())),
|
|
155
161
|
});
|
|
156
162
|
}
|
|
157
163
|
/**
|
|
@@ -180,7 +186,7 @@ export class SelectQueryBuilder {
|
|
|
180
186
|
modifyEnd(modifier) {
|
|
181
187
|
return new SelectQueryBuilder({
|
|
182
188
|
...this.#props,
|
|
183
|
-
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.
|
|
189
|
+
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode())),
|
|
184
190
|
});
|
|
185
191
|
}
|
|
186
192
|
/**
|
|
@@ -470,7 +476,7 @@ export class SelectQueryBuilder {
|
|
|
470
476
|
union(expression) {
|
|
471
477
|
return new SelectQueryBuilder({
|
|
472
478
|
...this.#props,
|
|
473
|
-
queryNode: SelectQueryNode.
|
|
479
|
+
queryNode: SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, parseSetOperation('union', expression, false)),
|
|
474
480
|
});
|
|
475
481
|
}
|
|
476
482
|
/**
|
|
@@ -490,7 +496,87 @@ export class SelectQueryBuilder {
|
|
|
490
496
|
unionAll(expression) {
|
|
491
497
|
return new SelectQueryBuilder({
|
|
492
498
|
...this.#props,
|
|
493
|
-
queryNode: SelectQueryNode.
|
|
499
|
+
queryNode: SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, parseSetOperation('union', expression, true)),
|
|
500
|
+
});
|
|
501
|
+
}
|
|
502
|
+
/**
|
|
503
|
+
* Combines another select query or raw expression to this query using `intersect`.
|
|
504
|
+
*
|
|
505
|
+
* The output row type of the combined query must match `this` query.
|
|
506
|
+
*
|
|
507
|
+
* ### Examples
|
|
508
|
+
*
|
|
509
|
+
* ```ts
|
|
510
|
+
* db.selectFrom('person')
|
|
511
|
+
* .select(['id', 'first_name as name'])
|
|
512
|
+
* .intersect(db.selectFrom('pet').select(['id', 'name']))
|
|
513
|
+
* .orderBy('name')
|
|
514
|
+
* ```
|
|
515
|
+
*/
|
|
516
|
+
intersect(expression) {
|
|
517
|
+
return new SelectQueryBuilder({
|
|
518
|
+
...this.#props,
|
|
519
|
+
queryNode: SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, parseSetOperation('intersect', expression, false)),
|
|
520
|
+
});
|
|
521
|
+
}
|
|
522
|
+
/**
|
|
523
|
+
* Combines another select query or raw expression to this query using `intersect all`.
|
|
524
|
+
*
|
|
525
|
+
* The output row type of the combined query must match `this` query.
|
|
526
|
+
*
|
|
527
|
+
* ### Examples
|
|
528
|
+
*
|
|
529
|
+
* ```ts
|
|
530
|
+
* db.selectFrom('person')
|
|
531
|
+
* .select(['id', 'first_name as name'])
|
|
532
|
+
* .intersectAll(db.selectFrom('pet').select(['id', 'name']))
|
|
533
|
+
* .orderBy('name')
|
|
534
|
+
* ```
|
|
535
|
+
*/
|
|
536
|
+
intersectAll(expression) {
|
|
537
|
+
return new SelectQueryBuilder({
|
|
538
|
+
...this.#props,
|
|
539
|
+
queryNode: SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, parseSetOperation('intersect', expression, true)),
|
|
540
|
+
});
|
|
541
|
+
}
|
|
542
|
+
/**
|
|
543
|
+
* Combines another select query or raw expression to this query using `except`.
|
|
544
|
+
*
|
|
545
|
+
* The output row type of the combined query must match `this` query.
|
|
546
|
+
*
|
|
547
|
+
* ### Examples
|
|
548
|
+
*
|
|
549
|
+
* ```ts
|
|
550
|
+
* db.selectFrom('person')
|
|
551
|
+
* .select(['id', 'first_name as name'])
|
|
552
|
+
* .except(db.selectFrom('pet').select(['id', 'name']))
|
|
553
|
+
* .orderBy('name')
|
|
554
|
+
* ```
|
|
555
|
+
*/
|
|
556
|
+
except(expression) {
|
|
557
|
+
return new SelectQueryBuilder({
|
|
558
|
+
...this.#props,
|
|
559
|
+
queryNode: SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, parseSetOperation('except', expression, false)),
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* Combines another select query or raw expression to this query using `except all`.
|
|
564
|
+
*
|
|
565
|
+
* The output row type of the combined query must match `this` query.
|
|
566
|
+
*
|
|
567
|
+
* ### Examples
|
|
568
|
+
*
|
|
569
|
+
* ```ts
|
|
570
|
+
* db.selectFrom('person')
|
|
571
|
+
* .select(['id', 'first_name as name'])
|
|
572
|
+
* .exceptAll(db.selectFrom('pet').select(['id', 'name']))
|
|
573
|
+
* .orderBy('name')
|
|
574
|
+
* ```
|
|
575
|
+
*/
|
|
576
|
+
exceptAll(expression) {
|
|
577
|
+
return new SelectQueryBuilder({
|
|
578
|
+
...this.#props,
|
|
579
|
+
queryNode: SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, parseSetOperation('except', expression, true)),
|
|
494
580
|
});
|
|
495
581
|
}
|
|
496
582
|
/**
|
|
@@ -596,7 +682,7 @@ export class SelectQueryBuilder {
|
|
|
596
682
|
* ```
|
|
597
683
|
*/
|
|
598
684
|
as(alias) {
|
|
599
|
-
return new
|
|
685
|
+
return new AliasedSelectQueryBuilder(this, alias);
|
|
600
686
|
}
|
|
601
687
|
/**
|
|
602
688
|
* Change the output type of the query.
|
|
@@ -682,8 +768,8 @@ export class SelectQueryBuilder {
|
|
|
682
768
|
* ```
|
|
683
769
|
*/
|
|
684
770
|
async *stream(chunkSize = 100) {
|
|
685
|
-
const
|
|
686
|
-
const stream = this.#props.executor.stream(
|
|
771
|
+
const compiledQuery = this.compile();
|
|
772
|
+
const stream = this.#props.executor.stream(compiledQuery, chunkSize, this.#props.queryId);
|
|
687
773
|
for await (const item of stream) {
|
|
688
774
|
yield* item.rows;
|
|
689
775
|
}
|
|
@@ -726,7 +812,7 @@ export class SelectQueryBuilder {
|
|
|
726
812
|
async explain(format, options) {
|
|
727
813
|
const builder = new SelectQueryBuilder({
|
|
728
814
|
...this.#props,
|
|
729
|
-
queryNode: SelectQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options)),
|
|
815
|
+
queryNode: SelectQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options?.toOperationNode())),
|
|
730
816
|
});
|
|
731
817
|
return await builder.execute();
|
|
732
818
|
}
|
|
@@ -735,26 +821,22 @@ preventAwait(SelectQueryBuilder, "don't await SelectQueryBuilder instances direc
|
|
|
735
821
|
/**
|
|
736
822
|
* {@link SelectQueryBuilder} with an alias. The result of calling {@link SelectQueryBuilder.as}.
|
|
737
823
|
*/
|
|
738
|
-
export class
|
|
824
|
+
export class AliasedSelectQueryBuilder {
|
|
739
825
|
#queryBuilder;
|
|
740
826
|
#alias;
|
|
741
827
|
constructor(queryBuilder, alias) {
|
|
742
828
|
this.#queryBuilder = queryBuilder;
|
|
743
829
|
this.#alias = alias;
|
|
744
830
|
}
|
|
745
|
-
/**
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
* which causes this type to be equal to AliasedQueryBuilder with any A
|
|
751
|
-
* as long as D, TB and O are the same.
|
|
752
|
-
*/
|
|
831
|
+
/** @private */
|
|
832
|
+
get expression() {
|
|
833
|
+
return this.#queryBuilder;
|
|
834
|
+
}
|
|
835
|
+
/** @private */
|
|
753
836
|
get alias() {
|
|
754
837
|
return this.#alias;
|
|
755
838
|
}
|
|
756
839
|
toOperationNode() {
|
|
757
|
-
|
|
758
|
-
return AliasNode.create(node, IdentifierNode.create(this.#alias));
|
|
840
|
+
return AliasNode.create(this.#queryBuilder.toOperationNode(), IdentifierNode.create(this.#alias));
|
|
759
841
|
}
|
|
760
842
|
}
|
|
@@ -3,10 +3,9 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
|
3
3
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
4
4
|
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
5
5
|
import { SelectExpression } from '../parser/select-parser.js';
|
|
6
|
-
import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
|
|
7
6
|
import { ReturningRow } from '../parser/returning-parser.js';
|
|
8
7
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
9
|
-
import {
|
|
8
|
+
import { MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
|
|
10
9
|
import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|
11
10
|
import { MutationObject } from '../parser/update-set-parser.js';
|
|
12
11
|
import { Compilable } from '../util/compilable.js';
|
|
@@ -18,10 +17,11 @@ import { WhereInterface } from './where-interface.js';
|
|
|
18
17
|
import { ReturningInterface } from './returning-interface.js';
|
|
19
18
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
20
19
|
import { Selectable } from '../util/column-type.js';
|
|
21
|
-
import { AliasedQueryBuilder } from './select-query-builder.js';
|
|
22
|
-
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
23
20
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
24
|
-
|
|
21
|
+
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
22
|
+
import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
|
|
23
|
+
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
24
|
+
export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable {
|
|
25
25
|
#private;
|
|
26
26
|
constructor(props: UpdateQueryBuilderProps);
|
|
27
27
|
/**
|
|
@@ -208,16 +208,16 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
208
208
|
* .execute()
|
|
209
209
|
* ```
|
|
210
210
|
*/
|
|
211
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
211
|
+
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
212
212
|
where(grouper: WhereGrouper<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
213
|
-
where(
|
|
213
|
+
where(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
214
214
|
/**
|
|
215
215
|
* Adds a `where` clause where both sides of the operator are references
|
|
216
216
|
* to columns.
|
|
217
217
|
*
|
|
218
218
|
* The normal `where` method treats the right hand side argument as a
|
|
219
219
|
* value by default. `whereRef` treats it as a column reference. This method is
|
|
220
|
-
* expecially useful with joins and
|
|
220
|
+
* expecially useful with joins and correlated subqueries.
|
|
221
221
|
*
|
|
222
222
|
* ### Examples
|
|
223
223
|
*
|
|
@@ -262,7 +262,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
262
262
|
* ) as "pet_name"
|
|
263
263
|
* from "person"
|
|
264
264
|
*/
|
|
265
|
-
whereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
265
|
+
whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
266
266
|
/**
|
|
267
267
|
* Adds an `or where` clause to the query. Otherwise works just like {@link where}.
|
|
268
268
|
*
|
|
@@ -326,15 +326,15 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
326
326
|
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
327
327
|
* ```
|
|
328
328
|
*/
|
|
329
|
-
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
329
|
+
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
330
330
|
orWhere(grouper: WhereGrouper<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
331
|
-
orWhere(
|
|
331
|
+
orWhere(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
332
332
|
/**
|
|
333
333
|
* Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
|
|
334
334
|
*
|
|
335
335
|
* Also see {@link orWhere} and {@link where}.
|
|
336
336
|
*/
|
|
337
|
-
orWhereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
337
|
+
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
338
338
|
/**
|
|
339
339
|
* Adds a `where exists` clause to the query.
|
|
340
340
|
*
|
|
@@ -401,11 +401,11 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
401
401
|
*/
|
|
402
402
|
whereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
403
403
|
/**
|
|
404
|
-
* Just like {@link whereExists} but creates
|
|
404
|
+
* Just like {@link whereExists} but creates an `or exists` clause.
|
|
405
405
|
*/
|
|
406
406
|
orWhereExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
407
407
|
/**
|
|
408
|
-
* Just like {@link whereExists} but creates
|
|
408
|
+
* Just like {@link whereExists} but creates an `or not exists` clause.
|
|
409
409
|
*/
|
|
410
410
|
orWhereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
411
411
|
/**
|
|
@@ -789,7 +789,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
789
789
|
*/
|
|
790
790
|
withPlugin(plugin: KyselyPlugin): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
791
791
|
toOperationNode(): UpdateQueryNode;
|
|
792
|
-
compile(): CompiledQuery
|
|
792
|
+
compile(): CompiledQuery<O>;
|
|
793
793
|
/**
|
|
794
794
|
* Executes the query and returns an array of rows.
|
|
795
795
|
*
|
|
@@ -827,29 +827,29 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
827
827
|
* explain format=json update `person` set `first_name` = ?, `last_name` = ? where `id` = ?
|
|
828
828
|
* ```
|
|
829
829
|
*/
|
|
830
|
-
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?:
|
|
830
|
+
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<ER[]>;
|
|
831
831
|
}
|
|
832
832
|
export interface UpdateQueryBuilderProps {
|
|
833
833
|
readonly queryId: QueryId;
|
|
834
834
|
readonly queryNode: UpdateQueryNode;
|
|
835
835
|
readonly executor: QueryExecutor;
|
|
836
836
|
}
|
|
837
|
-
export declare type UpdateQueryBuilderWithInnerJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? UpdateQueryBuilder<DB, UT, TB | TE, O> : TE extends
|
|
837
|
+
export declare type UpdateQueryBuilderWithInnerJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? UpdateQueryBuilder<DB, UT, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
|
|
838
838
|
declare type InnerJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? UpdateQueryBuilder<InnerJoinedDB<DB, A, R>, UT, TB | A, O> : UpdateQueryBuilder<DB & Record<A, R>, UT, TB | A, O>;
|
|
839
839
|
declare type InnerJoinedDB<DB, A extends string, R> = {
|
|
840
840
|
[C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
|
|
841
841
|
};
|
|
842
|
-
export declare type UpdateQueryBuilderWithLeftJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends
|
|
842
|
+
export declare type UpdateQueryBuilderWithLeftJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
|
|
843
843
|
declare type LeftJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? UpdateQueryBuilder<LeftJoinedDB<DB, A, R>, UT, TB | A, O> : UpdateQueryBuilder<DB & Record<A, Nullable<R>>, UT, TB | A, O>;
|
|
844
844
|
declare type LeftJoinedDB<DB, A extends keyof any, R> = {
|
|
845
845
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
|
|
846
846
|
};
|
|
847
|
-
export declare type UpdateQueryBuilderWithRightJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends
|
|
847
|
+
export declare type UpdateQueryBuilderWithRightJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
|
|
848
848
|
declare type RightJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = UpdateQueryBuilder<RightJoinedDB<DB, TB, A, R>, UT, TB | A, O>;
|
|
849
849
|
declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
|
|
850
850
|
[C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
851
851
|
};
|
|
852
|
-
export declare type UpdateQueryBuilderWithFullJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends
|
|
852
|
+
export declare type UpdateQueryBuilderWithFullJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
|
|
853
853
|
declare type OuterJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = UpdateQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, UT, TB | A, O>;
|
|
854
854
|
declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
|
|
855
855
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { parseJoin, } from '../parser/join-parser.js';
|
|
3
3
|
import { parseTableExpressionOrList, } from '../parser/table-parser.js';
|
|
4
4
|
import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
|
|
5
|
-
import { parseExistFilter, parseReferenceFilter, parseWhereFilter, parseNotExistFilter, } from '../parser/filter-parser.js';
|
|
6
5
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
7
6
|
import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|
8
7
|
import { parseUpdateObject, } from '../parser/update-set-parser.js';
|
|
@@ -11,6 +10,8 @@ import { freeze } from '../util/object-utils.js';
|
|
|
11
10
|
import { UpdateResult } from './update-result.js';
|
|
12
11
|
import { NoResultError } from './no-result-error.js';
|
|
13
12
|
import { ExplainNode } from '../operation-node/explain-node.js';
|
|
13
|
+
import { parseReferentialFilter, parseWhere, } from '../parser/binary-operation-parser.js';
|
|
14
|
+
import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
|
|
14
15
|
export class UpdateQueryBuilder {
|
|
15
16
|
#props;
|
|
16
17
|
constructor(props) {
|
|
@@ -19,49 +20,49 @@ export class UpdateQueryBuilder {
|
|
|
19
20
|
where(...args) {
|
|
20
21
|
return new UpdateQueryBuilder({
|
|
21
22
|
...this.#props,
|
|
22
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
23
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhere(args)),
|
|
23
24
|
});
|
|
24
25
|
}
|
|
25
26
|
whereRef(lhs, op, rhs) {
|
|
26
27
|
return new UpdateQueryBuilder({
|
|
27
28
|
...this.#props,
|
|
28
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
29
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
29
30
|
});
|
|
30
31
|
}
|
|
31
32
|
orWhere(...args) {
|
|
32
33
|
return new UpdateQueryBuilder({
|
|
33
34
|
...this.#props,
|
|
34
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
35
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhere(args)),
|
|
35
36
|
});
|
|
36
37
|
}
|
|
37
38
|
orWhereRef(lhs, op, rhs) {
|
|
38
39
|
return new UpdateQueryBuilder({
|
|
39
40
|
...this.#props,
|
|
40
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
41
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
41
42
|
});
|
|
42
43
|
}
|
|
43
44
|
whereExists(arg) {
|
|
44
45
|
return new UpdateQueryBuilder({
|
|
45
46
|
...this.#props,
|
|
46
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
47
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExists(arg)),
|
|
47
48
|
});
|
|
48
49
|
}
|
|
49
50
|
whereNotExists(arg) {
|
|
50
51
|
return new UpdateQueryBuilder({
|
|
51
52
|
...this.#props,
|
|
52
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
53
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
56
|
orWhereExists(arg) {
|
|
56
57
|
return new UpdateQueryBuilder({
|
|
57
58
|
...this.#props,
|
|
58
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
59
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExists(arg)),
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
62
|
orWhereNotExists(arg) {
|
|
62
63
|
return new UpdateQueryBuilder({
|
|
63
64
|
...this.#props,
|
|
64
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
65
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
68
|
from(from) {
|
|
@@ -298,15 +299,17 @@ export class UpdateQueryBuilder {
|
|
|
298
299
|
* Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
|
|
299
300
|
*/
|
|
300
301
|
async execute() {
|
|
301
|
-
const
|
|
302
|
-
const query =
|
|
303
|
-
const result = await this.#props.executor.executeQuery(
|
|
302
|
+
const compiledQuery = this.compile();
|
|
303
|
+
const query = compiledQuery.query;
|
|
304
|
+
const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
|
|
304
305
|
if (this.#props.executor.adapter.supportsReturning && query.returning) {
|
|
305
306
|
return result.rows;
|
|
306
307
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
308
|
+
return [
|
|
309
|
+
new UpdateResult(
|
|
310
|
+
// TODO: remove numUpdatedOrDeletedRows.
|
|
311
|
+
(result.numAffectedRows ?? result.numUpdatedOrDeletedRows)),
|
|
312
|
+
];
|
|
310
313
|
}
|
|
311
314
|
/**
|
|
312
315
|
* Executes the query and returns the first result or undefined if
|
|
@@ -351,7 +354,7 @@ export class UpdateQueryBuilder {
|
|
|
351
354
|
async explain(format, options) {
|
|
352
355
|
const builder = new UpdateQueryBuilder({
|
|
353
356
|
...this.#props,
|
|
354
|
-
queryNode: UpdateQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options)),
|
|
357
|
+
queryNode: UpdateQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options?.toOperationNode())),
|
|
355
358
|
});
|
|
356
359
|
return await builder.execute();
|
|
357
360
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
|
+
import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
|
|
2
3
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
3
|
-
import {
|
|
4
|
+
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
4
5
|
export interface WhereInterface<DB, TB extends keyof DB> {
|
|
5
6
|
/**
|
|
6
7
|
* Adds a `where` clause to the query.
|
|
@@ -186,16 +187,16 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
186
187
|
* .execute()
|
|
187
188
|
* ```
|
|
188
189
|
*/
|
|
189
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
190
|
+
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
|
|
190
191
|
where(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
|
|
191
|
-
where(
|
|
192
|
+
where(expression: Expression<any>): WhereInterface<DB, TB>;
|
|
192
193
|
/**
|
|
193
194
|
* Adds a `where` clause where both sides of the operator are references
|
|
194
195
|
* to columns.
|
|
195
196
|
*
|
|
196
197
|
* The normal `where` method treats the right hand side argument as a
|
|
197
198
|
* value by default. `whereRef` treats it as a column reference. This method is
|
|
198
|
-
* expecially useful with joins and
|
|
199
|
+
* expecially useful with joins and correlated subqueries.
|
|
199
200
|
*
|
|
200
201
|
* ### Examples
|
|
201
202
|
*
|
|
@@ -240,7 +241,7 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
240
241
|
* ) as "pet_name"
|
|
241
242
|
* from "person"
|
|
242
243
|
*/
|
|
243
|
-
whereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
244
|
+
whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
|
|
244
245
|
/**
|
|
245
246
|
* Adds an `or where` clause to the query. Otherwise works just like {@link where}.
|
|
246
247
|
*
|
|
@@ -304,15 +305,15 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
304
305
|
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
305
306
|
* ```
|
|
306
307
|
*/
|
|
307
|
-
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
308
|
+
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
|
|
308
309
|
orWhere(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
|
|
309
|
-
orWhere(
|
|
310
|
+
orWhere(expression: Expression<any>): WhereInterface<DB, TB>;
|
|
310
311
|
/**
|
|
311
312
|
* Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
|
|
312
313
|
*
|
|
313
314
|
* Also see {@link orWhere} and {@link where}.
|
|
314
315
|
*/
|
|
315
|
-
orWhereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
316
|
+
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
|
|
316
317
|
/**
|
|
317
318
|
* Adds a `where exists` clause to the query.
|
|
318
319
|
*
|
|
@@ -379,11 +380,11 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
379
380
|
*/
|
|
380
381
|
whereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
|
|
381
382
|
/**
|
|
382
|
-
* Just like {@link whereExists} but creates
|
|
383
|
+
* Just like {@link whereExists} but creates an `or exists` clause.
|
|
383
384
|
*/
|
|
384
385
|
orWhereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
|
|
385
386
|
/**
|
|
386
|
-
* Just like {@link whereExists} but creates
|
|
387
|
+
* Just like {@link whereExists} but creates an `or not exists` clause.
|
|
387
388
|
*/
|
|
388
389
|
orWhereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
|
|
389
390
|
}
|