kysely 0.24.2 → 0.26.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/README.md +31 -567
- package/dist/cjs/dialect/database-introspector.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -1
- package/dist/cjs/dialect/mysql/mysql-driver.js +5 -1
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
- package/dist/cjs/driver/database-connection.d.ts +6 -0
- package/dist/cjs/driver/driver.d.ts +1 -1
- package/dist/cjs/driver/runtime-driver.js +6 -6
- package/dist/cjs/dynamic/dynamic.d.ts +1 -1
- package/dist/cjs/dynamic/dynamic.js +1 -1
- package/dist/cjs/expression/expression-builder.d.ts +263 -109
- package/dist/cjs/expression/expression-builder.js +38 -7
- package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
- package/dist/cjs/expression/expression-wrapper.js +70 -2
- package/dist/cjs/helpers/mysql.d.ts +3 -3
- package/dist/cjs/helpers/mysql.js +2 -2
- package/dist/cjs/helpers/postgres.d.ts +31 -19
- package/dist/cjs/helpers/postgres.js +30 -18
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.js +10 -0
- package/dist/cjs/kysely.d.ts +42 -15
- package/dist/cjs/kysely.js +41 -10
- package/dist/cjs/migration/file-migration-provider.js +2 -2
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -7
- package/dist/cjs/operation-node/aggregate-function-node.js +1 -1
- package/dist/cjs/operation-node/alter-column-node.d.ts +3 -5
- package/dist/cjs/operation-node/alter-column-node.js +2 -7
- package/dist/cjs/operation-node/alter-table-node.d.ts +3 -3
- package/dist/cjs/operation-node/alter-table-node.js +1 -2
- package/dist/cjs/operation-node/case-node.d.ts +19 -0
- package/dist/cjs/operation-node/case-node.js +42 -0
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -1
- package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-index-node.d.ts +4 -3
- package/dist/cjs/operation-node/create-index-node.js +6 -0
- package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-table-node.d.ts +2 -2
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-view-node.d.ts +1 -1
- package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
- package/dist/cjs/operation-node/drop-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-view-node.d.ts +1 -1
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/generated-node.d.ts +1 -1
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/join-node.d.ts +1 -2
- package/dist/cjs/operation-node/join-node.js +0 -8
- package/dist/cjs/operation-node/json-operator-chain-node.d.ts +16 -0
- package/dist/cjs/operation-node/json-operator-chain-node.js +25 -0
- package/dist/cjs/operation-node/json-path-leg-node.d.ts +14 -0
- package/dist/cjs/operation-node/json-path-leg-node.js +19 -0
- package/dist/cjs/operation-node/json-path-node.d.ts +16 -0
- package/dist/cjs/operation-node/json-path-node.js +25 -0
- package/dist/cjs/operation-node/json-reference-node.d.ts +17 -0
- package/dist/cjs/operation-node/json-reference-node.js +25 -0
- package/dist/cjs/operation-node/on-conflict-node.d.ts +1 -1
- package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +1 -1
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +12 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +53 -3
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +6 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +13 -9
- package/dist/cjs/operation-node/operator-node.js +12 -2
- package/dist/cjs/operation-node/query-node.d.ts +9 -10
- package/dist/cjs/operation-node/query-node.js +0 -8
- package/dist/cjs/operation-node/reference-node.d.ts +2 -2
- package/dist/cjs/operation-node/reference-node.js +1 -1
- package/dist/cjs/operation-node/references-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-modifier-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/select-query-node.js +0 -8
- package/dist/cjs/operation-node/selection-node.d.ts +1 -1
- package/dist/cjs/operation-node/set-operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +1 -1
- package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/values-node.d.ts +1 -1
- package/dist/cjs/operation-node/when-node.d.ts +14 -0
- package/dist/cjs/operation-node/when-node.js +24 -0
- package/dist/cjs/operation-node/with-node.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.d.ts +9 -11
- package/dist/cjs/parser/binary-operation-parser.js +40 -103
- package/dist/cjs/parser/coalesce-parser.d.ts +1 -1
- package/dist/cjs/parser/data-type-parser.d.ts +1 -1
- package/dist/cjs/parser/default-value-parser.d.ts +1 -1
- package/dist/cjs/parser/expression-parser.d.ts +6 -5
- package/dist/cjs/parser/group-by-parser.d.ts +2 -2
- package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
- package/dist/cjs/parser/join-parser.d.ts +4 -4
- package/dist/cjs/parser/order-by-parser.d.ts +4 -3
- package/dist/cjs/parser/order-by-parser.js +5 -1
- package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +16 -8
- package/dist/cjs/parser/reference-parser.js +43 -16
- package/dist/cjs/parser/returning-parser.d.ts +2 -2
- package/dist/cjs/parser/select-parser.d.ts +9 -9
- package/dist/cjs/parser/table-parser.d.ts +14 -13
- package/dist/cjs/parser/unary-operation-parser.d.ts +1 -1
- package/dist/cjs/parser/update-set-parser.d.ts +3 -3
- package/dist/cjs/parser/update-set-parser.js +1 -3
- package/dist/cjs/parser/value-parser.d.ts +4 -4
- package/dist/cjs/parser/with-parser.d.ts +14 -9
- package/dist/cjs/plugin/camel-case/camel-case.d.ts +1 -1
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +32 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +22 -6
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -38
- package/dist/cjs/query-builder/aggregate-function-builder.js +4 -59
- package/dist/cjs/query-builder/case-builder.d.ts +111 -0
- package/dist/cjs/query-builder/case-builder.js +75 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +130 -63
- package/dist/cjs/query-builder/delete-query-builder.js +42 -59
- package/dist/cjs/query-builder/delete-result.d.ts +1 -2
- package/dist/cjs/query-builder/delete-result.js +2 -8
- package/dist/cjs/query-builder/function-module.d.ts +78 -69
- package/dist/cjs/query-builder/function-module.js +12 -16
- package/dist/cjs/query-builder/having-interface.d.ts +2 -35
- package/dist/cjs/query-builder/insert-query-builder.d.ts +99 -47
- package/dist/cjs/query-builder/insert-query-builder.js +57 -26
- package/dist/cjs/query-builder/insert-result.d.ts +3 -4
- package/dist/cjs/query-builder/insert-result.js +5 -14
- package/dist/cjs/query-builder/join-builder.d.ts +2 -35
- package/dist/cjs/query-builder/join-builder.js +1 -56
- package/dist/cjs/query-builder/json-path-builder.d.ts +212 -0
- package/dist/cjs/query-builder/json-path-builder.js +191 -0
- package/dist/cjs/query-builder/no-result-error.d.ts +1 -1
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +144 -73
- package/dist/cjs/query-builder/on-conflict-builder.js +2 -111
- package/dist/cjs/query-builder/over-builder.d.ts +2 -2
- package/dist/cjs/query-builder/over-builder.js +1 -1
- package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
- package/dist/cjs/query-builder/select-query-builder.d.ts +184 -138
- package/dist/cjs/query-builder/select-query-builder.js +64 -130
- package/dist/cjs/query-builder/update-query-builder.d.ts +143 -71
- package/dist/cjs/query-builder/update-query-builder.js +47 -60
- package/dist/cjs/query-builder/update-result.d.ts +3 -3
- package/dist/cjs/query-builder/update-result.js +5 -9
- package/dist/cjs/query-builder/where-interface.d.ts +73 -38
- package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
- package/dist/cjs/query-compiler/compiled-query.js +2 -2
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +12 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +67 -5
- package/dist/cjs/query-compiler/query-compiler.d.ts +1 -1
- package/dist/cjs/query-creator.d.ts +4 -2
- package/dist/cjs/schema/alter-column-builder.d.ts +13 -7
- package/dist/cjs/schema/alter-column-builder.js +20 -22
- package/dist/cjs/schema/alter-table-builder.d.ts +0 -4
- package/dist/cjs/schema/alter-table-builder.js +2 -9
- package/dist/cjs/schema/column-definition-builder.d.ts +1 -1
- package/dist/cjs/schema/column-definition-builder.js +1 -2
- package/dist/cjs/schema/create-index-builder.d.ts +49 -7
- package/dist/cjs/schema/create-index-builder.js +52 -14
- package/dist/cjs/schema/create-table-builder.d.ts +2 -6
- package/dist/cjs/schema/create-table-builder.js +0 -6
- package/dist/cjs/schema/schema.d.ts +1 -2
- package/dist/cjs/schema/schema.js +2 -3
- package/dist/cjs/util/column-type.d.ts +21 -16
- package/dist/cjs/util/explainable.d.ts +1 -1
- package/dist/cjs/util/infer-result.d.ts +2 -2
- package/dist/cjs/util/log.d.ts +6 -6
- package/dist/cjs/util/log.js +4 -4
- package/dist/cjs/util/object-utils.d.ts +2 -1
- package/dist/cjs/util/require-all-props.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +54 -40
- package/dist/esm/dialect/database-introspector.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -1
- package/dist/esm/dialect/mysql/mysql-driver.js +5 -1
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
- package/dist/esm/driver/database-connection.d.ts +6 -0
- package/dist/esm/driver/driver.d.ts +1 -1
- package/dist/esm/driver/runtime-driver.js +6 -6
- package/dist/esm/dynamic/dynamic.d.ts +1 -1
- package/dist/esm/dynamic/dynamic.js +1 -1
- package/dist/esm/expression/expression-builder.d.ts +263 -109
- package/dist/esm/expression/expression-builder.js +40 -9
- package/dist/esm/expression/expression-wrapper.d.ts +296 -5
- package/dist/esm/expression/expression-wrapper.js +67 -1
- package/dist/esm/helpers/mysql.d.ts +3 -3
- package/dist/esm/helpers/mysql.js +2 -2
- package/dist/esm/helpers/postgres.d.ts +31 -19
- package/dist/esm/helpers/postgres.js +30 -18
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/kysely.d.ts +42 -15
- package/dist/esm/kysely.js +42 -11
- package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -7
- package/dist/esm/operation-node/aggregate-function-node.js +1 -1
- package/dist/esm/operation-node/alter-column-node.d.ts +3 -5
- package/dist/esm/operation-node/alter-column-node.js +2 -7
- package/dist/esm/operation-node/alter-table-node.d.ts +3 -3
- package/dist/esm/operation-node/alter-table-node.js +1 -2
- package/dist/esm/operation-node/case-node.d.ts +19 -0
- package/dist/esm/operation-node/case-node.js +40 -0
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -1
- package/dist/esm/operation-node/constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/create-index-node.d.ts +4 -3
- package/dist/esm/operation-node/create-index-node.js +6 -0
- package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
- package/dist/esm/operation-node/create-table-node.d.ts +2 -2
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-view-node.d.ts +1 -1
- package/dist/esm/operation-node/data-type-node.d.ts +2 -2
- package/dist/esm/operation-node/drop-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-view-node.d.ts +1 -1
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/generated-node.d.ts +1 -1
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
- package/dist/esm/operation-node/join-node.d.ts +1 -2
- package/dist/esm/operation-node/join-node.js +0 -8
- package/dist/esm/operation-node/json-operator-chain-node.d.ts +16 -0
- package/dist/esm/operation-node/json-operator-chain-node.js +23 -0
- package/dist/esm/operation-node/json-path-leg-node.d.ts +14 -0
- package/dist/esm/operation-node/json-path-leg-node.js +17 -0
- package/dist/esm/operation-node/json-path-node.d.ts +16 -0
- package/dist/esm/operation-node/json-path-node.js +23 -0
- package/dist/esm/operation-node/json-reference-node.d.ts +17 -0
- package/dist/esm/operation-node/json-reference-node.js +23 -0
- package/dist/esm/operation-node/on-conflict-node.d.ts +1 -1
- package/dist/esm/operation-node/on-duplicate-key-node.d.ts +1 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -0
- package/dist/esm/operation-node/operation-node-transformer.js +53 -3
- package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -0
- package/dist/esm/operation-node/operation-node-visitor.js +6 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +13 -9
- package/dist/esm/operation-node/operator-node.js +10 -1
- package/dist/esm/operation-node/query-node.d.ts +9 -10
- package/dist/esm/operation-node/query-node.js +0 -8
- package/dist/esm/operation-node/reference-node.d.ts +2 -2
- package/dist/esm/operation-node/reference-node.js +1 -1
- package/dist/esm/operation-node/references-node.d.ts +1 -1
- package/dist/esm/operation-node/select-modifier-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +0 -1
- package/dist/esm/operation-node/select-query-node.js +0 -8
- package/dist/esm/operation-node/selection-node.d.ts +1 -1
- package/dist/esm/operation-node/set-operation-node.d.ts +1 -1
- package/dist/esm/operation-node/simple-reference-expression-node.d.ts +1 -1
- package/dist/esm/operation-node/update-query-node.d.ts +1 -1
- package/dist/esm/operation-node/values-node.d.ts +1 -1
- package/dist/esm/operation-node/when-node.d.ts +14 -0
- package/dist/esm/operation-node/when-node.js +22 -0
- package/dist/esm/operation-node/with-node.d.ts +1 -1
- package/dist/esm/parser/binary-operation-parser.d.ts +9 -11
- package/dist/esm/parser/binary-operation-parser.js +38 -99
- package/dist/esm/parser/coalesce-parser.d.ts +1 -1
- package/dist/esm/parser/data-type-parser.d.ts +1 -1
- package/dist/esm/parser/default-value-parser.d.ts +1 -1
- package/dist/esm/parser/expression-parser.d.ts +6 -5
- package/dist/esm/parser/group-by-parser.d.ts +2 -2
- package/dist/esm/parser/insert-values-parser.d.ts +4 -4
- package/dist/esm/parser/join-parser.d.ts +4 -4
- package/dist/esm/parser/order-by-parser.d.ts +4 -3
- package/dist/esm/parser/order-by-parser.js +3 -0
- package/dist/esm/parser/partition-by-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +16 -8
- package/dist/esm/parser/reference-parser.js +40 -15
- package/dist/esm/parser/returning-parser.d.ts +2 -2
- package/dist/esm/parser/select-parser.d.ts +9 -9
- package/dist/esm/parser/table-parser.d.ts +14 -13
- package/dist/esm/parser/unary-operation-parser.d.ts +1 -1
- package/dist/esm/parser/update-set-parser.d.ts +3 -3
- package/dist/esm/parser/update-set-parser.js +2 -4
- package/dist/esm/parser/value-parser.d.ts +4 -4
- package/dist/esm/parser/with-parser.d.ts +14 -9
- package/dist/esm/plugin/camel-case/camel-case.d.ts +1 -1
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +29 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +22 -6
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -38
- package/dist/esm/query-builder/aggregate-function-builder.js +5 -60
- package/dist/esm/query-builder/case-builder.d.ts +111 -0
- package/dist/esm/query-builder/case-builder.js +69 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +130 -63
- package/dist/esm/query-builder/delete-query-builder.js +43 -60
- package/dist/esm/query-builder/delete-result.d.ts +1 -2
- package/dist/esm/query-builder/delete-result.js +2 -8
- package/dist/esm/query-builder/function-module.d.ts +78 -69
- package/dist/esm/query-builder/function-module.js +13 -17
- package/dist/esm/query-builder/having-interface.d.ts +2 -35
- package/dist/esm/query-builder/insert-query-builder.d.ts +99 -47
- package/dist/esm/query-builder/insert-query-builder.js +57 -26
- package/dist/esm/query-builder/insert-result.d.ts +3 -4
- package/dist/esm/query-builder/insert-result.js +5 -14
- package/dist/esm/query-builder/join-builder.d.ts +2 -35
- package/dist/esm/query-builder/join-builder.js +2 -57
- package/dist/esm/query-builder/json-path-builder.d.ts +212 -0
- package/dist/esm/query-builder/json-path-builder.js +186 -0
- package/dist/esm/query-builder/no-result-error.d.ts +1 -1
- package/dist/esm/query-builder/on-conflict-builder.d.ts +144 -73
- package/dist/esm/query-builder/on-conflict-builder.js +3 -112
- package/dist/esm/query-builder/over-builder.d.ts +2 -2
- package/dist/esm/query-builder/over-builder.js +1 -1
- package/dist/esm/query-builder/returning-interface.d.ts +1 -1
- package/dist/esm/query-builder/select-query-builder.d.ts +184 -138
- package/dist/esm/query-builder/select-query-builder.js +65 -131
- package/dist/esm/query-builder/update-query-builder.d.ts +143 -71
- package/dist/esm/query-builder/update-query-builder.js +48 -61
- package/dist/esm/query-builder/update-result.d.ts +3 -3
- package/dist/esm/query-builder/update-result.js +5 -9
- package/dist/esm/query-builder/where-interface.d.ts +73 -38
- package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
- package/dist/esm/query-compiler/compiled-query.js +2 -2
- package/dist/esm/query-compiler/default-query-compiler.d.ts +12 -0
- package/dist/esm/query-compiler/default-query-compiler.js +67 -5
- package/dist/esm/query-compiler/query-compiler.d.ts +1 -1
- package/dist/esm/query-creator.d.ts +4 -2
- package/dist/esm/schema/alter-column-builder.d.ts +13 -7
- package/dist/esm/schema/alter-column-builder.js +20 -22
- package/dist/esm/schema/alter-table-builder.d.ts +0 -4
- package/dist/esm/schema/alter-table-builder.js +2 -9
- package/dist/esm/schema/column-definition-builder.d.ts +1 -1
- package/dist/esm/schema/column-definition-builder.js +1 -2
- package/dist/esm/schema/create-index-builder.d.ts +49 -7
- package/dist/esm/schema/create-index-builder.js +54 -16
- package/dist/esm/schema/create-table-builder.d.ts +2 -6
- package/dist/esm/schema/create-table-builder.js +0 -6
- package/dist/esm/schema/schema.d.ts +1 -2
- package/dist/esm/schema/schema.js +2 -3
- package/dist/esm/util/column-type.d.ts +21 -16
- package/dist/esm/util/explainable.d.ts +1 -1
- package/dist/esm/util/infer-result.d.ts +2 -2
- package/dist/esm/util/log.d.ts +6 -6
- package/dist/esm/util/log.js +4 -4
- package/dist/esm/util/object-utils.d.ts +2 -1
- package/dist/esm/util/require-all-props.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +54 -40
- package/package.json +25 -23
- package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +0 -62
- package/dist/cjs/query-builder/deprecated-having-expression-builder.js +0 -2
- package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +0 -62
- package/dist/cjs/query-builder/deprecated-on-expression-builder.js +0 -2
- package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +0 -62
- package/dist/cjs/query-builder/deprecated-where-expression-builder.js +0 -2
- package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +0 -62
- package/dist/esm/query-builder/deprecated-having-expression-builder.js +0 -2
- package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +0 -62
- package/dist/esm/query-builder/deprecated-on-expression-builder.js +0 -2
- package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +0 -62
- package/dist/esm/query-builder/deprecated-where-expression-builder.js +0 -2
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { AliasedSelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
2
2
|
import { SelectionNode } from '../operation-node/selection-node.js';
|
|
3
|
-
import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, ExtractColumnType
|
|
3
|
+
import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, ExtractColumnType } from '../util/type-utils.js';
|
|
4
4
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
5
5
|
import { AliasedExpressionOrFactory } from './expression-parser.js';
|
|
6
6
|
import { Selectable, SelectType } from '../util/column-type.js';
|
|
7
7
|
import { AliasedExpression } from '../expression/expression.js';
|
|
8
8
|
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
9
|
+
export type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | DynamicReferenceBuilder<any> | AliasedExpressionOrFactory<DB, TB>;
|
|
10
|
+
export type SelectArg<DB, TB extends keyof DB, SE extends SelectExpression<DB, TB>> = SE | ReadonlyArray<SE> | ((eb: ExpressionBuilder<DB, TB>) => ReadonlyArray<SE>);
|
|
11
|
+
export type Selection<DB, TB extends keyof DB, SE> = {
|
|
12
12
|
[A in ExtractAliasFromSelectExpression<SE>]: SelectType<ExtractTypeFromSelectExpression<DB, TB, SE, A>>;
|
|
13
13
|
};
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
export
|
|
14
|
+
type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedExpression<any, infer EA> ? EA : SE extends (qb: any) => AliasedExpression<any, infer EA> ? EA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : never;
|
|
15
|
+
type ExtractAliasFromStringSelectExpression<SE extends string> = SE extends `${string}.${string}.${string} as ${infer A}` ? A : SE extends `${string}.${string} as ${infer A}` ? A : SE extends `${string} as ${infer A}` ? A : SE extends `${string}.${string}.${infer C}` ? C : SE extends `${string}.${infer C}` ? C : SE;
|
|
16
|
+
type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE, A extends keyof any> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE, A> : SE extends AliasedSelectQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O[keyof O] | null : never : SE extends (qb: any) => AliasedSelectQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O[keyof O] | null : never : SE extends AliasedExpression<infer O, infer EA> ? EA extends A ? O : never : SE extends (qb: any) => AliasedExpression<infer O, infer EA> ? EA extends A ? O : never : SE extends DynamicReferenceBuilder<infer RA> ? A extends ExtractAliasFromStringSelectExpression<RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA, A> | undefined : never : never;
|
|
17
|
+
type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string, A extends keyof any> = SE extends `${infer SC}.${infer T}.${infer C} as ${infer RA}` ? RA extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C} as ${infer RA}` ? RA extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends `${infer C} as ${infer RA}` ? RA extends A ? C extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, C> : never : never : SE extends `${infer SC}.${infer T}.${infer C}` ? C extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C}` ? C extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends A ? SE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, SE> : never : never;
|
|
18
|
+
export type AllSelection<DB, TB extends keyof DB> = Selectable<{
|
|
19
19
|
[C in AnyColumn<DB, TB>]: {
|
|
20
20
|
[T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
|
|
21
21
|
}[TB];
|
|
@@ -3,20 +3,21 @@ import { TableNode } from '../operation-node/table-node.js';
|
|
|
3
3
|
import { AliasedExpressionOrFactory } from './expression-parser.js';
|
|
4
4
|
import { OperationNode } from '../operation-node/operation-node.js';
|
|
5
5
|
import { AliasedExpression } from '../expression/expression.js';
|
|
6
|
-
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
6
|
+
import { DrainOuterGeneric, ShallowRecord } from '../util/type-utils.js';
|
|
7
|
+
export type TableExpression<DB, TB extends keyof DB> = AnyAliasedTable<DB> | AnyTable<DB> | AliasedExpressionOrFactory<DB, TB>;
|
|
8
|
+
export type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
|
|
9
|
+
export type TableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB> | AliasedExpression<any, any>;
|
|
10
|
+
export type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
|
|
11
|
+
export type TableReferenceOrList<DB> = TableReference<DB> | ReadonlyArray<TableReference<DB>>;
|
|
12
|
+
export type From<DB, TE> = DrainOuterGeneric<{
|
|
12
13
|
[C in keyof DB | ExtractAliasFromTableExpression<DB, TE>]: C extends ExtractAliasFromTableExpression<DB, TE> ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? DB[C] : never;
|
|
13
|
-
}
|
|
14
|
-
export
|
|
15
|
-
export
|
|
16
|
-
export
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
}>;
|
|
15
|
+
export type FromTables<DB, TB extends keyof DB, TE> = DrainOuterGeneric<TB | ExtractAliasFromTableExpression<DB, TE>>;
|
|
16
|
+
export type ExtractTableAlias<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : never;
|
|
17
|
+
export type PickTableWithAlias<DB, T extends AnyAliasedTable<DB>> = T extends `${infer TB} as ${infer A}` ? TB extends keyof DB ? ShallowRecord<A, DB[TB]> : never : never;
|
|
18
|
+
type ExtractAliasFromTableExpression<DB, TE> = TE extends string ? ExtractTableAlias<DB, TE> : TE extends AliasedExpression<any, infer QA> ? QA : TE extends (qb: any) => AliasedExpression<any, infer QA> ? QA : never;
|
|
19
|
+
type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : never;
|
|
20
|
+
type AnyTable<DB> = keyof DB & string;
|
|
20
21
|
export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): OperationNode[];
|
|
21
22
|
export declare function parseTableExpression(table: TableExpression<any, any>): OperationNode;
|
|
22
23
|
export declare function parseAliasedTable(from: string): TableNode | AliasNode;
|
|
@@ -2,7 +2,7 @@ import { UnaryOperator } from '../operation-node/operator-node.js';
|
|
|
2
2
|
import { UnaryOperationNode } from '../operation-node/unary-operation-node.js';
|
|
3
3
|
import { ExpressionOrFactory } from './expression-parser.js';
|
|
4
4
|
import { ReferenceExpression } from './reference-parser.js';
|
|
5
|
-
export
|
|
5
|
+
export type ExistsExpression<DB, TB extends keyof DB> = ExpressionOrFactory<DB, TB, any>;
|
|
6
6
|
export declare function parseExists(operand: ExistsExpression<any, any>): UnaryOperationNode;
|
|
7
7
|
export declare function parseNotExists(operand: ExistsExpression<any, any>): UnaryOperationNode;
|
|
8
8
|
export declare function parseUnaryOperation(operator: UnaryOperator, operand: ReferenceExpression<any, any>): UnaryOperationNode;
|
|
@@ -2,9 +2,9 @@ import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|
|
2
2
|
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
3
3
|
import { UpdateKeys, UpdateType } from '../util/column-type.js';
|
|
4
4
|
import { ValueExpression } from './value-parser.js';
|
|
5
|
-
export
|
|
5
|
+
export type UpdateObject<DB, TB extends keyof DB, UT extends keyof DB = TB> = {
|
|
6
6
|
[C in UpdateKeys<DB[UT]>]?: ValueExpression<DB, TB, UpdateType<DB[UT][C]>> | undefined;
|
|
7
7
|
};
|
|
8
|
-
export
|
|
9
|
-
export
|
|
8
|
+
export type UpdateObjectFactory<DB, TB extends keyof DB, UT extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => UpdateObject<DB, TB, UT>;
|
|
9
|
+
export type UpdateExpression<DB, TB extends keyof DB, UT extends keyof DB = TB> = UpdateObject<DB, TB, UT> | UpdateObjectFactory<DB, TB, UT>;
|
|
10
10
|
export declare function parseUpdateExpression(update: UpdateExpression<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
/// <reference types="./update-set-parser.d.ts" />
|
|
2
2
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
3
3
|
import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|
4
|
-
import { expressionBuilder } from '../expression/expression-builder.js';
|
|
4
|
+
import { expressionBuilder, } from '../expression/expression-builder.js';
|
|
5
5
|
import { isFunction } from '../util/object-utils.js';
|
|
6
6
|
import { parseValueExpression } from './value-parser.js';
|
|
7
7
|
export function parseUpdateExpression(update) {
|
|
8
|
-
const updateObj = isFunction(update)
|
|
9
|
-
? update(expressionBuilder())
|
|
10
|
-
: update;
|
|
8
|
+
const updateObj = isFunction(update) ? update(expressionBuilder()) : update;
|
|
11
9
|
return Object.entries(updateObj)
|
|
12
10
|
.filter(([_, value]) => value !== undefined)
|
|
13
11
|
.map(([key, value]) => {
|
|
@@ -2,10 +2,10 @@ import { ExpressionOrFactory } from './expression-parser.js';
|
|
|
2
2
|
import { OperationNode } from '../operation-node/operation-node.js';
|
|
3
3
|
import { Expression } from '../expression/expression.js';
|
|
4
4
|
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
|
|
5
|
+
export type ValueExpression<DB, TB extends keyof DB, V> = V | ExpressionOrFactory<DB, TB, V>;
|
|
6
|
+
export type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
|
|
7
|
+
export type ExtractTypeFromValueExpressionOrList<VE> = VE extends ReadonlyArray<infer AV> ? ExtractTypeFromValueExpression<AV> : ExtractTypeFromValueExpression<VE>;
|
|
8
|
+
type ExtractTypeFromValueExpression<VE> = VE extends SelectQueryBuilder<any, any, Record<string, infer SV>> ? SV : VE extends Expression<infer V> ? V : VE;
|
|
9
9
|
export declare function parseValueExpressionOrList(arg: ValueExpressionOrList<any, any, unknown>): OperationNode;
|
|
10
10
|
export declare function parseValueExpression(exp: ValueExpression<any, any, unknown>): OperationNode;
|
|
11
11
|
export {};
|
|
@@ -4,21 +4,26 @@ import { InsertQueryBuilder } from '../query-builder/insert-query-builder.js';
|
|
|
4
4
|
import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
|
|
5
5
|
import { QueryCreator } from '../query-creator.js';
|
|
6
6
|
import { Expression } from '../expression/expression.js';
|
|
7
|
-
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
|
|
7
|
+
import { ShallowRecord } from '../util/type-utils.js';
|
|
8
|
+
export type CommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB>) => CommonTableExpressionOutput<DB, CN>;
|
|
9
|
+
export type RecursiveCommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB & {
|
|
10
|
+
[K in ExtractTableFromCommonTableExpressionName<CN>]: ExtractRowFromCommonTableExpressionName<CN>;
|
|
11
|
+
}>) => CommonTableExpressionOutput<DB, CN>;
|
|
12
|
+
export type QueryCreatorWithCommonTableExpression<DB, CN extends string, CTE> = QueryCreator<DB & {
|
|
13
|
+
[K in ExtractTableFromCommonTableExpressionName<CN>]: ExtractRowFromCommonTableExpression<CTE>;
|
|
14
|
+
}>;
|
|
15
|
+
type CommonTableExpressionOutput<DB, CN extends string> = Expression<ExtractRowFromCommonTableExpressionName<CN>> | InsertQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>> | UpdateQueryBuilder<DB, any, any, ExtractRowFromCommonTableExpressionName<CN>> | DeleteQueryBuilder<DB, any, ExtractRowFromCommonTableExpressionName<CN>>;
|
|
11
16
|
/**
|
|
12
17
|
* Given a common CommonTableExpression CTE extracts the row type from it.
|
|
13
18
|
*
|
|
14
19
|
* For example a CTE `(db) => db.selectFrom('person').select(['id', 'first_name'])`
|
|
15
20
|
* would result in `Pick<Person, 'id' | 'first_name'>`.
|
|
16
21
|
*/
|
|
17
|
-
|
|
22
|
+
type ExtractRowFromCommonTableExpression<CTE> = CTE extends (creator: QueryCreator<any>) => infer Q ? Q extends Expression<infer QO> ? QO : Q extends InsertQueryBuilder<any, any, infer QO> ? QO : Q extends UpdateQueryBuilder<any, any, any, infer QO> ? QO : Q extends DeleteQueryBuilder<any, any, infer QO> ? QO : never : never;
|
|
18
23
|
/**
|
|
19
24
|
* Extracts 'person' from a string like 'person(id, first_name)'.
|
|
20
25
|
*/
|
|
21
|
-
|
|
26
|
+
type ExtractTableFromCommonTableExpressionName<CN extends string> = CN extends `${infer TB}(${string})` ? TB : CN;
|
|
22
27
|
/**
|
|
23
28
|
* Parses a string like 'person(id, first_name)' into a type:
|
|
24
29
|
*
|
|
@@ -28,12 +33,12 @@ declare type ExtractTableFromCommonTableExpressionName<CN extends string> = CN e
|
|
|
28
33
|
* }
|
|
29
34
|
*
|
|
30
35
|
*/
|
|
31
|
-
|
|
36
|
+
type ExtractRowFromCommonTableExpressionName<CN extends string> = CN extends `${string}(${infer CL})` ? {
|
|
32
37
|
[C in ExtractColumnNamesFromColumnList<CL>]: any;
|
|
33
|
-
} :
|
|
38
|
+
} : ShallowRecord<string, any>;
|
|
34
39
|
/**
|
|
35
40
|
* Parses a string like 'id, first_name' into a type 'id' | 'first_name'
|
|
36
41
|
*/
|
|
37
|
-
|
|
42
|
+
type ExtractColumnNamesFromColumnList<R extends string> = R extends `${infer C}, ${infer RS}` ? C | ExtractColumnNamesFromColumnList<RS> : R;
|
|
38
43
|
export declare function parseCommonTableExpression(name: string, expression: CommonTableExpression<any, any>): CommonTableExpressionNode;
|
|
39
44
|
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { QueryResult } from '../../driver/database-connection.js';
|
|
2
|
+
import { RootOperationNode } from '../../query-compiler/query-compiler.js';
|
|
3
|
+
import { UnknownRow } from '../../util/type-utils.js';
|
|
4
|
+
import { KyselyPlugin, PluginTransformQueryArgs, PluginTransformResultArgs } from '../kysely-plugin.js';
|
|
5
|
+
export declare class ParseJSONResultsPlugin implements KyselyPlugin {
|
|
6
|
+
/**
|
|
7
|
+
* This is called for each query before it is executed. You can modify the query by
|
|
8
|
+
* transforming its {@link OperationNode} tree provided in {@link PluginTransformQueryArgs.node | args.node}
|
|
9
|
+
* and returning the transformed tree. You'd usually want to use an {@link OperationNodeTransformer}
|
|
10
|
+
* for this.
|
|
11
|
+
*
|
|
12
|
+
* If you need to pass some query-related data between this method and `transformResult` you
|
|
13
|
+
* can use a `WeakMap` with {@link PluginTransformQueryArgs.queryId | args.queryId} as the key:
|
|
14
|
+
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* const plugin = {
|
|
17
|
+
* data: new WeakMap<QueryId, SomeData>(),
|
|
18
|
+
*
|
|
19
|
+
* transformQuery(args: PluginTransformQueryArgs): RootOperationNode {
|
|
20
|
+
* this.data.set(args.queryId, something)
|
|
21
|
+
* return args.node
|
|
22
|
+
* },
|
|
23
|
+
*
|
|
24
|
+
* transformResult(args: PluginTransformResultArgs): QueryResult<UnknownRow> {
|
|
25
|
+
* const data = this.data.get(args.queryId)
|
|
26
|
+
* return args.result
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* You should use a `WeakMap` instead of a `Map` or some other strong references because `transformQuery`
|
|
32
|
+
* is not always matched by a call to `transformResult` which would leave orphaned items in the map
|
|
33
|
+
* and cause a memory leak.
|
|
34
|
+
*/
|
|
35
|
+
transformQuery(args: PluginTransformQueryArgs): RootOperationNode;
|
|
36
|
+
/**
|
|
37
|
+
* This method is called for each query after it has been executed. The result
|
|
38
|
+
* of the query can be accessed through {@link PluginTransformResultArgs.result | args.result}.
|
|
39
|
+
* You can modify the result and return the modifier result.
|
|
40
|
+
*/
|
|
41
|
+
transformResult(args: PluginTransformResultArgs): Promise<QueryResult<UnknownRow>>;
|
|
42
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/// <reference types="./parse-json-results-plugin.d.ts" />
|
|
2
|
+
import { isString } from '../../util/object-utils.js';
|
|
3
|
+
export class ParseJSONResultsPlugin {
|
|
4
|
+
// noop
|
|
5
|
+
transformQuery(args) {
|
|
6
|
+
return args.node;
|
|
7
|
+
}
|
|
8
|
+
async transformResult(args) {
|
|
9
|
+
const { result } = args;
|
|
10
|
+
return {
|
|
11
|
+
...args.result,
|
|
12
|
+
rows: result.rows.map(parseRow),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function parseRow(row) {
|
|
17
|
+
return Object.entries(row).reduce((row, [key, value]) => {
|
|
18
|
+
if (isString(value) && value.match(/^[\[\{]/) != null) {
|
|
19
|
+
try {
|
|
20
|
+
value = JSON.parse(value);
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
// this catch block is intentionally empty.
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
row[key] = value;
|
|
27
|
+
return row;
|
|
28
|
+
}, {});
|
|
29
|
+
}
|
|
@@ -31,6 +31,7 @@ const ROOT_OPERATION_NODES = freeze({
|
|
|
31
31
|
export class WithSchemaTransformer extends OperationNodeTransformer {
|
|
32
32
|
#schema;
|
|
33
33
|
#schemableIds = new Set();
|
|
34
|
+
#ctes = new Set();
|
|
34
35
|
constructor(schema) {
|
|
35
36
|
super();
|
|
36
37
|
this.#schema = schema;
|
|
@@ -39,6 +40,10 @@ export class WithSchemaTransformer extends OperationNodeTransformer {
|
|
|
39
40
|
if (!this.#isRootOperationNode(node)) {
|
|
40
41
|
return super.transformNodeImpl(node);
|
|
41
42
|
}
|
|
43
|
+
const ctes = this.#collectCTEs(node);
|
|
44
|
+
for (const cte of ctes) {
|
|
45
|
+
this.#ctes.add(cte);
|
|
46
|
+
}
|
|
42
47
|
const tables = this.#collectSchemableIds(node);
|
|
43
48
|
for (const table of tables) {
|
|
44
49
|
this.#schemableIds.add(table);
|
|
@@ -47,6 +52,9 @@ export class WithSchemaTransformer extends OperationNodeTransformer {
|
|
|
47
52
|
for (const table of tables) {
|
|
48
53
|
this.#schemableIds.delete(table);
|
|
49
54
|
}
|
|
55
|
+
for (const cte of ctes) {
|
|
56
|
+
this.#ctes.delete(cte);
|
|
57
|
+
}
|
|
50
58
|
return transformed;
|
|
51
59
|
}
|
|
52
60
|
transformSchemableIdentifier(node) {
|
|
@@ -93,10 +101,14 @@ export class WithSchemaTransformer extends OperationNodeTransformer {
|
|
|
93
101
|
this.#collectSchemableIdsFromTableExpr(join.table, schemableIds);
|
|
94
102
|
}
|
|
95
103
|
}
|
|
104
|
+
return schemableIds;
|
|
105
|
+
}
|
|
106
|
+
#collectCTEs(node) {
|
|
107
|
+
const ctes = new Set();
|
|
96
108
|
if ('with' in node && node.with) {
|
|
97
|
-
this.#
|
|
109
|
+
this.#collectCTEIds(node.with, ctes);
|
|
98
110
|
}
|
|
99
|
-
return
|
|
111
|
+
return ctes;
|
|
100
112
|
}
|
|
101
113
|
#collectSchemableIdsFromTableExpr(node, schemableIds) {
|
|
102
114
|
const table = TableNode.is(node)
|
|
@@ -109,13 +121,17 @@ export class WithSchemaTransformer extends OperationNodeTransformer {
|
|
|
109
121
|
}
|
|
110
122
|
}
|
|
111
123
|
#collectSchemableId(node, schemableIds) {
|
|
112
|
-
|
|
113
|
-
|
|
124
|
+
const id = node.identifier.name;
|
|
125
|
+
if (!this.#schemableIds.has(id) && !this.#ctes.has(id)) {
|
|
126
|
+
schemableIds.add(id);
|
|
114
127
|
}
|
|
115
128
|
}
|
|
116
|
-
#
|
|
129
|
+
#collectCTEIds(node, ctes) {
|
|
117
130
|
for (const expr of node.expressions) {
|
|
118
|
-
|
|
131
|
+
const cteId = expr.name.table.table.identifier.name;
|
|
132
|
+
if (!this.#ctes.has(cteId)) {
|
|
133
|
+
ctes.add(cteId);
|
|
134
|
+
}
|
|
119
135
|
}
|
|
120
136
|
}
|
|
121
137
|
}
|
|
@@ -4,7 +4,6 @@ import { OverBuilder } from './over-builder.js';
|
|
|
4
4
|
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
5
5
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
6
6
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
7
|
-
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
8
7
|
import { WhereExpressionFactory } from './where-interface.js';
|
|
9
8
|
export declare class AggregateFunctionBuilder<DB, TB extends keyof DB, O = unknown> implements Expression<O> {
|
|
10
9
|
#private;
|
|
@@ -37,7 +36,7 @@ export declare class AggregateFunctionBuilder<DB, TB extends keyof DB, O = unkno
|
|
|
37
36
|
* const result = await db
|
|
38
37
|
* .selectFrom('person')
|
|
39
38
|
* .select(
|
|
40
|
-
* eb => eb.fn.count<number>('id').as('person_count')
|
|
39
|
+
* (eb) => eb.fn.count<number>('id').as('person_count')
|
|
41
40
|
* )
|
|
42
41
|
* .executeTakeFirstOrThrow()
|
|
43
42
|
*
|
|
@@ -80,7 +79,7 @@ export declare class AggregateFunctionBuilder<DB, TB extends keyof DB, O = unkno
|
|
|
80
79
|
*
|
|
81
80
|
* Similar to {@link WhereInterface}'s `where` method.
|
|
82
81
|
*
|
|
83
|
-
* Also see {@link
|
|
82
|
+
* Also see {@link filterWhereRef}.
|
|
84
83
|
*
|
|
85
84
|
* ### Examples
|
|
86
85
|
*
|
|
@@ -119,14 +118,6 @@ export declare class AggregateFunctionBuilder<DB, TB extends keyof DB, O = unkno
|
|
|
119
118
|
filterWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): AggregateFunctionBuilder<DB, TB, O>;
|
|
120
119
|
filterWhere(factory: WhereExpressionFactory<DB, TB>): AggregateFunctionBuilder<DB, TB, O>;
|
|
121
120
|
filterWhere(expression: Expression<any>): AggregateFunctionBuilder<DB, TB, O>;
|
|
122
|
-
/**
|
|
123
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
124
|
-
*/
|
|
125
|
-
filterWhereExists(arg: ExistsExpression<DB, TB>): AggregateFunctionBuilder<DB, TB, O>;
|
|
126
|
-
/**
|
|
127
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
128
|
-
*/
|
|
129
|
-
filterWhereNotExists(arg: ExistsExpression<DB, TB>): AggregateFunctionBuilder<DB, TB, O>;
|
|
130
121
|
/**
|
|
131
122
|
* Adds a `filter` clause with a nested `where` clause after the function, where
|
|
132
123
|
* both sides of the operator are references to columns.
|
|
@@ -160,30 +151,6 @@ export declare class AggregateFunctionBuilder<DB, TB extends keyof DB, O = unkno
|
|
|
160
151
|
* ```
|
|
161
152
|
*/
|
|
162
153
|
filterWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): AggregateFunctionBuilder<DB, TB, O>;
|
|
163
|
-
/**
|
|
164
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
165
|
-
*/
|
|
166
|
-
orFilterWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): AggregateFunctionBuilder<DB, TB, O>;
|
|
167
|
-
/**
|
|
168
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
169
|
-
*/
|
|
170
|
-
orFilterWhere(factory: WhereExpressionFactory<DB, TB>): AggregateFunctionBuilder<DB, TB, O>;
|
|
171
|
-
/**
|
|
172
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
173
|
-
*/
|
|
174
|
-
orFilterWhere(expression: Expression<any>): AggregateFunctionBuilder<DB, TB, O>;
|
|
175
|
-
/**
|
|
176
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
177
|
-
*/
|
|
178
|
-
orFilterWhereExists(arg: ExistsExpression<DB, TB>): AggregateFunctionBuilder<DB, TB, O>;
|
|
179
|
-
/**
|
|
180
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
181
|
-
*/
|
|
182
|
-
orFilterWhereNotExists(arg: ExistsExpression<DB, TB>): AggregateFunctionBuilder<DB, TB, O>;
|
|
183
|
-
/**
|
|
184
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
185
|
-
*/
|
|
186
|
-
orFilterWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): AggregateFunctionBuilder<DB, TB, O>;
|
|
187
154
|
/**
|
|
188
155
|
* Adds an `over` clause (window functions) after the function.
|
|
189
156
|
*
|
|
@@ -193,7 +160,7 @@ export declare class AggregateFunctionBuilder<DB, TB extends keyof DB, O = unkno
|
|
|
193
160
|
* const result = await db
|
|
194
161
|
* .selectFrom('person')
|
|
195
162
|
* .select(
|
|
196
|
-
* eb => eb.fn.avg<number>('age').over().as('average_age')
|
|
163
|
+
* (eb) => eb.fn.avg<number>('age').over().as('average_age')
|
|
197
164
|
* )
|
|
198
165
|
* .execute()
|
|
199
166
|
* ```
|
|
@@ -212,7 +179,7 @@ export declare class AggregateFunctionBuilder<DB, TB extends keyof DB, O = unkno
|
|
|
212
179
|
* const result = await db
|
|
213
180
|
* .selectFrom('person')
|
|
214
181
|
* .select(
|
|
215
|
-
* eb => eb.fn.avg<number>('age').over(
|
|
182
|
+
* (eb) => eb.fn.avg<number>('age').over(
|
|
216
183
|
* ob => ob.partitionBy('last_name').orderBy('first_name', 'asc')
|
|
217
184
|
* ).as('average_age')
|
|
218
185
|
* )
|
|
@@ -272,4 +239,4 @@ export declare class AliasedAggregateFunctionBuilder<DB, TB extends keyof DB, O
|
|
|
272
239
|
export interface AggregateFunctionBuilderProps {
|
|
273
240
|
aggregateFunctionNode: AggregateFunctionNode;
|
|
274
241
|
}
|
|
275
|
-
export
|
|
242
|
+
export type OverBuilderCallback<DB, TB extends keyof DB> = (builder: OverBuilder<DB, TB>) => OverBuilder<DB, TB>;
|
|
@@ -5,8 +5,7 @@ import { AliasNode } from '../operation-node/alias-node.js';
|
|
|
5
5
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
6
6
|
import { preventAwait } from '../util/prevent-await.js';
|
|
7
7
|
import { createOverBuilder } from '../parser/parse-utils.js';
|
|
8
|
-
import { parseReferentialComparison,
|
|
9
|
-
import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
|
|
8
|
+
import { parseReferentialComparison, parseFilter, } from '../parser/binary-operation-parser.js';
|
|
10
9
|
export class AggregateFunctionBuilder {
|
|
11
10
|
#props;
|
|
12
11
|
constructor(props) {
|
|
@@ -26,7 +25,7 @@ export class AggregateFunctionBuilder {
|
|
|
26
25
|
* const result = await db
|
|
27
26
|
* .selectFrom('person')
|
|
28
27
|
* .select(
|
|
29
|
-
* eb => eb.fn.count<number>('id').as('person_count')
|
|
28
|
+
* (eb) => eb.fn.count<number>('id').as('person_count')
|
|
30
29
|
* )
|
|
31
30
|
* .executeTakeFirstOrThrow()
|
|
32
31
|
*
|
|
@@ -74,25 +73,7 @@ export class AggregateFunctionBuilder {
|
|
|
74
73
|
filterWhere(...args) {
|
|
75
74
|
return new AggregateFunctionBuilder({
|
|
76
75
|
...this.#props,
|
|
77
|
-
aggregateFunctionNode: AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode,
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
82
|
-
*/
|
|
83
|
-
filterWhereExists(arg) {
|
|
84
|
-
return new AggregateFunctionBuilder({
|
|
85
|
-
...this.#props,
|
|
86
|
-
aggregateFunctionNode: AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, parseExists(arg)),
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
91
|
-
*/
|
|
92
|
-
filterWhereNotExists(arg) {
|
|
93
|
-
return new AggregateFunctionBuilder({
|
|
94
|
-
...this.#props,
|
|
95
|
-
aggregateFunctionNode: AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, parseNotExists(arg)),
|
|
76
|
+
aggregateFunctionNode: AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, parseFilter(args)),
|
|
96
77
|
});
|
|
97
78
|
}
|
|
98
79
|
/**
|
|
@@ -133,42 +114,6 @@ export class AggregateFunctionBuilder {
|
|
|
133
114
|
aggregateFunctionNode: AggregateFunctionNode.cloneWithFilter(this.#props.aggregateFunctionNode, parseReferentialComparison(lhs, op, rhs)),
|
|
134
115
|
});
|
|
135
116
|
}
|
|
136
|
-
/**
|
|
137
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
138
|
-
*/
|
|
139
|
-
orFilterWhere(...args) {
|
|
140
|
-
return new AggregateFunctionBuilder({
|
|
141
|
-
...this.#props,
|
|
142
|
-
aggregateFunctionNode: AggregateFunctionNode.cloneWithOrFilter(this.#props.aggregateFunctionNode, parseWhere(args)),
|
|
143
|
-
});
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
147
|
-
*/
|
|
148
|
-
orFilterWhereExists(arg) {
|
|
149
|
-
return new AggregateFunctionBuilder({
|
|
150
|
-
...this.#props,
|
|
151
|
-
aggregateFunctionNode: AggregateFunctionNode.cloneWithOrFilter(this.#props.aggregateFunctionNode, parseExists(arg)),
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
/**
|
|
155
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
156
|
-
*/
|
|
157
|
-
orFilterWhereNotExists(arg) {
|
|
158
|
-
return new AggregateFunctionBuilder({
|
|
159
|
-
...this.#props,
|
|
160
|
-
aggregateFunctionNode: AggregateFunctionNode.cloneWithOrFilter(this.#props.aggregateFunctionNode, parseNotExists(arg)),
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
165
|
-
*/
|
|
166
|
-
orFilterWhereRef(lhs, op, rhs) {
|
|
167
|
-
return new AggregateFunctionBuilder({
|
|
168
|
-
...this.#props,
|
|
169
|
-
aggregateFunctionNode: AggregateFunctionNode.cloneWithOrFilter(this.#props.aggregateFunctionNode, parseReferentialComparison(lhs, op, rhs)),
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
117
|
/**
|
|
173
118
|
* Adds an `over` clause (window functions) after the function.
|
|
174
119
|
*
|
|
@@ -178,7 +123,7 @@ export class AggregateFunctionBuilder {
|
|
|
178
123
|
* const result = await db
|
|
179
124
|
* .selectFrom('person')
|
|
180
125
|
* .select(
|
|
181
|
-
* eb => eb.fn.avg<number>('age').over().as('average_age')
|
|
126
|
+
* (eb) => eb.fn.avg<number>('age').over().as('average_age')
|
|
182
127
|
* )
|
|
183
128
|
* .execute()
|
|
184
129
|
* ```
|
|
@@ -197,7 +142,7 @@ export class AggregateFunctionBuilder {
|
|
|
197
142
|
* const result = await db
|
|
198
143
|
* .selectFrom('person')
|
|
199
144
|
* .select(
|
|
200
|
-
* eb => eb.fn.avg<number>('age').over(
|
|
145
|
+
* (eb) => eb.fn.avg<number>('age').over(
|
|
201
146
|
* ob => ob.partitionBy('last_name').orderBy('first_name', 'asc')
|
|
202
147
|
* ).as('average_age')
|
|
203
148
|
* )
|