kysely 0.22.0 → 0.23.1
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 +25 -2
- 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 +10 -6
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/migration/file-migration-provider.js +5 -3
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +7 -4
- package/dist/cjs/operation-node/aggregate-function-node.js +17 -0
- package/dist/cjs/operation-node/alias-node.d.ts +3 -11
- 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/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 -5
- 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 +4 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +22 -15
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
- package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
- 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/parens-node.d.ts +2 -3
- package/dist/cjs/operation-node/partition-by-item-node.d.ts +3 -4
- 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 +5 -6
- package/dist/cjs/operation-node/select-query-node.js +10 -10
- package/dist/cjs/operation-node/selection-node.d.ts +2 -3
- package/dist/cjs/operation-node/set-operation-node.d.ts +2 -5
- 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 -9
- 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/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/reference-parser.d.ts +14 -14
- package/dist/cjs/parser/reference-parser.js +12 -9
- package/dist/cjs/parser/select-parser.d.ts +6 -7
- package/dist/cjs/parser/select-parser.js +2 -2
- package/dist/cjs/parser/set-operation-parser.d.ts +2 -4
- 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 -9
- 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 +245 -14
- package/dist/cjs/query-builder/aggregate-function-builder.js +164 -12
- 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/function-module.d.ts +123 -22
- package/dist/cjs/query-builder/function-module.js +91 -48
- 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/select-query-builder.d.ts +82 -51
- package/dist/cjs/query-builder/select-query-builder.js +39 -37
- 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 +5 -3
- package/dist/cjs/query-compiler/default-query-compiler.js +37 -33
- 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 +4 -4
- 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 +63 -278
- 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 +3 -3
- package/dist/cjs/schema/create-index-builder.js +7 -7
- package/dist/cjs/schema/create-schema-builder.d.ts +1 -1
- package/dist/cjs/schema/create-schema-builder.js +2 -2
- package/dist/cjs/schema/create-table-builder.d.ts +39 -6
- package/dist/cjs/schema/create-table-builder.js +47 -12
- package/dist/cjs/schema/create-type-builder.d.ts +1 -1
- package/dist/cjs/schema/create-type-builder.js +2 -2
- package/dist/cjs/schema/create-view-builder.d.ts +4 -3
- package/dist/cjs/schema/create-view-builder.js +7 -7
- package/dist/cjs/schema/drop-index-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-index-builder.js +4 -4
- package/dist/cjs/schema/drop-schema-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-schema-builder.js +3 -3
- package/dist/cjs/schema/drop-table-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-table-builder.js +3 -3
- package/dist/cjs/schema/drop-type-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-type-builder.js +2 -2
- package/dist/cjs/schema/drop-view-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-view-builder.js +4 -4
- package/dist/cjs/schema/schema.d.ts +2 -2
- package/dist/cjs/schema/schema.js +14 -13
- 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 -17
- 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 +10 -6
- package/dist/esm/index.js +6 -2
- package/dist/esm/migration/file-migration-provider.js +5 -3
- package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
- package/dist/esm/operation-node/aggregate-function-node.js +17 -0
- package/dist/esm/operation-node/alias-node.d.ts +3 -11
- 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/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 -5
- 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 +4 -2
- package/dist/esm/operation-node/operation-node-transformer.js +22 -15
- package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
- package/dist/esm/operation-node/operation-node-visitor.js +2 -1
- 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/parens-node.d.ts +2 -3
- package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
- 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 +5 -6
- package/dist/esm/operation-node/select-query-node.js +10 -10
- package/dist/esm/operation-node/selection-node.d.ts +2 -3
- package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
- 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 -9
- 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/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/reference-parser.d.ts +14 -14
- package/dist/esm/parser/reference-parser.js +10 -8
- package/dist/esm/parser/select-parser.d.ts +6 -7
- package/dist/esm/parser/select-parser.js +2 -2
- package/dist/esm/parser/set-operation-parser.d.ts +2 -4
- 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 -9
- 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 +245 -14
- package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
- 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/function-module.d.ts +123 -22
- package/dist/esm/query-builder/function-module.js +92 -49
- 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/select-query-builder.d.ts +82 -51
- package/dist/esm/query-builder/select-query-builder.js +38 -36
- 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 +5 -3
- package/dist/esm/query-compiler/default-query-compiler.js +38 -34
- 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 +4 -4
- 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 +59 -272
- 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 +3 -3
- package/dist/esm/schema/create-index-builder.js +7 -7
- package/dist/esm/schema/create-schema-builder.d.ts +1 -1
- package/dist/esm/schema/create-schema-builder.js +2 -2
- package/dist/esm/schema/create-table-builder.d.ts +39 -6
- package/dist/esm/schema/create-table-builder.js +47 -12
- package/dist/esm/schema/create-type-builder.d.ts +1 -1
- package/dist/esm/schema/create-type-builder.js +2 -2
- package/dist/esm/schema/create-view-builder.d.ts +4 -3
- package/dist/esm/schema/create-view-builder.js +7 -7
- package/dist/esm/schema/drop-index-builder.d.ts +1 -1
- package/dist/esm/schema/drop-index-builder.js +4 -4
- package/dist/esm/schema/drop-schema-builder.d.ts +1 -1
- package/dist/esm/schema/drop-schema-builder.js +3 -3
- package/dist/esm/schema/drop-table-builder.d.ts +1 -1
- package/dist/esm/schema/drop-table-builder.js +3 -3
- package/dist/esm/schema/drop-type-builder.d.ts +1 -1
- package/dist/esm/schema/drop-type-builder.js +2 -2
- package/dist/esm/schema/drop-view-builder.d.ts +1 -1
- package/dist/esm/schema/drop-view-builder.js +4 -4
- package/dist/esm/schema/schema.d.ts +2 -2
- package/dist/esm/schema/schema.js +14 -13
- 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 -17
- package/package.json +1 -1
- package/dist/cjs/operation-node/filter-node.d.ts +0 -18
- package/dist/cjs/operation-node/filter-node.js +0 -20
- package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
- package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
- package/dist/cjs/parser/filter-parser.d.ts +0 -24
- package/dist/cjs/parser/filter-parser.js +0 -109
- 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 -18
- package/dist/esm/operation-node/operation-node-utils.js +0 -2
- package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
- package/dist/esm/parser/filter-parser.d.ts +0 -24
- package/dist/esm/parser/filter-parser.js +0 -100
|
@@ -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;
|
|
@@ -4,7 +4,6 @@ exports.UpdateQueryBuilder = void 0;
|
|
|
4
4
|
const join_parser_js_1 = require("../parser/join-parser.js");
|
|
5
5
|
const table_parser_js_1 = require("../parser/table-parser.js");
|
|
6
6
|
const select_parser_js_1 = require("../parser/select-parser.js");
|
|
7
|
-
const filter_parser_js_1 = require("../parser/filter-parser.js");
|
|
8
7
|
const query_node_js_1 = require("../operation-node/query-node.js");
|
|
9
8
|
const update_query_node_js_1 = require("../operation-node/update-query-node.js");
|
|
10
9
|
const update_set_parser_js_1 = require("../parser/update-set-parser.js");
|
|
@@ -13,6 +12,8 @@ const object_utils_js_1 = require("../util/object-utils.js");
|
|
|
13
12
|
const update_result_js_1 = require("./update-result.js");
|
|
14
13
|
const no_result_error_js_1 = require("./no-result-error.js");
|
|
15
14
|
const explain_node_js_1 = require("../operation-node/explain-node.js");
|
|
15
|
+
const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
|
|
16
|
+
const unary_operation_parser_js_1 = require("../parser/unary-operation-parser.js");
|
|
16
17
|
class UpdateQueryBuilder {
|
|
17
18
|
#props;
|
|
18
19
|
constructor(props) {
|
|
@@ -21,49 +22,49 @@ class UpdateQueryBuilder {
|
|
|
21
22
|
where(...args) {
|
|
22
23
|
return new UpdateQueryBuilder({
|
|
23
24
|
...this.#props,
|
|
24
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
25
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseWhere)(args)),
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
whereRef(lhs, op, rhs) {
|
|
28
29
|
return new UpdateQueryBuilder({
|
|
29
30
|
...this.#props,
|
|
30
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
31
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
|
|
31
32
|
});
|
|
32
33
|
}
|
|
33
34
|
orWhere(...args) {
|
|
34
35
|
return new UpdateQueryBuilder({
|
|
35
36
|
...this.#props,
|
|
36
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
37
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseWhere)(args)),
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
40
|
orWhereRef(lhs, op, rhs) {
|
|
40
41
|
return new UpdateQueryBuilder({
|
|
41
42
|
...this.#props,
|
|
42
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
43
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
|
|
43
44
|
});
|
|
44
45
|
}
|
|
45
46
|
whereExists(arg) {
|
|
46
47
|
return new UpdateQueryBuilder({
|
|
47
48
|
...this.#props,
|
|
48
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
49
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
|
|
49
50
|
});
|
|
50
51
|
}
|
|
51
52
|
whereNotExists(arg) {
|
|
52
53
|
return new UpdateQueryBuilder({
|
|
53
54
|
...this.#props,
|
|
54
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
55
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
|
|
55
56
|
});
|
|
56
57
|
}
|
|
57
58
|
orWhereExists(arg) {
|
|
58
59
|
return new UpdateQueryBuilder({
|
|
59
60
|
...this.#props,
|
|
60
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
61
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
|
|
61
62
|
});
|
|
62
63
|
}
|
|
63
64
|
orWhereNotExists(arg) {
|
|
64
65
|
return new UpdateQueryBuilder({
|
|
65
66
|
...this.#props,
|
|
66
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
67
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
from(from) {
|
|
@@ -300,15 +301,17 @@ class UpdateQueryBuilder {
|
|
|
300
301
|
* Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
|
|
301
302
|
*/
|
|
302
303
|
async execute() {
|
|
303
|
-
const
|
|
304
|
-
const query =
|
|
305
|
-
const result = await this.#props.executor.executeQuery(
|
|
304
|
+
const compiledQuery = this.compile();
|
|
305
|
+
const query = compiledQuery.query;
|
|
306
|
+
const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
|
|
306
307
|
if (this.#props.executor.adapter.supportsReturning && query.returning) {
|
|
307
308
|
return result.rows;
|
|
308
309
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
310
|
+
return [
|
|
311
|
+
new update_result_js_1.UpdateResult(
|
|
312
|
+
// TODO: remove numUpdatedOrDeletedRows.
|
|
313
|
+
(result.numAffectedRows ?? result.numUpdatedOrDeletedRows)),
|
|
314
|
+
];
|
|
312
315
|
}
|
|
313
316
|
/**
|
|
314
317
|
* Executes the query and returns the first result or undefined if
|
|
@@ -353,7 +356,7 @@ class UpdateQueryBuilder {
|
|
|
353
356
|
async explain(format, options) {
|
|
354
357
|
const builder = new UpdateQueryBuilder({
|
|
355
358
|
...this.#props,
|
|
356
|
-
queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithExplain(this.#props.queryNode, explain_node_js_1.ExplainNode.create(format, options)),
|
|
359
|
+
queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithExplain(this.#props.queryNode, explain_node_js_1.ExplainNode.create(format, options?.toOperationNode())),
|
|
357
360
|
});
|
|
358
361
|
return await builder.execute();
|
|
359
362
|
}
|
|
@@ -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
|
}
|
|
@@ -9,7 +9,6 @@ import { DataTypeNode } from '../operation-node/data-type-node.js';
|
|
|
9
9
|
import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
|
|
10
10
|
import { DropIndexNode } from '../operation-node/drop-index-node.js';
|
|
11
11
|
import { DropTableNode } from '../operation-node/drop-table-node.js';
|
|
12
|
-
import { FilterNode } from '../operation-node/filter-node.js';
|
|
13
12
|
import { FromNode } from '../operation-node/from-node.js';
|
|
14
13
|
import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
|
|
15
14
|
import { GroupByNode } from '../operation-node/group-by-node.js';
|
|
@@ -78,6 +77,8 @@ import { OverNode } from '../operation-node/over-node.js';
|
|
|
78
77
|
import { PartitionByNode } from '../operation-node/partition-by-node.js';
|
|
79
78
|
import { PartitionByItemNode } from '../operation-node/partition-by-item-node.js';
|
|
80
79
|
import { SetOperationNode } from '../operation-node/set-operation-node.js';
|
|
80
|
+
import { BinaryOperationNode } from '../operation-node/binary-operation-node.js';
|
|
81
|
+
import { UnaryOperationNode } from '../operation-node/unary-operation-node.js';
|
|
81
82
|
export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
|
|
82
83
|
#private;
|
|
83
84
|
protected get numParameters(): number;
|
|
@@ -87,7 +88,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
87
88
|
protected visitFrom(node: FromNode): void;
|
|
88
89
|
protected visitSelection(node: SelectionNode): void;
|
|
89
90
|
protected visitColumn(node: ColumnNode): void;
|
|
90
|
-
protected compileDistinctOn(
|
|
91
|
+
protected compileDistinctOn(expressions: ReadonlyArray<OperationNode>): void;
|
|
91
92
|
protected compileList(nodes: ReadonlyArray<OperationNode>, separator?: string): void;
|
|
92
93
|
protected visitWhere(node: WhereNode): void;
|
|
93
94
|
protected visitHaving(node: HavingNode): void;
|
|
@@ -100,7 +101,6 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
100
101
|
protected visitSelectAll(_: SelectAllNode): void;
|
|
101
102
|
protected visitIdentifier(node: IdentifierNode): void;
|
|
102
103
|
protected compileUnwrappedIdentifier(node: IdentifierNode): void;
|
|
103
|
-
protected visitFilter(node: FilterNode): void;
|
|
104
104
|
protected visitAnd(node: AndNode): void;
|
|
105
105
|
protected visitOr(node: OrNode): void;
|
|
106
106
|
protected visitValue(node: ValueNode): void;
|
|
@@ -163,6 +163,8 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
163
163
|
protected visitOver(node: OverNode): void;
|
|
164
164
|
protected visitPartitionBy(node: PartitionByNode): void;
|
|
165
165
|
protected visitPartitionByItem(node: PartitionByItemNode): void;
|
|
166
|
+
protected visitBinaryOperation(node: BinaryOperationNode): void;
|
|
167
|
+
protected visitUnaryOperation(node: UnaryOperationNode): void;
|
|
166
168
|
protected append(str: string): void;
|
|
167
169
|
protected appendValue(parameter: unknown): void;
|
|
168
170
|
protected getLeftIdentifierWrapper(): string;
|
|
@@ -43,8 +43,8 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
43
43
|
this.append(' ');
|
|
44
44
|
}
|
|
45
45
|
this.append('select ');
|
|
46
|
-
if (node.
|
|
47
|
-
this.compileDistinctOn(node.
|
|
46
|
+
if (node.distinctOn) {
|
|
47
|
+
this.compileDistinctOn(node.distinctOn);
|
|
48
48
|
this.append(' ');
|
|
49
49
|
}
|
|
50
50
|
if (node.frontModifiers && node.frontModifiers.length > 0) {
|
|
@@ -106,16 +106,16 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
106
106
|
visitColumn(node) {
|
|
107
107
|
this.visitNode(node.column);
|
|
108
108
|
}
|
|
109
|
-
compileDistinctOn(
|
|
109
|
+
compileDistinctOn(expressions) {
|
|
110
110
|
this.append('distinct on (');
|
|
111
|
-
this.compileList(
|
|
111
|
+
this.compileList(expressions);
|
|
112
112
|
this.append(')');
|
|
113
113
|
}
|
|
114
114
|
compileList(nodes, separator = ', ') {
|
|
115
|
-
const
|
|
116
|
-
for (
|
|
117
|
-
this.visitNode(
|
|
118
|
-
if (
|
|
115
|
+
const lastIndex = nodes.length - 1;
|
|
116
|
+
for (let i = 0; i <= lastIndex; i++) {
|
|
117
|
+
this.visitNode(nodes[i]);
|
|
118
|
+
if (i < lastIndex) {
|
|
119
119
|
this.append(separator);
|
|
120
120
|
}
|
|
121
121
|
}
|
|
@@ -243,15 +243,6 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
243
243
|
}
|
|
244
244
|
this.append(this.sanitizeIdentifier(node.name));
|
|
245
245
|
}
|
|
246
|
-
visitFilter(node) {
|
|
247
|
-
if (node.left) {
|
|
248
|
-
this.visitNode(node.left);
|
|
249
|
-
this.append(' ');
|
|
250
|
-
}
|
|
251
|
-
this.visitNode(node.op);
|
|
252
|
-
this.append(' ');
|
|
253
|
-
this.visitNode(node.right);
|
|
254
|
-
}
|
|
255
246
|
visitAnd(node) {
|
|
256
247
|
this.visitNode(node.left);
|
|
257
248
|
this.append(' and ');
|
|
@@ -328,7 +319,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
328
319
|
}
|
|
329
320
|
visitCreateTable(node) {
|
|
330
321
|
this.append('create ');
|
|
331
|
-
if (node.frontModifiers) {
|
|
322
|
+
if (node.frontModifiers && node.frontModifiers.length > 0) {
|
|
332
323
|
this.compileList(node.frontModifiers, ' ');
|
|
333
324
|
this.append(' ');
|
|
334
325
|
}
|
|
@@ -347,7 +338,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
347
338
|
this.append(' on commit ');
|
|
348
339
|
this.append(node.onCommit);
|
|
349
340
|
}
|
|
350
|
-
if (node.endModifiers) {
|
|
341
|
+
if (node.endModifiers && node.endModifiers.length > 0) {
|
|
351
342
|
this.append(' ');
|
|
352
343
|
this.compileList(node.endModifiers, ' ');
|
|
353
344
|
}
|
|
@@ -359,6 +350,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
359
350
|
if (node.unsigned) {
|
|
360
351
|
this.append(' unsigned');
|
|
361
352
|
}
|
|
353
|
+
if (node.frontModifiers && node.frontModifiers.length > 0) {
|
|
354
|
+
this.append(' ');
|
|
355
|
+
this.compileList(node.frontModifiers, ' ');
|
|
356
|
+
}
|
|
362
357
|
if (node.generated) {
|
|
363
358
|
this.append(' ');
|
|
364
359
|
this.visitNode(node.generated);
|
|
@@ -388,6 +383,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
388
383
|
this.append(' ');
|
|
389
384
|
this.visitNode(node.check);
|
|
390
385
|
}
|
|
386
|
+
if (node.endModifiers && node.endModifiers.length > 0) {
|
|
387
|
+
this.append(' ');
|
|
388
|
+
this.compileList(node.endModifiers, ' ');
|
|
389
|
+
}
|
|
391
390
|
}
|
|
392
391
|
getAutoIncrement() {
|
|
393
392
|
return 'auto_increment';
|
|
@@ -668,20 +667,8 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
668
667
|
if (node.dropConstraint) {
|
|
669
668
|
this.visitNode(node.dropConstraint);
|
|
670
669
|
}
|
|
671
|
-
if (node.
|
|
672
|
-
this.
|
|
673
|
-
}
|
|
674
|
-
if (node.addColumn) {
|
|
675
|
-
this.visitNode(node.addColumn);
|
|
676
|
-
}
|
|
677
|
-
if (node.dropColumn) {
|
|
678
|
-
this.visitNode(node.dropColumn);
|
|
679
|
-
}
|
|
680
|
-
if (node.alterColumn) {
|
|
681
|
-
this.visitNode(node.alterColumn);
|
|
682
|
-
}
|
|
683
|
-
if (node.modifyColumn) {
|
|
684
|
-
this.visitNode(node.modifyColumn);
|
|
670
|
+
if (node.columnAlterations) {
|
|
671
|
+
this.compileList(node.columnAlterations);
|
|
685
672
|
}
|
|
686
673
|
}
|
|
687
674
|
visitAddColumn(node) {
|
|
@@ -872,6 +859,11 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
872
859
|
}
|
|
873
860
|
this.visitNode(node.column);
|
|
874
861
|
this.append(')');
|
|
862
|
+
if (node.filter) {
|
|
863
|
+
this.append(' filter(');
|
|
864
|
+
this.visitNode(node.filter);
|
|
865
|
+
this.append(')');
|
|
866
|
+
}
|
|
875
867
|
if (node.over) {
|
|
876
868
|
this.append(' ');
|
|
877
869
|
this.visitNode(node.over);
|
|
@@ -897,6 +889,18 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
897
889
|
visitPartitionByItem(node) {
|
|
898
890
|
this.visitNode(node.partitionBy);
|
|
899
891
|
}
|
|
892
|
+
visitBinaryOperation(node) {
|
|
893
|
+
this.visitNode(node.leftOperand);
|
|
894
|
+
this.append(' ');
|
|
895
|
+
this.visitNode(node.operator);
|
|
896
|
+
this.append(' ');
|
|
897
|
+
this.visitNode(node.rightOperand);
|
|
898
|
+
}
|
|
899
|
+
visitUnaryOperation(node) {
|
|
900
|
+
this.visitNode(node.operator);
|
|
901
|
+
this.append(' ');
|
|
902
|
+
this.visitNode(node.operand);
|
|
903
|
+
}
|
|
900
904
|
append(str) {
|
|
901
905
|
this.#sql += str;
|
|
902
906
|
}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.QueryExecutorBase = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
5
|
const deferred_js_1 = require("../util/deferred.js");
|
|
6
|
+
const log_once_js_1 = require("../util/log-once.js");
|
|
6
7
|
const NO_PLUGINS = (0, object_utils_js_1.freeze)([]);
|
|
7
8
|
class QueryExecutorBase {
|
|
8
9
|
#plugins;
|
|
@@ -34,7 +35,10 @@ class QueryExecutorBase {
|
|
|
34
35
|
async executeQuery(compiledQuery, queryId) {
|
|
35
36
|
return await this.provideConnection(async (connection) => {
|
|
36
37
|
const result = await connection.executeQuery(compiledQuery);
|
|
37
|
-
|
|
38
|
+
const transformedResult = await this.#transformResult(result, queryId);
|
|
39
|
+
// TODO: remove.
|
|
40
|
+
warnOfOutdatedDriverOrPlugins(result, transformedResult);
|
|
41
|
+
return transformedResult;
|
|
38
42
|
});
|
|
39
43
|
}
|
|
40
44
|
async *stream(compiledQuery, chunkSize, queryId) {
|
|
@@ -63,3 +67,14 @@ class QueryExecutorBase {
|
|
|
63
67
|
}
|
|
64
68
|
}
|
|
65
69
|
exports.QueryExecutorBase = QueryExecutorBase;
|
|
70
|
+
// TODO: remove.
|
|
71
|
+
function warnOfOutdatedDriverOrPlugins(result, transformedResult) {
|
|
72
|
+
const { numAffectedRows } = result;
|
|
73
|
+
if ((numAffectedRows === undefined &&
|
|
74
|
+
result.numUpdatedOrDeletedRows === undefined) ||
|
|
75
|
+
(numAffectedRows !== undefined &&
|
|
76
|
+
transformedResult.numAffectedRows !== undefined)) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
(0, log_once_js_1.logOnce)('kysely:warning: outdated driver/plugin detected! QueryResult.numUpdatedOrDeletedRows is deprecated and will be removed in a future release.');
|
|
80
|
+
}
|
|
@@ -1,20 +1,37 @@
|
|
|
1
1
|
import { QueryResult } from '../driver/database-connection.js';
|
|
2
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
|
-
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
4
3
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
5
4
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
6
5
|
import { QueryExecutorProvider } from '../query-executor/query-executor-provider.js';
|
|
7
6
|
import { QueryId } from '../util/query-id.js';
|
|
8
|
-
import {
|
|
7
|
+
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
9
8
|
/**
|
|
10
9
|
* An instance of this class can be used to create raw SQL snippets or queries.
|
|
11
10
|
*
|
|
12
11
|
* You shouldn't need to create `RawBuilder` instances directly. Instead you should
|
|
13
12
|
* use the {@link sql} template tag.
|
|
14
13
|
*/
|
|
15
|
-
export declare class RawBuilder<O
|
|
14
|
+
export declare class RawBuilder<O> implements Expression<O> {
|
|
16
15
|
#private;
|
|
17
16
|
constructor(props: RawBuilderProps);
|
|
17
|
+
/** @private */
|
|
18
|
+
/**
|
|
19
|
+
* All expressions need to have this getter for complicated type-related reasons.
|
|
20
|
+
* Simply add this getter for your expression and always return `undefined` from it:
|
|
21
|
+
*
|
|
22
|
+
* ```ts
|
|
23
|
+
* class SomeExpression<T> implements Expression<T> {
|
|
24
|
+
* get expressionType(): T | undefined {
|
|
25
|
+
* return undefined
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* The getter is needed to make the expression assignable to another expression only
|
|
31
|
+
* if the types `T` are assignable. Without this property (or some other property
|
|
32
|
+
* that references `T`), you could assing `Expression<string>` to `Expression<number>`.
|
|
33
|
+
*/
|
|
34
|
+
get expressionType(): O | undefined;
|
|
18
35
|
/**
|
|
19
36
|
* Returns an aliased version of the SQL expression.
|
|
20
37
|
*
|
|
@@ -69,7 +86,7 @@ export declare class RawBuilder<O = unknown> implements OperationNodeSource {
|
|
|
69
86
|
* ```
|
|
70
87
|
*/
|
|
71
88
|
as<A extends string>(alias: A): AliasedRawBuilder<O, A>;
|
|
72
|
-
as<A extends string = never>(alias:
|
|
89
|
+
as<A extends string = never>(alias: Expression<any>): AliasedRawBuilder<O, A>;
|
|
73
90
|
/**
|
|
74
91
|
* Change the output type of the raw expression.
|
|
75
92
|
*
|
|
@@ -81,25 +98,44 @@ export declare class RawBuilder<O = unknown> implements OperationNodeSource {
|
|
|
81
98
|
* Adds a plugin for this SQL snippet.
|
|
82
99
|
*/
|
|
83
100
|
withPlugin(plugin: KyselyPlugin): RawBuilder<O>;
|
|
101
|
+
/**
|
|
102
|
+
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
103
|
+
*
|
|
104
|
+
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
105
|
+
* template tag to build the node:
|
|
106
|
+
*
|
|
107
|
+
* ```ts
|
|
108
|
+
* class SomeExpression<T> implements Expression<T> {
|
|
109
|
+
* toOperationNode(): OperationNode {
|
|
110
|
+
* return sql`some sql here`.toOperationNode()
|
|
111
|
+
* }
|
|
112
|
+
* }
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
84
115
|
toOperationNode(): RawNode;
|
|
85
116
|
execute(executorProvider: QueryExecutorProvider): Promise<QueryResult<O>>;
|
|
86
117
|
}
|
|
118
|
+
export declare function isRawBuilder(obj: unknown): obj is RawBuilder<unknown>;
|
|
87
119
|
/**
|
|
88
120
|
* {@link RawBuilder} with an alias. The result of calling {@link RawBuilder.as}.
|
|
89
121
|
*/
|
|
90
|
-
export declare class AliasedRawBuilder<O = unknown, A extends string = never> implements
|
|
122
|
+
export declare class AliasedRawBuilder<O = unknown, A extends string = never> implements AliasedExpression<O, A> {
|
|
91
123
|
#private;
|
|
124
|
+
constructor(rawBuilder: RawBuilder<O>, alias: A | Expression<any>);
|
|
125
|
+
/** @private */
|
|
92
126
|
/**
|
|
93
|
-
*
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
*
|
|
127
|
+
* Returns the aliased expression.
|
|
128
|
+
*/
|
|
129
|
+
get expression(): Expression<O>;
|
|
130
|
+
/** @private */
|
|
131
|
+
/**
|
|
132
|
+
* Returns the alias.
|
|
133
|
+
*/
|
|
134
|
+
get alias(): A;
|
|
135
|
+
/**
|
|
136
|
+
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
99
137
|
*/
|
|
100
|
-
protected get alias(): A | AnyRawBuilder;
|
|
101
138
|
toOperationNode(): AliasNode;
|
|
102
|
-
constructor(rawBuilder: RawBuilder<O>, alias: A | AnyRawBuilder);
|
|
103
139
|
}
|
|
104
140
|
export interface RawBuilderProps {
|
|
105
141
|
readonly queryId: QueryId;
|