kysely 0.25.0 → 0.26.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -563
- package/dist/cjs/dialect/database-introspector.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -2
- 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 -4
- 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/expression/expression-builder.d.ts +207 -108
- package/dist/cjs/expression/expression-builder.js +28 -7
- package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
- package/dist/cjs/expression/expression-wrapper.js +70 -2
- package/dist/cjs/helpers/postgres.d.ts +30 -18
- package/dist/cjs/helpers/postgres.js +30 -18
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/kysely.d.ts +23 -13
- package/dist/cjs/kysely.js +13 -9
- package/dist/cjs/migration/file-migration-provider.js +2 -2
- package/dist/cjs/operation-node/alter-column-node.d.ts +2 -3
- package/dist/cjs/operation-node/alter-column-node.js +2 -7
- package/dist/cjs/operation-node/alter-table-node.d.ts +2 -2
- 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 +2 -2
- 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 +8 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +33 -1
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +8 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -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/with-node.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.d.ts +9 -12
- package/dist/cjs/parser/binary-operation-parser.js +40 -119
- 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 +5 -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 +3 -3
- package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +13 -9
- package/dist/cjs/parser/reference-parser.js +28 -16
- package/dist/cjs/parser/returning-parser.d.ts +2 -2
- package/dist/cjs/parser/select-parser.d.ts +10 -10
- package/dist/cjs/parser/table-parser.d.ts +12 -12
- 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 +12 -8
- 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 +11 -11
- package/dist/cjs/query-builder/case-builder.js +2 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +110 -62
- package/dist/cjs/query-builder/delete-query-builder.js +1 -62
- 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 +44 -66
- package/dist/cjs/query-builder/having-interface.d.ts +2 -35
- package/dist/cjs/query-builder/insert-query-builder.d.ts +59 -48
- package/dist/cjs/query-builder/insert-query-builder.js +17 -34
- 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 +194 -77
- 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 +169 -141
- package/dist/cjs/query-builder/select-query-builder.js +27 -136
- package/dist/cjs/query-builder/update-query-builder.d.ts +147 -66
- package/dist/cjs/query-builder/update-query-builder.js +3 -63
- 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 +98 -40
- 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 +8 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +37 -2
- 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 +11 -5
- package/dist/cjs/schema/alter-column-builder.js +19 -21
- 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.js +1 -1
- 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 +1 -2
- package/dist/cjs/util/column-type.d.ts +22 -18
- 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 +4 -4
- package/dist/cjs/util/require-all-props.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +19 -19
- package/dist/esm/dialect/database-introspector.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -2
- 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 -4
- 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/expression/expression-builder.d.ts +207 -108
- package/dist/esm/expression/expression-builder.js +30 -9
- package/dist/esm/expression/expression-wrapper.d.ts +296 -5
- package/dist/esm/expression/expression-wrapper.js +67 -1
- package/dist/esm/helpers/postgres.d.ts +30 -18
- package/dist/esm/helpers/postgres.js +30 -18
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/kysely.d.ts +23 -13
- package/dist/esm/kysely.js +13 -9
- package/dist/esm/operation-node/alter-column-node.d.ts +2 -3
- package/dist/esm/operation-node/alter-column-node.js +2 -7
- package/dist/esm/operation-node/alter-table-node.d.ts +2 -2
- 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 +2 -2
- 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 +8 -0
- package/dist/esm/operation-node/operation-node-transformer.js +33 -1
- package/dist/esm/operation-node/operation-node-visitor.d.ts +8 -0
- package/dist/esm/operation-node/operation-node-visitor.js +4 -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/with-node.d.ts +1 -1
- package/dist/esm/parser/binary-operation-parser.d.ts +9 -12
- package/dist/esm/parser/binary-operation-parser.js +38 -114
- 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 +5 -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 +3 -3
- package/dist/esm/parser/partition-by-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +13 -9
- package/dist/esm/parser/reference-parser.js +26 -15
- package/dist/esm/parser/returning-parser.d.ts +2 -2
- package/dist/esm/parser/select-parser.d.ts +10 -10
- package/dist/esm/parser/table-parser.d.ts +12 -12
- 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 +12 -8
- 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 +11 -11
- package/dist/esm/query-builder/case-builder.js +3 -3
- package/dist/esm/query-builder/delete-query-builder.d.ts +110 -62
- package/dist/esm/query-builder/delete-query-builder.js +2 -63
- 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 +44 -66
- package/dist/esm/query-builder/having-interface.d.ts +2 -35
- package/dist/esm/query-builder/insert-query-builder.d.ts +59 -48
- package/dist/esm/query-builder/insert-query-builder.js +17 -34
- 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 +194 -77
- 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 +169 -141
- package/dist/esm/query-builder/select-query-builder.js +28 -137
- package/dist/esm/query-builder/update-query-builder.d.ts +147 -66
- package/dist/esm/query-builder/update-query-builder.js +4 -64
- 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 +98 -40
- 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 +8 -0
- package/dist/esm/query-compiler/default-query-compiler.js +37 -2
- 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 +11 -5
- package/dist/esm/schema/alter-column-builder.js +19 -21
- 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.js +2 -2
- 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 +1 -2
- package/dist/esm/util/column-type.d.ts +22 -18
- 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 +4 -4
- package/dist/esm/util/require-all-props.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +19 -19
- 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
|
@@ -9,8 +9,7 @@ import { preventAwait } from '../util/prevent-await.js';
|
|
|
9
9
|
import { freeze } from '../util/object-utils.js';
|
|
10
10
|
import { UpdateResult } from './update-result.js';
|
|
11
11
|
import { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';
|
|
12
|
-
import { parseReferentialComparison,
|
|
13
|
-
import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
|
|
12
|
+
import { parseReferentialComparison, parseFilter, } from '../parser/binary-operation-parser.js';
|
|
14
13
|
export class UpdateQueryBuilder {
|
|
15
14
|
#props;
|
|
16
15
|
constructor(props) {
|
|
@@ -19,7 +18,7 @@ export class UpdateQueryBuilder {
|
|
|
19
18
|
where(...args) {
|
|
20
19
|
return new UpdateQueryBuilder({
|
|
21
20
|
...this.#props,
|
|
22
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
21
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseFilter(args)),
|
|
23
22
|
});
|
|
24
23
|
}
|
|
25
24
|
whereRef(lhs, op, rhs) {
|
|
@@ -28,42 +27,6 @@ export class UpdateQueryBuilder {
|
|
|
28
27
|
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialComparison(lhs, op, rhs)),
|
|
29
28
|
});
|
|
30
29
|
}
|
|
31
|
-
orWhere(...args) {
|
|
32
|
-
return new UpdateQueryBuilder({
|
|
33
|
-
...this.#props,
|
|
34
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhere(args)),
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
orWhereRef(lhs, op, rhs) {
|
|
38
|
-
return new UpdateQueryBuilder({
|
|
39
|
-
...this.#props,
|
|
40
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferentialComparison(lhs, op, rhs)),
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
whereExists(arg) {
|
|
44
|
-
return new UpdateQueryBuilder({
|
|
45
|
-
...this.#props,
|
|
46
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExists(arg)),
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
whereNotExists(arg) {
|
|
50
|
-
return new UpdateQueryBuilder({
|
|
51
|
-
...this.#props,
|
|
52
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
orWhereExists(arg) {
|
|
56
|
-
return new UpdateQueryBuilder({
|
|
57
|
-
...this.#props,
|
|
58
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExists(arg)),
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
orWhereNotExists(arg) {
|
|
62
|
-
return new UpdateQueryBuilder({
|
|
63
|
-
...this.#props,
|
|
64
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
30
|
clearWhere() {
|
|
68
31
|
return new UpdateQueryBuilder({
|
|
69
32
|
...this.#props,
|
|
@@ -144,12 +107,6 @@ export class UpdateQueryBuilder {
|
|
|
144
107
|
$call(func) {
|
|
145
108
|
return func(this);
|
|
146
109
|
}
|
|
147
|
-
/**
|
|
148
|
-
* @deprecated Use `$call` instead
|
|
149
|
-
*/
|
|
150
|
-
call(func) {
|
|
151
|
-
return this.$call(func);
|
|
152
|
-
}
|
|
153
110
|
/**
|
|
154
111
|
* Call `func(this)` if `condition` is true.
|
|
155
112
|
*
|
|
@@ -194,12 +151,6 @@ export class UpdateQueryBuilder {
|
|
|
194
151
|
...this.#props,
|
|
195
152
|
});
|
|
196
153
|
}
|
|
197
|
-
/**
|
|
198
|
-
* @deprecated Use `$if` instead
|
|
199
|
-
*/
|
|
200
|
-
if(condition, func) {
|
|
201
|
-
return this.$if(condition, func);
|
|
202
|
-
}
|
|
203
154
|
/**
|
|
204
155
|
* Change the output type of the query.
|
|
205
156
|
*
|
|
@@ -209,12 +160,6 @@ export class UpdateQueryBuilder {
|
|
|
209
160
|
$castTo() {
|
|
210
161
|
return new UpdateQueryBuilder(this.#props);
|
|
211
162
|
}
|
|
212
|
-
/**
|
|
213
|
-
* @deprecated Use `$castTo` instead.
|
|
214
|
-
*/
|
|
215
|
-
castTo() {
|
|
216
|
-
return this.$castTo();
|
|
217
|
-
}
|
|
218
163
|
/**
|
|
219
164
|
* Narrows (parts of) the output type of the query.
|
|
220
165
|
*
|
|
@@ -308,12 +253,6 @@ export class UpdateQueryBuilder {
|
|
|
308
253
|
$assertType() {
|
|
309
254
|
return new UpdateQueryBuilder(this.#props);
|
|
310
255
|
}
|
|
311
|
-
/**
|
|
312
|
-
* @deprecated Use `$assertType` instead.
|
|
313
|
-
*/
|
|
314
|
-
assertType() {
|
|
315
|
-
return new UpdateQueryBuilder(this.#props);
|
|
316
|
-
}
|
|
317
256
|
/**
|
|
318
257
|
* Returns a copy of this UpdateQueryBuilder instance with the given plugin installed.
|
|
319
258
|
*/
|
|
@@ -344,7 +283,8 @@ export class UpdateQueryBuilder {
|
|
|
344
283
|
return [
|
|
345
284
|
new UpdateResult(
|
|
346
285
|
// TODO: remove numUpdatedOrDeletedRows.
|
|
347
|
-
|
|
286
|
+
// TODO: https://github.com/kysely-org/kysely/pull/431#discussion_r1172330899
|
|
287
|
+
result.numAffectedRows ?? result.numUpdatedOrDeletedRows ?? BigInt(0), result.numChangedRows),
|
|
348
288
|
];
|
|
349
289
|
}
|
|
350
290
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare class UpdateResult {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
readonly numUpdatedRows: bigint;
|
|
3
|
+
readonly numChangedRows?: bigint;
|
|
4
|
+
constructor(numUpdatedRows: bigint, numChangedRows: bigint | undefined);
|
|
5
5
|
}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
/// <reference types="./update-result.d.ts" />
|
|
2
2
|
export class UpdateResult {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
return this.#numUpdatedRows;
|
|
3
|
+
numUpdatedRows;
|
|
4
|
+
numChangedRows;
|
|
5
|
+
constructor(numUpdatedRows, numChangedRows) {
|
|
6
|
+
this.numUpdatedRows = numUpdatedRows;
|
|
7
|
+
this.numChangedRows = numChangedRows;
|
|
9
8
|
}
|
|
10
9
|
}
|
|
11
|
-
Object.defineProperty(UpdateResult.prototype, 'numUpdatedRows', {
|
|
12
|
-
enumerable: true,
|
|
13
|
-
});
|
|
@@ -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,71 @@ 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
|
+
* There are two ways to create `OR` expressions. Both are shown in this
|
|
64
|
+
* example:
|
|
65
|
+
*
|
|
66
|
+
* ```ts
|
|
67
|
+
* const persons = await db
|
|
68
|
+
* .selectFrom('person')
|
|
69
|
+
* .selectAll()
|
|
70
|
+
* // 1. Using the `or` method on the expression builder:
|
|
71
|
+
* .where((eb) => eb.or([
|
|
72
|
+
* eb('first_name', '=', 'Jennifer'),
|
|
73
|
+
* eb('first_name', '=', 'Sylvester')
|
|
74
|
+
* ]))
|
|
75
|
+
* // 2. Chaining expressions using the `or` method on the
|
|
76
|
+
* // created expressions:
|
|
77
|
+
* .where((eb) =>
|
|
78
|
+
* eb('last_name', '=', 'Aniston').or('last_name', '=', 'Stallone')
|
|
79
|
+
* )
|
|
80
|
+
* .execute()
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* The generated SQL (PostgreSQL):
|
|
84
|
+
*
|
|
85
|
+
* ```sql
|
|
86
|
+
* select *
|
|
87
|
+
* from "person"
|
|
88
|
+
* where (
|
|
89
|
+
* ("first_name" = $1 or "first_name" = $2)
|
|
90
|
+
* and
|
|
91
|
+
* ("last_name" = $3 or "last_name" = $4)
|
|
92
|
+
* )
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* <!-- siteExample("where", "Conditional where calls", 40) -->
|
|
96
|
+
*
|
|
39
97
|
* You can add expressions conditionally like this:
|
|
40
98
|
*
|
|
41
99
|
* ```ts
|
|
100
|
+
* import { Expression, SqlBool } from 'kysely'
|
|
101
|
+
*
|
|
102
|
+
* const firstName: string | undefined = 'Jennifer'
|
|
103
|
+
* const lastName: string | undefined = 'Aniston'
|
|
104
|
+
* const under18 = true
|
|
105
|
+
* const over60 = true
|
|
106
|
+
*
|
|
42
107
|
* let query = db
|
|
43
108
|
* .selectFrom('person')
|
|
44
109
|
* .selectAll()
|
|
@@ -53,6 +118,23 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
53
118
|
* query = query.where('last_name', '=', lastName)
|
|
54
119
|
* }
|
|
55
120
|
*
|
|
121
|
+
* if (under18 || over60) {
|
|
122
|
+
* // Conditional OR expressions can be added like this.
|
|
123
|
+
* query = query.where((eb) => {
|
|
124
|
+
* const ors: Expression<SqlBool>[] = []
|
|
125
|
+
*
|
|
126
|
+
* if (under18) {
|
|
127
|
+
* ors.push(eb('age', '<', 18))
|
|
128
|
+
* }
|
|
129
|
+
*
|
|
130
|
+
* if (over60) {
|
|
131
|
+
* ors.push(eb('age', '>', 60))
|
|
132
|
+
* }
|
|
133
|
+
*
|
|
134
|
+
* return eb.or(ors)
|
|
135
|
+
* })
|
|
136
|
+
* }
|
|
137
|
+
*
|
|
56
138
|
* const persons = await query.execute()
|
|
57
139
|
* ```
|
|
58
140
|
*
|
|
@@ -105,22 +187,30 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
105
187
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
106
188
|
* ```
|
|
107
189
|
*
|
|
190
|
+
* <!-- siteExample("where", "Complex where clause", 50) -->
|
|
191
|
+
*
|
|
108
192
|
* For complex `where` expressions you can pass in a single callback and
|
|
109
|
-
* use the
|
|
193
|
+
* use the `ExpressionBuilder` to build your expression:
|
|
110
194
|
*
|
|
111
195
|
* ```ts
|
|
196
|
+
* const firstName = 'Jennifer'
|
|
197
|
+
* const maxAge = 60
|
|
198
|
+
*
|
|
112
199
|
* const persons = await db
|
|
113
200
|
* .selectFrom('person')
|
|
114
201
|
* .selectAll('person')
|
|
115
|
-
* .where(({
|
|
202
|
+
* .where(({ eb, or, and, not, exists, selectFrom }) => and([
|
|
116
203
|
* or([
|
|
117
|
-
*
|
|
118
|
-
*
|
|
204
|
+
* eb('first_name', '=', firstName),
|
|
205
|
+
* eb('age', '<', maxAge)
|
|
119
206
|
* ]),
|
|
120
207
|
* not(exists(
|
|
121
|
-
* selectFrom('pet')
|
|
208
|
+
* selectFrom('pet')
|
|
209
|
+
* .select('pet.id')
|
|
210
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
122
211
|
* ))
|
|
123
212
|
* ]))
|
|
213
|
+
* .execute()
|
|
124
214
|
* ```
|
|
125
215
|
*
|
|
126
216
|
* The generated SQL (PostgreSQL):
|
|
@@ -241,38 +331,6 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
241
331
|
* from "person"
|
|
242
332
|
*/
|
|
243
333
|
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
334
|
/**
|
|
277
335
|
* Clears all where expressions from the query.
|
|
278
336
|
*
|
|
@@ -293,4 +351,4 @@ export interface WhereInterface<DB, TB extends keyof DB> {
|
|
|
293
351
|
*/
|
|
294
352
|
clearWhere(): WhereInterface<DB, TB>;
|
|
295
353
|
}
|
|
296
|
-
export
|
|
354
|
+
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
|
});
|
|
@@ -83,6 +83,10 @@ import { UsingNode } from '../operation-node/using-node.js';
|
|
|
83
83
|
import { FunctionNode } from '../operation-node/function-node.js';
|
|
84
84
|
import { CaseNode } from '../operation-node/case-node.js';
|
|
85
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';
|
|
86
90
|
export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
|
|
87
91
|
#private;
|
|
88
92
|
protected get numParameters(): number;
|
|
@@ -174,6 +178,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
174
178
|
protected visitFunction(node: FunctionNode): void;
|
|
175
179
|
protected visitCase(node: CaseNode): void;
|
|
176
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;
|
|
177
185
|
protected append(str: string): void;
|
|
178
186
|
protected appendValue(parameter: unknown): void;
|
|
179
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(_) {
|
|
@@ -953,6 +955,39 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
953
955
|
this.visitNode(node.result);
|
|
954
956
|
}
|
|
955
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
|
+
}
|
|
956
991
|
append(str) {
|
|
957
992
|
this.#sql += str;
|
|
958
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)
|
|
@@ -3,8 +3,8 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
|
|
|
3
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(
|
|
6
|
+
#private;
|
|
7
|
+
constructor(column: string);
|
|
8
8
|
setDataType(dataType: DataTypeExpression): AlteredColumnBuilder;
|
|
9
9
|
setDefault(value: DefaultValueExpression): AlteredColumnBuilder;
|
|
10
10
|
dropDefault(): 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;
|
|
@@ -3,34 +3,24 @@ import { AlterColumnNode } from '../operation-node/alter-column-node.js';
|
|
|
3
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: parseDataTypeExpression(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, {
|