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,9 +1,8 @@
|
|
|
1
1
|
import { Expression } from '../expression/expression.js';
|
|
2
2
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
3
3
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
4
|
-
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
5
4
|
import { SqlBool } from '../util/type-utils.js';
|
|
6
|
-
import {
|
|
5
|
+
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
7
6
|
export interface WhereInterface<DB, TB extends keyof DB> {
|
|
8
7
|
/**
|
|
9
8
|
* Adds a `where` expression to the query.
|
|
@@ -14,6 +13,10 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
14
13
|
*
|
|
15
14
|
* ### Examples
|
|
16
15
|
*
|
|
16
|
+
* <!-- siteExample("where", "Simple where clause", 10) -->
|
|
17
|
+
*
|
|
18
|
+
* `where` method calls are combined with `AND`:
|
|
19
|
+
*
|
|
17
20
|
* ```ts
|
|
18
21
|
* const person = await db
|
|
19
22
|
* .selectFrom('person')
|
|
@@ -36,9 +39,65 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
36
39
|
* sql`your operator`
|
|
37
40
|
* ```
|
|
38
41
|
*
|
|
42
|
+
* <!-- siteExample("where", "Where in", 20) -->
|
|
43
|
+
*
|
|
44
|
+
* Find multiple items using a list of identifiers:
|
|
45
|
+
*
|
|
46
|
+
* ```ts
|
|
47
|
+
* const persons = await db
|
|
48
|
+
* .selectFrom('person')
|
|
49
|
+
* .selectAll()
|
|
50
|
+
* .where('id', 'in', ['1', '2', '3'])
|
|
51
|
+
* .execute()
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* The generated SQL (PostgreSQL):
|
|
55
|
+
*
|
|
56
|
+
* ```sql
|
|
57
|
+
* select * from "person" where "id" in ($1, $2, $3)
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* <!-- siteExample("where", "OR where", 30) -->
|
|
61
|
+
*
|
|
62
|
+
* To combine conditions using `OR`, you can use the expression builder:
|
|
63
|
+
*
|
|
64
|
+
* ```ts
|
|
65
|
+
* const persons = await db
|
|
66
|
+
* .selectFrom('person')
|
|
67
|
+
* .selectAll()
|
|
68
|
+
* .where(({ or, and, cmpr }) => or([
|
|
69
|
+
* and([
|
|
70
|
+
* cmpr('first_name', '=', 'Jennifer'),
|
|
71
|
+
* cmpr('last_name', '=', 'Aniston')
|
|
72
|
+
* ]),
|
|
73
|
+
* and([
|
|
74
|
+
* cmpr('first_name', '=', 'Sylvester'),
|
|
75
|
+
* cmpr('last_name', '=', 'Stallone')
|
|
76
|
+
* ])
|
|
77
|
+
* ]))
|
|
78
|
+
* .execute()
|
|
79
|
+
* ```
|
|
80
|
+
*
|
|
81
|
+
* The generated SQL (PostgreSQL):
|
|
82
|
+
*
|
|
83
|
+
* ```sql
|
|
84
|
+
* select *
|
|
85
|
+
* from "person"
|
|
86
|
+
* where (
|
|
87
|
+
* ("first_name" = $1 AND "last_name" = $2)
|
|
88
|
+
* OR
|
|
89
|
+
* ("first_name" = $3 AND "last_name" = $4)
|
|
90
|
+
* )
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* <!-- siteExample("where", "Conditional where calls", 40) -->
|
|
94
|
+
*
|
|
39
95
|
* You can add expressions conditionally like this:
|
|
40
96
|
*
|
|
41
97
|
* ```ts
|
|
98
|
+
* const firstName: string | undefined = 'Jennifer'
|
|
99
|
+
* const lastName: string | undefined = 'Aniston'
|
|
100
|
+
*
|
|
42
101
|
* let query = db
|
|
43
102
|
* .selectFrom('person')
|
|
44
103
|
* .selectAll()
|
|
@@ -105,22 +164,30 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
105
164
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
106
165
|
* ```
|
|
107
166
|
*
|
|
167
|
+
* <!-- siteExample("where", "Complex where clause", 50) -->
|
|
168
|
+
*
|
|
108
169
|
* For complex `where` expressions you can pass in a single callback and
|
|
109
|
-
* use the
|
|
170
|
+
* use the `ExpressionBuilder` to build your expression:
|
|
110
171
|
*
|
|
111
172
|
* ```ts
|
|
173
|
+
* const firstName = 'Jennifer'
|
|
174
|
+
* const maxAge = 60
|
|
175
|
+
*
|
|
112
176
|
* const persons = await db
|
|
113
177
|
* .selectFrom('person')
|
|
114
178
|
* .selectAll('person')
|
|
115
|
-
* .where(({ cmpr, or, and, not, exists, selectFrom
|
|
179
|
+
* .where(({ cmpr, or, and, not, exists, selectFrom }) => and([
|
|
116
180
|
* or([
|
|
117
181
|
* cmpr('first_name', '=', firstName),
|
|
118
182
|
* cmpr('age', '<', maxAge)
|
|
119
183
|
* ]),
|
|
120
184
|
* not(exists(
|
|
121
|
-
* selectFrom('pet')
|
|
185
|
+
* selectFrom('pet')
|
|
186
|
+
* .select('pet.id')
|
|
187
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
122
188
|
* ))
|
|
123
189
|
* ]))
|
|
190
|
+
* .execute()
|
|
124
191
|
* ```
|
|
125
192
|
*
|
|
126
193
|
* The generated SQL (PostgreSQL):
|
|
@@ -241,38 +308,6 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
241
308
|
* from "person"
|
|
242
309
|
*/
|
|
243
310
|
whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
|
|
244
|
-
/**
|
|
245
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
246
|
-
*/
|
|
247
|
-
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
|
|
248
|
-
/**
|
|
249
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
250
|
-
*/
|
|
251
|
-
orWhere(factory: WhereExpressionFactory<DB, TB>): WhereInterface<DB, TB>;
|
|
252
|
-
/**
|
|
253
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
254
|
-
*/
|
|
255
|
-
orWhere(expression: Expression<any>): WhereInterface<DB, TB>;
|
|
256
|
-
/**
|
|
257
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
258
|
-
*/
|
|
259
|
-
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
|
|
260
|
-
/**
|
|
261
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
262
|
-
*/
|
|
263
|
-
whereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
|
|
264
|
-
/**
|
|
265
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
266
|
-
*/
|
|
267
|
-
whereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
|
|
268
|
-
/**
|
|
269
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
270
|
-
*/
|
|
271
|
-
orWhereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
|
|
272
|
-
/**
|
|
273
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
274
|
-
*/
|
|
275
|
-
orWhereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
|
|
276
311
|
/**
|
|
277
312
|
* Clears all where expressions from the query.
|
|
278
313
|
*
|
|
@@ -293,4 +328,4 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
293
328
|
*/
|
|
294
329
|
clearWhere(): WhereInterface<DB, TB>;
|
|
295
330
|
}
|
|
296
|
-
export
|
|
331
|
+
export type WhereExpressionFactory<DB, TB extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => Expression<SqlBool>;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
3
3
|
import { freeze } from '../util/object-utils.js';
|
|
4
4
|
export const CompiledQuery = freeze({
|
|
5
|
-
raw(sql) {
|
|
5
|
+
raw(sql, parameters = []) {
|
|
6
6
|
return freeze({
|
|
7
7
|
sql,
|
|
8
8
|
query: RawNode.createWithSql(sql),
|
|
9
|
-
parameters: freeze(
|
|
9
|
+
parameters: freeze(parameters),
|
|
10
10
|
});
|
|
11
11
|
},
|
|
12
12
|
});
|
|
@@ -81,6 +81,12 @@ import { BinaryOperationNode } from '../operation-node/binary-operation-node.js'
|
|
|
81
81
|
import { UnaryOperationNode } from '../operation-node/unary-operation-node.js';
|
|
82
82
|
import { UsingNode } from '../operation-node/using-node.js';
|
|
83
83
|
import { FunctionNode } from '../operation-node/function-node.js';
|
|
84
|
+
import { CaseNode } from '../operation-node/case-node.js';
|
|
85
|
+
import { WhenNode } from '../operation-node/when-node.js';
|
|
86
|
+
import { JSONReferenceNode } from '../operation-node/json-reference-node.js';
|
|
87
|
+
import { JSONPathNode } from '../operation-node/json-path-node.js';
|
|
88
|
+
import { JSONPathLegNode } from '../operation-node/json-path-leg-node.js';
|
|
89
|
+
import { JSONOperatorChainNode } from '../operation-node/json-operator-chain-node.js';
|
|
84
90
|
export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
|
|
85
91
|
#private;
|
|
86
92
|
protected get numParameters(): number;
|
|
@@ -170,6 +176,12 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
170
176
|
protected isMinusOperator(node: OperationNode): node is OperatorNode;
|
|
171
177
|
protected visitUsing(node: UsingNode): void;
|
|
172
178
|
protected visitFunction(node: FunctionNode): void;
|
|
179
|
+
protected visitCase(node: CaseNode): void;
|
|
180
|
+
protected visitWhen(node: WhenNode): void;
|
|
181
|
+
protected visitJSONReference(node: JSONReferenceNode): void;
|
|
182
|
+
protected visitJSONPath(node: JSONPathNode): void;
|
|
183
|
+
protected visitJSONPathLeg(node: JSONPathLegNode): void;
|
|
184
|
+
protected visitJSONOperatorChain(node: JSONOperatorChainNode): void;
|
|
173
185
|
protected append(str: string): void;
|
|
174
186
|
protected appendValue(parameter: unknown): void;
|
|
175
187
|
protected getLeftIdentifierWrapper(): string;
|
|
@@ -228,8 +228,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
228
228
|
this.visitNode(node.alias);
|
|
229
229
|
}
|
|
230
230
|
visitReference(node) {
|
|
231
|
-
|
|
232
|
-
|
|
231
|
+
if (node.table) {
|
|
232
|
+
this.visitNode(node.table);
|
|
233
|
+
this.append('.');
|
|
234
|
+
}
|
|
233
235
|
this.visitNode(node.column);
|
|
234
236
|
}
|
|
235
237
|
visitSelectAll(_) {
|
|
@@ -546,9 +548,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
546
548
|
this.append(' using ');
|
|
547
549
|
this.visitNode(node.using);
|
|
548
550
|
}
|
|
549
|
-
if (node.
|
|
551
|
+
if (node.columns) {
|
|
550
552
|
this.append(' (');
|
|
551
|
-
this.
|
|
553
|
+
this.compileList(node.columns);
|
|
552
554
|
this.append(')');
|
|
553
555
|
}
|
|
554
556
|
if (node.where) {
|
|
@@ -867,7 +869,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
867
869
|
if (node.distinct) {
|
|
868
870
|
this.append('distinct ');
|
|
869
871
|
}
|
|
870
|
-
this.
|
|
872
|
+
this.compileList(node.aggregated);
|
|
871
873
|
this.append(')');
|
|
872
874
|
if (node.filter) {
|
|
873
875
|
this.append(' filter(');
|
|
@@ -926,6 +928,66 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
926
928
|
this.compileList(node.arguments);
|
|
927
929
|
this.append(')');
|
|
928
930
|
}
|
|
931
|
+
visitCase(node) {
|
|
932
|
+
this.append('case');
|
|
933
|
+
if (node.value) {
|
|
934
|
+
this.append(' ');
|
|
935
|
+
this.visitNode(node.value);
|
|
936
|
+
}
|
|
937
|
+
if (node.when) {
|
|
938
|
+
this.append(' ');
|
|
939
|
+
this.compileList(node.when, ' ');
|
|
940
|
+
}
|
|
941
|
+
if (node.else) {
|
|
942
|
+
this.append(' else ');
|
|
943
|
+
this.visitNode(node.else);
|
|
944
|
+
}
|
|
945
|
+
this.append(' end');
|
|
946
|
+
if (node.isStatement) {
|
|
947
|
+
this.append(' case');
|
|
948
|
+
}
|
|
949
|
+
}
|
|
950
|
+
visitWhen(node) {
|
|
951
|
+
this.append('when ');
|
|
952
|
+
this.visitNode(node.condition);
|
|
953
|
+
if (node.result) {
|
|
954
|
+
this.append(' then ');
|
|
955
|
+
this.visitNode(node.result);
|
|
956
|
+
}
|
|
957
|
+
}
|
|
958
|
+
visitJSONReference(node) {
|
|
959
|
+
this.visitNode(node.reference);
|
|
960
|
+
this.visitNode(node.traversal);
|
|
961
|
+
}
|
|
962
|
+
visitJSONPath(node) {
|
|
963
|
+
if (node.inOperator) {
|
|
964
|
+
this.visitNode(node.inOperator);
|
|
965
|
+
}
|
|
966
|
+
this.append("'$");
|
|
967
|
+
for (const pathLeg of node.pathLegs) {
|
|
968
|
+
this.visitNode(pathLeg);
|
|
969
|
+
}
|
|
970
|
+
this.append("'");
|
|
971
|
+
}
|
|
972
|
+
visitJSONPathLeg(node) {
|
|
973
|
+
const isArrayLocation = node.type === 'ArrayLocation';
|
|
974
|
+
this.append(isArrayLocation ? '[' : '.');
|
|
975
|
+
this.append(String(node.value));
|
|
976
|
+
if (isArrayLocation) {
|
|
977
|
+
this.append(']');
|
|
978
|
+
}
|
|
979
|
+
}
|
|
980
|
+
visitJSONOperatorChain(node) {
|
|
981
|
+
for (let i = 0, len = node.values.length; i < len; i++) {
|
|
982
|
+
if (i === len - 1) {
|
|
983
|
+
this.visitNode(node.operator);
|
|
984
|
+
}
|
|
985
|
+
else {
|
|
986
|
+
this.append('->');
|
|
987
|
+
}
|
|
988
|
+
this.visitNode(node.values[i]);
|
|
989
|
+
}
|
|
990
|
+
}
|
|
929
991
|
append(str) {
|
|
930
992
|
this.#sql += str;
|
|
931
993
|
}
|
|
@@ -12,7 +12,7 @@ import { DropViewNode } from '../operation-node/drop-view-node.js';
|
|
|
12
12
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
13
13
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
14
14
|
import { CompiledQuery } from './compiled-query.js';
|
|
15
|
-
export
|
|
15
|
+
export type RootOperationNode = QueryNode | CreateTableNode | CreateIndexNode | CreateSchemaNode | CreateViewNode | DropTableNode | DropIndexNode | DropSchemaNode | DropViewNode | AlterTableNode | RawNode | CreateTypeNode | DropTypeNode;
|
|
16
16
|
/**
|
|
17
17
|
* a `QueryCompiler` compiles a query expressed as a tree of `OperationNodes` into SQL.
|
|
18
18
|
*/
|
|
@@ -201,12 +201,14 @@ export declare class QueryCreator<DB> {
|
|
|
201
201
|
*
|
|
202
202
|
* ### Examples
|
|
203
203
|
*
|
|
204
|
-
*
|
|
204
|
+
* <!-- siteExample("delete", "Single row", 10) -->
|
|
205
|
+
*
|
|
206
|
+
* Delete a single row:
|
|
205
207
|
*
|
|
206
208
|
* ```ts
|
|
207
209
|
* const result = await db
|
|
208
210
|
* .deleteFrom('person')
|
|
209
|
-
* .where('person.id', '=', 1)
|
|
211
|
+
* .where('person.id', '=', '1')
|
|
210
212
|
* .executeTakeFirst()
|
|
211
213
|
*
|
|
212
214
|
* console.log(result.numDeletedRows)
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { AlterColumnNode } from '../operation-node/alter-column-node.js';
|
|
2
|
-
import { ColumnDataType } from '../operation-node/data-type-node.js';
|
|
3
2
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
|
+
import { DataTypeExpression } from '../parser/data-type-parser.js';
|
|
4
4
|
import { DefaultValueExpression } from '../parser/default-value-parser.js';
|
|
5
5
|
export declare class AlterColumnBuilder {
|
|
6
|
-
|
|
7
|
-
constructor(
|
|
8
|
-
setDataType(dataType:
|
|
6
|
+
#private;
|
|
7
|
+
constructor(column: string);
|
|
8
|
+
setDataType(dataType: DataTypeExpression): AlteredColumnBuilder;
|
|
9
9
|
setDefault(value: DefaultValueExpression): AlteredColumnBuilder;
|
|
10
10
|
dropDefault(): AlteredColumnBuilder;
|
|
11
11
|
setNotNull(): AlteredColumnBuilder;
|
|
@@ -17,7 +17,7 @@ export declare class AlterColumnBuilder {
|
|
|
17
17
|
$call<T>(func: (qb: this) => T): T;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
* Allows us to force consumers to do
|
|
20
|
+
* Allows us to force consumers to do exactly one alteration to a column.
|
|
21
21
|
*
|
|
22
22
|
* Basically, deny the following:
|
|
23
23
|
*
|
|
@@ -25,9 +25,15 @@ export declare class AlterColumnBuilder {
|
|
|
25
25
|
* db.schema.alterTable('person').alterColumn('age', (ac) => ac)
|
|
26
26
|
* ```
|
|
27
27
|
*
|
|
28
|
+
* ```ts
|
|
29
|
+
* db.schema.alterTable('person').alterColumn('age', (ac) => ac.dropNotNull().setNotNull())
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
28
32
|
* Which would now throw a compilation error, instead of a runtime error.
|
|
29
33
|
*/
|
|
30
|
-
export declare class AlteredColumnBuilder
|
|
34
|
+
export declare class AlteredColumnBuilder implements OperationNodeSource {
|
|
35
|
+
#private;
|
|
36
|
+
constructor(alterColumnNode: AlterColumnNode);
|
|
31
37
|
toOperationNode(): AlterColumnNode;
|
|
32
38
|
}
|
|
33
|
-
export
|
|
39
|
+
export type AlterColumnBuilderCallback = (builder: AlterColumnBuilder) => AlteredColumnBuilder;
|
|
@@ -1,36 +1,26 @@
|
|
|
1
1
|
/// <reference types="./alter-column-builder.d.ts" />
|
|
2
2
|
import { AlterColumnNode } from '../operation-node/alter-column-node.js';
|
|
3
|
-
import {
|
|
3
|
+
import { parseDataTypeExpression, } from '../parser/data-type-parser.js';
|
|
4
4
|
import { parseDefaultValueExpression, } from '../parser/default-value-parser.js';
|
|
5
5
|
export class AlterColumnBuilder {
|
|
6
|
-
|
|
7
|
-
constructor(
|
|
8
|
-
this
|
|
6
|
+
#column;
|
|
7
|
+
constructor(column) {
|
|
8
|
+
this.#column = column;
|
|
9
9
|
}
|
|
10
10
|
setDataType(dataType) {
|
|
11
|
-
return new AlteredColumnBuilder(AlterColumnNode.
|
|
12
|
-
dataType: DataTypeNode.create(dataType),
|
|
13
|
-
}));
|
|
11
|
+
return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dataType', parseDataTypeExpression(dataType)));
|
|
14
12
|
}
|
|
15
13
|
setDefault(value) {
|
|
16
|
-
return new AlteredColumnBuilder(AlterColumnNode.
|
|
17
|
-
setDefault: parseDefaultValueExpression(value),
|
|
18
|
-
}));
|
|
14
|
+
return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'setDefault', parseDefaultValueExpression(value)));
|
|
19
15
|
}
|
|
20
16
|
dropDefault() {
|
|
21
|
-
return new AlteredColumnBuilder(AlterColumnNode.
|
|
22
|
-
dropDefault: true,
|
|
23
|
-
}));
|
|
17
|
+
return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dropDefault', true));
|
|
24
18
|
}
|
|
25
19
|
setNotNull() {
|
|
26
|
-
return new AlteredColumnBuilder(AlterColumnNode.
|
|
27
|
-
setNotNull: true,
|
|
28
|
-
}));
|
|
20
|
+
return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'setNotNull', true));
|
|
29
21
|
}
|
|
30
22
|
dropNotNull() {
|
|
31
|
-
return new AlteredColumnBuilder(AlterColumnNode.
|
|
32
|
-
dropNotNull: true,
|
|
33
|
-
}));
|
|
23
|
+
return new AlteredColumnBuilder(AlterColumnNode.create(this.#column, 'dropNotNull', true));
|
|
34
24
|
}
|
|
35
25
|
/**
|
|
36
26
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
@@ -41,7 +31,7 @@ export class AlterColumnBuilder {
|
|
|
41
31
|
}
|
|
42
32
|
}
|
|
43
33
|
/**
|
|
44
|
-
* Allows us to force consumers to do
|
|
34
|
+
* Allows us to force consumers to do exactly one alteration to a column.
|
|
45
35
|
*
|
|
46
36
|
* Basically, deny the following:
|
|
47
37
|
*
|
|
@@ -49,10 +39,18 @@ export class AlterColumnBuilder {
|
|
|
49
39
|
* db.schema.alterTable('person').alterColumn('age', (ac) => ac)
|
|
50
40
|
* ```
|
|
51
41
|
*
|
|
42
|
+
* ```ts
|
|
43
|
+
* db.schema.alterTable('person').alterColumn('age', (ac) => ac.dropNotNull().setNotNull())
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
52
46
|
* Which would now throw a compilation error, instead of a runtime error.
|
|
53
47
|
*/
|
|
54
|
-
export class AlteredColumnBuilder
|
|
48
|
+
export class AlteredColumnBuilder {
|
|
49
|
+
#alterColumnNode;
|
|
50
|
+
constructor(alterColumnNode) {
|
|
51
|
+
this.#alterColumnNode = alterColumnNode;
|
|
52
|
+
}
|
|
55
53
|
toOperationNode() {
|
|
56
|
-
return this
|
|
54
|
+
return this.#alterColumnNode;
|
|
57
55
|
}
|
|
58
56
|
}
|
|
@@ -55,10 +55,6 @@ export declare class AlterTableBuilder implements ColumnAlteringInterface {
|
|
|
55
55
|
* See {@link CreateTableBuilder.$call}
|
|
56
56
|
*/
|
|
57
57
|
$call<T>(func: (qb: this) => T): T;
|
|
58
|
-
/**
|
|
59
|
-
* @deprecated Use `$call` instead
|
|
60
|
-
*/
|
|
61
|
-
call<T>(func: (qb: this) => T): T;
|
|
62
58
|
}
|
|
63
59
|
export interface AlterTableBuilderProps {
|
|
64
60
|
readonly queryId: QueryId;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/// <reference types="./alter-table-builder.d.ts" />
|
|
2
2
|
import { AddColumnNode } from '../operation-node/add-column-node.js';
|
|
3
|
-
import { AlterColumnNode } from '../operation-node/alter-column-node.js';
|
|
4
3
|
import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|
5
4
|
import { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';
|
|
6
5
|
import { DropColumnNode } from '../operation-node/drop-column-node.js';
|
|
@@ -48,7 +47,7 @@ export class AlterTableBuilder {
|
|
|
48
47
|
});
|
|
49
48
|
}
|
|
50
49
|
alterColumn(column, alteration) {
|
|
51
|
-
const builder = alteration(new AlterColumnBuilder(
|
|
50
|
+
const builder = alteration(new AlterColumnBuilder(column));
|
|
52
51
|
return new AlterTableColumnAlteringBuilder({
|
|
53
52
|
...this.#props,
|
|
54
53
|
node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode()),
|
|
@@ -131,12 +130,6 @@ export class AlterTableBuilder {
|
|
|
131
130
|
$call(func) {
|
|
132
131
|
return func(this);
|
|
133
132
|
}
|
|
134
|
-
/**
|
|
135
|
-
* @deprecated Use `$call` instead
|
|
136
|
-
*/
|
|
137
|
-
call(func) {
|
|
138
|
-
return this.$call(func);
|
|
139
|
-
}
|
|
140
133
|
}
|
|
141
134
|
export class AlterTableColumnAlteringBuilder {
|
|
142
135
|
#props;
|
|
@@ -144,7 +137,7 @@ export class AlterTableColumnAlteringBuilder {
|
|
|
144
137
|
this.#props = freeze(props);
|
|
145
138
|
}
|
|
146
139
|
alterColumn(column, alteration) {
|
|
147
|
-
const builder = alteration(new AlterColumnBuilder(
|
|
140
|
+
const builder = alteration(new AlterColumnBuilder(column));
|
|
148
141
|
return new AlterTableColumnAlteringBuilder({
|
|
149
142
|
...this.#props,
|
|
150
143
|
node: AlterTableNode.cloneWithColumnAlteration(this.#props.node, builder.toOperationNode()),
|
|
@@ -212,4 +212,4 @@ export declare class ColumnDefinitionBuilder implements OperationNodeSource {
|
|
|
212
212
|
$call<T>(func: (qb: this) => T): T;
|
|
213
213
|
toOperationNode(): ColumnDefinitionNode;
|
|
214
214
|
}
|
|
215
|
-
export
|
|
215
|
+
export type ColumnDefinitionBuilderCallback = (builder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/// <reference types="./column-definition-builder.d.ts" />
|
|
2
2
|
import { CheckConstraintNode } from '../operation-node/check-constraint-node.js';
|
|
3
|
-
import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
4
3
|
import { ReferencesNode, } from '../operation-node/references-node.js';
|
|
5
4
|
import { SelectAllNode } from '../operation-node/select-all-node.js';
|
|
6
5
|
import { parseStringReference } from '../parser/reference-parser.js';
|
|
@@ -49,7 +48,7 @@ export class ColumnDefinitionBuilder {
|
|
|
49
48
|
*/
|
|
50
49
|
references(ref) {
|
|
51
50
|
const references = parseStringReference(ref);
|
|
52
|
-
if (!
|
|
51
|
+
if (!references.table || SelectAllNode.is(references.column)) {
|
|
53
52
|
throw new Error(`invalid call references('${ref}'). The reference must have format table.column or schema.table.column`);
|
|
54
53
|
}
|
|
55
54
|
return new ColumnDefinitionBuilder(ColumnDefinitionNode.cloneWith(this.#node, {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { CreateIndexNode, IndexType } from '../operation-node/create-index-node.js';
|
|
2
2
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
|
+
import { ExtractColumnNameFromOrderedColumnName, OrderedColumnName } from '../parser/reference-parser.js';
|
|
3
4
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
4
5
|
import { Compilable } from '../util/compilable.js';
|
|
5
6
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
@@ -7,7 +8,7 @@ import { QueryId } from '../util/query-id.js';
|
|
|
7
8
|
import { Expression } from '../expression/expression.js';
|
|
8
9
|
import { ComparisonOperatorExpression } from '../parser/binary-operation-parser.js';
|
|
9
10
|
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
10
|
-
import { SqlBool } from '../util/type-utils.js';
|
|
11
|
+
import { ShallowRecord, SqlBool } from '../util/type-utils.js';
|
|
11
12
|
export declare class CreateIndexBuilder<C = never> implements OperationNodeSource, Compilable {
|
|
12
13
|
#private;
|
|
13
14
|
constructor(props: CreateIndexBuilderProps);
|
|
@@ -26,17 +27,52 @@ export declare class CreateIndexBuilder<C = never> implements OperationNodeSourc
|
|
|
26
27
|
*/
|
|
27
28
|
on(table: string): CreateIndexBuilder<C>;
|
|
28
29
|
/**
|
|
29
|
-
*
|
|
30
|
+
* Adds a column to the index.
|
|
30
31
|
*
|
|
31
|
-
* Also see
|
|
32
|
+
* Also see {@link columns} for adding multiple columns at once or {@link expression}
|
|
33
|
+
* for specifying an arbitrary expression.
|
|
34
|
+
*
|
|
35
|
+
* ### Examples
|
|
36
|
+
*
|
|
37
|
+
* ```ts
|
|
38
|
+
* await db.schema
|
|
39
|
+
* .createIndex('person_first_name_and_age_index')
|
|
40
|
+
* .on('person')
|
|
41
|
+
* .column('first_name')
|
|
42
|
+
* .column('age desc')
|
|
43
|
+
* .execute()
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* The generated SQL (PostgreSQL):
|
|
47
|
+
*
|
|
48
|
+
* ```sql
|
|
49
|
+
* create index "person_first_name_and_age_index" on "person" ("first_name", "age" desc)
|
|
50
|
+
* ```
|
|
32
51
|
*/
|
|
33
|
-
column<CL extends string>(column: CL): CreateIndexBuilder<C | CL
|
|
52
|
+
column<CL extends string>(column: OrderedColumnName<CL>): CreateIndexBuilder<C | ExtractColumnNameFromOrderedColumnName<CL>>;
|
|
34
53
|
/**
|
|
35
54
|
* Specifies a list of columns for the index.
|
|
36
55
|
*
|
|
37
|
-
* Also see
|
|
56
|
+
* Also see {@link column} for adding a single column or {@link expression} for
|
|
57
|
+
* specifying an arbitrary expression.
|
|
58
|
+
*
|
|
59
|
+
* ### Examples
|
|
60
|
+
*
|
|
61
|
+
* ```ts
|
|
62
|
+
* await db.schema
|
|
63
|
+
* .createIndex('person_first_name_and_age_index')
|
|
64
|
+
* .on('person')
|
|
65
|
+
* .columns(['first_name', 'age desc'])
|
|
66
|
+
* .execute()
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* The generated SQL (PostgreSQL):
|
|
70
|
+
*
|
|
71
|
+
* ```sql
|
|
72
|
+
* create index "person_first_name_and_age_index" on "person" ("first_name", "age" desc)
|
|
73
|
+
* ```
|
|
38
74
|
*/
|
|
39
|
-
columns<CL extends string>(columns: CL[]): CreateIndexBuilder<C | CL
|
|
75
|
+
columns<CL extends string>(columns: OrderedColumnName<CL>[]): CreateIndexBuilder<C | ExtractColumnNameFromOrderedColumnName<CL>>;
|
|
40
76
|
/**
|
|
41
77
|
* Specifies an arbitrary expression for the index.
|
|
42
78
|
*
|
|
@@ -51,6 +87,12 @@ export declare class CreateIndexBuilder<C = never> implements OperationNodeSourc
|
|
|
51
87
|
* .expression(sql`first_name COLLATE "fi_FI"`)
|
|
52
88
|
* .execute()
|
|
53
89
|
* ```
|
|
90
|
+
*
|
|
91
|
+
* The generated SQL (PostgreSQL):
|
|
92
|
+
*
|
|
93
|
+
* ```sql
|
|
94
|
+
* create index "person_first_name_index" on "person" (first_name COLLATE "fi_FI")
|
|
95
|
+
* ```
|
|
54
96
|
*/
|
|
55
97
|
expression(expression: Expression<any>): CreateIndexBuilder<C>;
|
|
56
98
|
/**
|
|
@@ -90,7 +132,7 @@ export declare class CreateIndexBuilder<C = never> implements OperationNodeSourc
|
|
|
90
132
|
* Parameters are always sent as literals due to database restrictions.
|
|
91
133
|
*/
|
|
92
134
|
where(lhs: C | Expression<any>, op: ComparisonOperatorExpression, rhs: unknown): CreateIndexBuilder<C>;
|
|
93
|
-
where(factory: (qb: ExpressionBuilder<
|
|
135
|
+
where(factory: (qb: ExpressionBuilder<ShallowRecord<string, ShallowRecord<C & string, any>>, string>) => Expression<SqlBool>): CreateIndexBuilder<C>;
|
|
94
136
|
where(expression: Expression<any>): CreateIndexBuilder<C>;
|
|
95
137
|
/**
|
|
96
138
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|