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
|
@@ -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';
|
|
@@ -60,7 +59,6 @@ import { ColumnDefinitionNode } from '../operation-node/column-definition-node.j
|
|
|
60
59
|
import { ModifyColumnNode } from '../operation-node/modify-column-node.js';
|
|
61
60
|
import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
|
|
62
61
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
63
|
-
import { UnionNode } from '../operation-node/union-node.js';
|
|
64
62
|
import { CreateViewNode } from '../operation-node/create-view-node.js';
|
|
65
63
|
import { DropViewNode } from '../operation-node/drop-view-node.js';
|
|
66
64
|
import { GeneratedNode } from '../operation-node/generated-node.js';
|
|
@@ -74,6 +72,13 @@ import { DropTypeNode } from '../operation-node/drop-type-node.js';
|
|
|
74
72
|
import { ExplainNode } from '../operation-node/explain-node.js';
|
|
75
73
|
import { SchemableIdentifierNode } from '../operation-node/schemable-identifier-node.js';
|
|
76
74
|
import { DefaultInsertValueNode } from '../operation-node/default-insert-value-node.js';
|
|
75
|
+
import { AggregateFunctionNode } from '../operation-node/aggregate-function-node.js';
|
|
76
|
+
import { OverNode } from '../operation-node/over-node.js';
|
|
77
|
+
import { PartitionByNode } from '../operation-node/partition-by-node.js';
|
|
78
|
+
import { PartitionByItemNode } from '../operation-node/partition-by-item-node.js';
|
|
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';
|
|
77
82
|
export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
|
|
78
83
|
#private;
|
|
79
84
|
protected get numParameters(): number;
|
|
@@ -83,7 +88,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
83
88
|
protected visitFrom(node: FromNode): void;
|
|
84
89
|
protected visitSelection(node: SelectionNode): void;
|
|
85
90
|
protected visitColumn(node: ColumnNode): void;
|
|
86
|
-
protected compileDistinctOn(
|
|
91
|
+
protected compileDistinctOn(expressions: ReadonlyArray<OperationNode>): void;
|
|
87
92
|
protected compileList(nodes: ReadonlyArray<OperationNode>, separator?: string): void;
|
|
88
93
|
protected visitWhere(node: WhereNode): void;
|
|
89
94
|
protected visitHaving(node: HavingNode): void;
|
|
@@ -96,7 +101,6 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
96
101
|
protected visitSelectAll(_: SelectAllNode): void;
|
|
97
102
|
protected visitIdentifier(node: IdentifierNode): void;
|
|
98
103
|
protected compileUnwrappedIdentifier(node: IdentifierNode): void;
|
|
99
|
-
protected visitFilter(node: FilterNode): void;
|
|
100
104
|
protected visitAnd(node: AndNode): void;
|
|
101
105
|
protected visitOr(node: OrNode): void;
|
|
102
106
|
protected visitValue(node: ValueNode): void;
|
|
@@ -145,7 +149,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
145
149
|
protected visitModifyColumn(node: ModifyColumnNode): void;
|
|
146
150
|
protected visitAddConstraint(node: AddConstraintNode): void;
|
|
147
151
|
protected visitDropConstraint(node: DropConstraintNode): void;
|
|
148
|
-
protected
|
|
152
|
+
protected visitSetOperation(node: SetOperationNode): void;
|
|
149
153
|
protected visitCreateView(node: CreateViewNode): void;
|
|
150
154
|
protected visitDropView(node: DropViewNode): void;
|
|
151
155
|
protected visitGenerated(node: GeneratedNode): void;
|
|
@@ -155,6 +159,12 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
155
159
|
protected visitDropType(node: DropTypeNode): void;
|
|
156
160
|
protected visitExplain(node: ExplainNode): void;
|
|
157
161
|
protected visitDefaultInsertValue(_: DefaultInsertValueNode): void;
|
|
162
|
+
protected visitAggregateFunction(node: AggregateFunctionNode): void;
|
|
163
|
+
protected visitOver(node: OverNode): void;
|
|
164
|
+
protected visitPartitionBy(node: PartitionByNode): void;
|
|
165
|
+
protected visitPartitionByItem(node: PartitionByItemNode): void;
|
|
166
|
+
protected visitBinaryOperation(node: BinaryOperationNode): void;
|
|
167
|
+
protected visitUnaryOperation(node: UnaryOperationNode): void;
|
|
158
168
|
protected append(str: string): void;
|
|
159
169
|
protected appendValue(parameter: unknown): void;
|
|
160
170
|
protected getLeftIdentifierWrapper(): string;
|
|
@@ -4,10 +4,9 @@ exports.DefaultQueryCompiler = void 0;
|
|
|
4
4
|
const insert_query_node_js_1 = require("../operation-node/insert-query-node.js");
|
|
5
5
|
const operation_node_visitor_js_1 = require("../operation-node/operation-node-visitor.js");
|
|
6
6
|
const query_node_js_1 = require("../operation-node/query-node.js");
|
|
7
|
-
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
8
7
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
9
|
-
const union_node_js_1 = require("../operation-node/union-node.js");
|
|
10
8
|
const create_view_node_js_1 = require("../operation-node/create-view-node.js");
|
|
9
|
+
const set_operation_node_js_1 = require("../operation-node/set-operation-node.js");
|
|
11
10
|
class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisitor {
|
|
12
11
|
#sql = '';
|
|
13
12
|
#parameters = [];
|
|
@@ -31,7 +30,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
31
30
|
const wrapInParens = this.parentNode !== undefined &&
|
|
32
31
|
!insert_query_node_js_1.InsertQueryNode.is(this.parentNode) &&
|
|
33
32
|
!create_view_node_js_1.CreateViewNode.is(this.parentNode) &&
|
|
34
|
-
!
|
|
33
|
+
!set_operation_node_js_1.SetOperationNode.is(this.parentNode);
|
|
35
34
|
if (this.parentNode === undefined && node.explain) {
|
|
36
35
|
this.visitNode(node.explain);
|
|
37
36
|
this.append(' ');
|
|
@@ -44,8 +43,8 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
44
43
|
this.append(' ');
|
|
45
44
|
}
|
|
46
45
|
this.append('select ');
|
|
47
|
-
if (node.
|
|
48
|
-
this.compileDistinctOn(node.
|
|
46
|
+
if (node.distinctOn) {
|
|
47
|
+
this.compileDistinctOn(node.distinctOn);
|
|
49
48
|
this.append(' ');
|
|
50
49
|
}
|
|
51
50
|
if (node.frontModifiers && node.frontModifiers.length > 0) {
|
|
@@ -73,9 +72,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
73
72
|
this.append(' ');
|
|
74
73
|
this.visitNode(node.having);
|
|
75
74
|
}
|
|
76
|
-
if (node.
|
|
75
|
+
if (node.setOperations) {
|
|
77
76
|
this.append(' ');
|
|
78
|
-
this.compileList(node.
|
|
77
|
+
this.compileList(node.setOperations, ' ');
|
|
79
78
|
}
|
|
80
79
|
if (node.orderBy) {
|
|
81
80
|
this.append(' ');
|
|
@@ -107,16 +106,16 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
107
106
|
visitColumn(node) {
|
|
108
107
|
this.visitNode(node.column);
|
|
109
108
|
}
|
|
110
|
-
compileDistinctOn(
|
|
109
|
+
compileDistinctOn(expressions) {
|
|
111
110
|
this.append('distinct on (');
|
|
112
|
-
this.compileList(
|
|
111
|
+
this.compileList(expressions);
|
|
113
112
|
this.append(')');
|
|
114
113
|
}
|
|
115
114
|
compileList(nodes, separator = ', ') {
|
|
116
|
-
const
|
|
117
|
-
for (
|
|
118
|
-
this.visitNode(
|
|
119
|
-
if (
|
|
115
|
+
const lastIndex = nodes.length - 1;
|
|
116
|
+
for (let i = 0; i <= lastIndex; i++) {
|
|
117
|
+
this.visitNode(nodes[i]);
|
|
118
|
+
if (i < lastIndex) {
|
|
120
119
|
this.append(separator);
|
|
121
120
|
}
|
|
122
121
|
}
|
|
@@ -244,15 +243,6 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
244
243
|
}
|
|
245
244
|
this.append(this.sanitizeIdentifier(node.name));
|
|
246
245
|
}
|
|
247
|
-
visitFilter(node) {
|
|
248
|
-
if (node.left) {
|
|
249
|
-
this.visitNode(node.left);
|
|
250
|
-
this.append(' ');
|
|
251
|
-
}
|
|
252
|
-
this.visitNode(node.op);
|
|
253
|
-
this.append(' ');
|
|
254
|
-
this.visitNode(node.right);
|
|
255
|
-
}
|
|
256
246
|
visitAnd(node) {
|
|
257
247
|
this.visitNode(node.left);
|
|
258
248
|
this.append(' and ');
|
|
@@ -329,7 +319,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
329
319
|
}
|
|
330
320
|
visitCreateTable(node) {
|
|
331
321
|
this.append('create ');
|
|
332
|
-
if (node.frontModifiers) {
|
|
322
|
+
if (node.frontModifiers && node.frontModifiers.length > 0) {
|
|
333
323
|
this.compileList(node.frontModifiers, ' ');
|
|
334
324
|
this.append(' ');
|
|
335
325
|
}
|
|
@@ -348,7 +338,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
348
338
|
this.append(' on commit ');
|
|
349
339
|
this.append(node.onCommit);
|
|
350
340
|
}
|
|
351
|
-
if (node.endModifiers) {
|
|
341
|
+
if (node.endModifiers && node.endModifiers.length > 0) {
|
|
352
342
|
this.append(' ');
|
|
353
343
|
this.compileList(node.endModifiers, ' ');
|
|
354
344
|
}
|
|
@@ -360,6 +350,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
360
350
|
if (node.unsigned) {
|
|
361
351
|
this.append(' unsigned');
|
|
362
352
|
}
|
|
353
|
+
if (node.frontModifiers && node.frontModifiers.length > 0) {
|
|
354
|
+
this.append(' ');
|
|
355
|
+
this.compileList(node.frontModifiers, ' ');
|
|
356
|
+
}
|
|
363
357
|
if (node.generated) {
|
|
364
358
|
this.append(' ');
|
|
365
359
|
this.visitNode(node.generated);
|
|
@@ -389,6 +383,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
389
383
|
this.append(' ');
|
|
390
384
|
this.visitNode(node.check);
|
|
391
385
|
}
|
|
386
|
+
if (node.endModifiers && node.endModifiers.length > 0) {
|
|
387
|
+
this.append(' ');
|
|
388
|
+
this.compileList(node.endModifiers, ' ');
|
|
389
|
+
}
|
|
392
390
|
}
|
|
393
391
|
getAutoIncrement() {
|
|
394
392
|
return 'auto_increment';
|
|
@@ -544,13 +542,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
544
542
|
}
|
|
545
543
|
if (node.expression) {
|
|
546
544
|
this.append(' (');
|
|
547
|
-
if (raw_node_js_1.RawNode.is(node.expression)) {
|
|
548
|
-
this.append('(');
|
|
549
|
-
}
|
|
550
545
|
this.visitNode(node.expression);
|
|
551
|
-
if (raw_node_js_1.RawNode.is(node.expression)) {
|
|
552
|
-
this.append(')');
|
|
553
|
-
}
|
|
554
546
|
this.append(')');
|
|
555
547
|
}
|
|
556
548
|
}
|
|
@@ -675,20 +667,8 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
675
667
|
if (node.dropConstraint) {
|
|
676
668
|
this.visitNode(node.dropConstraint);
|
|
677
669
|
}
|
|
678
|
-
if (node.
|
|
679
|
-
this.
|
|
680
|
-
}
|
|
681
|
-
if (node.addColumn) {
|
|
682
|
-
this.visitNode(node.addColumn);
|
|
683
|
-
}
|
|
684
|
-
if (node.dropColumn) {
|
|
685
|
-
this.visitNode(node.dropColumn);
|
|
686
|
-
}
|
|
687
|
-
if (node.alterColumn) {
|
|
688
|
-
this.visitNode(node.alterColumn);
|
|
689
|
-
}
|
|
690
|
-
if (node.modifyColumn) {
|
|
691
|
-
this.visitNode(node.modifyColumn);
|
|
670
|
+
if (node.columnAlterations) {
|
|
671
|
+
this.compileList(node.columnAlterations);
|
|
692
672
|
}
|
|
693
673
|
}
|
|
694
674
|
visitAddColumn(node) {
|
|
@@ -752,12 +732,13 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
752
732
|
this.append(' restrict');
|
|
753
733
|
}
|
|
754
734
|
}
|
|
755
|
-
|
|
756
|
-
this.append(
|
|
735
|
+
visitSetOperation(node) {
|
|
736
|
+
this.append(node.operator);
|
|
737
|
+
this.append(' ');
|
|
757
738
|
if (node.all) {
|
|
758
739
|
this.append('all ');
|
|
759
740
|
}
|
|
760
|
-
this.visitNode(node.
|
|
741
|
+
this.visitNode(node.expression);
|
|
761
742
|
}
|
|
762
743
|
visitCreateView(node) {
|
|
763
744
|
this.append('create ');
|
|
@@ -870,6 +851,56 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
870
851
|
visitDefaultInsertValue(_) {
|
|
871
852
|
this.append('default');
|
|
872
853
|
}
|
|
854
|
+
visitAggregateFunction(node) {
|
|
855
|
+
this.append(node.func);
|
|
856
|
+
this.append('(');
|
|
857
|
+
if (node.distinct) {
|
|
858
|
+
this.append('distinct ');
|
|
859
|
+
}
|
|
860
|
+
this.visitNode(node.column);
|
|
861
|
+
this.append(')');
|
|
862
|
+
if (node.filter) {
|
|
863
|
+
this.append(' filter(');
|
|
864
|
+
this.visitNode(node.filter);
|
|
865
|
+
this.append(')');
|
|
866
|
+
}
|
|
867
|
+
if (node.over) {
|
|
868
|
+
this.append(' ');
|
|
869
|
+
this.visitNode(node.over);
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
visitOver(node) {
|
|
873
|
+
this.append('over(');
|
|
874
|
+
if (node.partitionBy) {
|
|
875
|
+
this.visitNode(node.partitionBy);
|
|
876
|
+
if (node.orderBy) {
|
|
877
|
+
this.append(' ');
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
if (node.orderBy) {
|
|
881
|
+
this.visitNode(node.orderBy);
|
|
882
|
+
}
|
|
883
|
+
this.append(')');
|
|
884
|
+
}
|
|
885
|
+
visitPartitionBy(node) {
|
|
886
|
+
this.append('partition by ');
|
|
887
|
+
this.compileList(node.items);
|
|
888
|
+
}
|
|
889
|
+
visitPartitionByItem(node) {
|
|
890
|
+
this.visitNode(node.partitionBy);
|
|
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
|
+
}
|
|
873
904
|
append(str) {
|
|
874
905
|
this.#sql += str;
|
|
875
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;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AliasedRawBuilder = exports.RawBuilder = void 0;
|
|
3
|
+
exports.AliasedRawBuilder = exports.isRawBuilder = exports.RawBuilder = void 0;
|
|
4
4
|
const alias_node_js_1 = require("../operation-node/alias-node.js");
|
|
5
|
-
const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
|
|
6
5
|
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
7
6
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
8
7
|
const noop_query_executor_js_1 = require("../query-executor/noop-query-executor.js");
|
|
9
8
|
const identifier_node_js_1 = require("../operation-node/identifier-node.js");
|
|
9
|
+
const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
|
|
10
10
|
/**
|
|
11
11
|
* An instance of this class can be used to create raw SQL snippets or queries.
|
|
12
12
|
*
|
|
@@ -18,6 +18,10 @@ class RawBuilder {
|
|
|
18
18
|
constructor(props) {
|
|
19
19
|
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
20
20
|
}
|
|
21
|
+
/** @private */
|
|
22
|
+
get expressionType() {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
21
25
|
as(alias) {
|
|
22
26
|
return new AliasedRawBuilder(this, alias);
|
|
23
27
|
}
|
|
@@ -61,6 +65,15 @@ class RawBuilder {
|
|
|
61
65
|
}
|
|
62
66
|
}
|
|
63
67
|
exports.RawBuilder = RawBuilder;
|
|
68
|
+
function isRawBuilder(obj) {
|
|
69
|
+
return ((0, object_utils_js_1.isObject)(obj) &&
|
|
70
|
+
(0, object_utils_js_1.isFunction)(obj.as) &&
|
|
71
|
+
(0, object_utils_js_1.isFunction)(obj.castTo) &&
|
|
72
|
+
(0, object_utils_js_1.isFunction)(obj.withPlugin) &&
|
|
73
|
+
(0, object_utils_js_1.isFunction)(obj.toOperationNode) &&
|
|
74
|
+
(0, object_utils_js_1.isFunction)(obj.execute));
|
|
75
|
+
}
|
|
76
|
+
exports.isRawBuilder = isRawBuilder;
|
|
64
77
|
(0, prevent_await_js_1.preventAwait)(RawBuilder, "don't await RawBuilder instances directly. To execute the query you need to call `execute`");
|
|
65
78
|
/**
|
|
66
79
|
* {@link RawBuilder} with an alias. The result of calling {@link RawBuilder.as}.
|
|
@@ -68,14 +81,15 @@ exports.RawBuilder = RawBuilder;
|
|
|
68
81
|
class AliasedRawBuilder {
|
|
69
82
|
#rawBuilder;
|
|
70
83
|
#alias;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
84
|
+
constructor(rawBuilder, alias) {
|
|
85
|
+
this.#rawBuilder = rawBuilder;
|
|
86
|
+
this.#alias = alias;
|
|
87
|
+
}
|
|
88
|
+
/** @private */
|
|
89
|
+
get expression() {
|
|
90
|
+
return this.#rawBuilder;
|
|
91
|
+
}
|
|
92
|
+
/** @private */
|
|
79
93
|
get alias() {
|
|
80
94
|
return this.#alias;
|
|
81
95
|
}
|
|
@@ -84,9 +98,5 @@ class AliasedRawBuilder {
|
|
|
84
98
|
? this.#alias.toOperationNode()
|
|
85
99
|
: identifier_node_js_1.IdentifierNode.create(this.#alias));
|
|
86
100
|
}
|
|
87
|
-
constructor(rawBuilder, alias) {
|
|
88
|
-
this.#rawBuilder = rawBuilder;
|
|
89
|
-
this.#alias = alias;
|
|
90
|
-
}
|
|
91
101
|
}
|
|
92
102
|
exports.AliasedRawBuilder = AliasedRawBuilder;
|
|
@@ -7,13 +7,14 @@ export interface Sql {
|
|
|
7
7
|
* import { sql } from 'kysely'
|
|
8
8
|
*
|
|
9
9
|
* const id = 123
|
|
10
|
-
*
|
|
11
10
|
* const snippet = sql<Person[]>`select * from person where id = ${id}`
|
|
12
11
|
* ```
|
|
13
12
|
*
|
|
14
13
|
* Substitutions (the things inside `${}`) are automatically passed to the database
|
|
15
|
-
* as parameters and are
|
|
16
|
-
* about SQL injection vulnerabilities.
|
|
14
|
+
* as parameters and are never interpolated to the SQL string. There's no need to worry
|
|
15
|
+
* about SQL injection vulnerabilities. Substitutions can be values, other `sql`
|
|
16
|
+
* expressions, queries and almost anything else Kysely can produce and they get
|
|
17
|
+
* handled correctly. See the examples below.
|
|
17
18
|
*
|
|
18
19
|
* If you need your substitutions to be interpreted as identifiers, value literals or
|
|
19
20
|
* lists of things, see the {@link Sql.ref}, {@link Sql.table}, {@link Sql.id},
|
|
@@ -29,8 +30,7 @@ export interface Sql {
|
|
|
29
30
|
* .selectFrom('person')
|
|
30
31
|
* .select(
|
|
31
32
|
* // If you use `sql` in a select statement, remember to call the `as`
|
|
32
|
-
* // method to give it an alias.
|
|
33
|
-
* // the column to the result type.
|
|
33
|
+
* // method to give it an alias.
|
|
34
34
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name')
|
|
35
35
|
* )
|
|
36
36
|
* .where(sql`birthdate between ${date1} and ${date2}`)
|
|
@@ -97,6 +97,14 @@ export interface Sql {
|
|
|
97
97
|
* type-safety though... But it's possible.
|
|
98
98
|
*/
|
|
99
99
|
<T = unknown>(sqlFragments: TemplateStringsArray, ...parameters: unknown[]): RawBuilder<T>;
|
|
100
|
+
/**
|
|
101
|
+
* `sql.value(value)` is a shortcut for:
|
|
102
|
+
*
|
|
103
|
+
* ```ts
|
|
104
|
+
* sql<ValueType>`${value}`
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
value<T>(value: T): RawBuilder<T>;
|
|
100
108
|
/**
|
|
101
109
|
* This can be used to add runtime column references to SQL snippets.
|
|
102
110
|
*
|
|
@@ -226,7 +234,7 @@ export interface Sql {
|
|
|
226
234
|
* select "public"."person"."first_name" from "public"."person"
|
|
227
235
|
* ```
|
|
228
236
|
*/
|
|
229
|
-
id(...ids: string[]): RawBuilder<unknown>;
|
|
237
|
+
id(...ids: readonly string[]): RawBuilder<unknown>;
|
|
230
238
|
/**
|
|
231
239
|
* This can be used to add literal values to SQL snippets.
|
|
232
240
|
*
|
|
@@ -326,6 +334,6 @@ export interface Sql {
|
|
|
326
334
|
* BEFORE $1::varchar, (1 == 1)::varchar, (select * from "person")::varchar, false::varchar, "first_name" AFTER
|
|
327
335
|
* ```
|
|
328
336
|
*/
|
|
329
|
-
join(array: unknown[], separator?: RawBuilder<any>): RawBuilder<unknown>;
|
|
337
|
+
join(array: readonly unknown[], separator?: RawBuilder<any>): RawBuilder<unknown>;
|
|
330
338
|
}
|
|
331
339
|
export declare const sql: Sql;
|
|
@@ -21,6 +21,12 @@ exports.sql = Object.assign((sqlFragments, ...parameters) => {
|
|
|
21
21
|
rawNode: raw_node_js_1.RawNode.createWithChild((0, reference_parser_js_1.parseStringReference)(columnReference)),
|
|
22
22
|
});
|
|
23
23
|
},
|
|
24
|
+
value(value) {
|
|
25
|
+
return new raw_builder_js_1.RawBuilder({
|
|
26
|
+
queryId: (0, query_id_js_1.createQueryId)(),
|
|
27
|
+
rawNode: raw_node_js_1.RawNode.createWithChild((0, value_parser_js_1.parseValueExpression)(value)),
|
|
28
|
+
});
|
|
29
|
+
},
|
|
24
30
|
table(tableReference) {
|
|
25
31
|
return new raw_builder_js_1.RawBuilder({
|
|
26
32
|
queryId: (0, query_id_js_1.createQueryId)(),
|