kysely 0.22.0 → 0.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +70 -0
- package/README.md +25 -2
- package/dist/cjs/dialect/database-introspector.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +6 -3
- package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/cjs/dialect/postgres/postgres-driver.js +7 -2
- package/dist/cjs/dialect/postgres/postgres-introspector.js +8 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +4 -3
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/cjs/driver/database-connection.d.ts +6 -2
- package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +2 -3
- package/dist/cjs/dynamic/dynamic-reference-builder.js +1 -1
- package/dist/cjs/expression/expression.d.ts +100 -0
- package/dist/cjs/expression/expression.js +16 -0
- package/dist/cjs/index.d.ts +10 -6
- package/dist/cjs/index.js +8 -2
- package/dist/cjs/migration/file-migration-provider.js +5 -3
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +7 -4
- package/dist/cjs/operation-node/aggregate-function-node.js +17 -0
- package/dist/cjs/operation-node/alias-node.d.ts +3 -11
- package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
- package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
- package/dist/cjs/operation-node/alter-table-node.js +9 -1
- package/dist/cjs/operation-node/and-node.d.ts +3 -4
- package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
- package/dist/cjs/operation-node/binary-operation-node.js +20 -0
- package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
- package/dist/cjs/operation-node/column-definition-node.js +16 -0
- package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
- package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
- package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
- package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -2
- package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
- package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-type-node.js +1 -2
- package/dist/cjs/operation-node/explain-node.d.ts +2 -4
- package/dist/cjs/operation-node/explain-node.js +1 -1
- package/dist/cjs/operation-node/from-node.d.ts +3 -4
- package/dist/cjs/operation-node/generated-node.d.ts +2 -3
- package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
- package/dist/cjs/operation-node/having-node.d.ts +3 -4
- package/dist/cjs/operation-node/having-node.js +4 -4
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -5
- package/dist/cjs/operation-node/join-node.d.ts +5 -9
- package/dist/cjs/operation-node/join-node.js +6 -6
- package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
- package/dist/cjs/operation-node/on-conflict-node.js +12 -12
- package/dist/cjs/operation-node/on-node.d.ts +3 -4
- package/dist/cjs/operation-node/on-node.js +4 -4
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -2
- package/dist/cjs/operation-node/operation-node-transformer.js +22 -15
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -2
- package/dist/cjs/operation-node/operation-node-visitor.js +2 -1
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +5 -3
- package/dist/cjs/operation-node/operator-node.js +3 -5
- package/dist/cjs/operation-node/or-node.d.ts +3 -4
- package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
- package/dist/cjs/operation-node/parens-node.d.ts +2 -3
- package/dist/cjs/operation-node/partition-by-item-node.d.ts +3 -4
- package/dist/cjs/operation-node/query-node.d.ts +2 -3
- package/dist/cjs/operation-node/query-node.js +6 -6
- package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
- package/dist/cjs/operation-node/select-modifier-node.js +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -6
- package/dist/cjs/operation-node/select-query-node.js +10 -10
- package/dist/cjs/operation-node/selection-node.d.ts +2 -3
- package/dist/cjs/operation-node/set-operation-node.d.ts +2 -5
- package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
- package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
- package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
- package/dist/cjs/operation-node/unary-operation-node.js +19 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/value-list-node.d.ts +2 -9
- package/dist/cjs/operation-node/where-node.d.ts +3 -4
- package/dist/cjs/operation-node/where-node.js +4 -4
- package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
- package/dist/cjs/parser/binary-operation-parser.js +99 -0
- package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
- package/dist/cjs/parser/coalesce-parser.js +11 -0
- package/dist/cjs/parser/data-type-parser.d.ts +5 -5
- package/dist/cjs/parser/default-value-parser.d.ts +4 -5
- package/dist/cjs/parser/default-value-parser.js +2 -2
- package/dist/cjs/parser/expression-parser.d.ts +10 -0
- package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
- package/dist/cjs/parser/identifier-parser.d.ts +2 -0
- package/dist/cjs/parser/identifier-parser.js +23 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
- package/dist/cjs/parser/insert-values-parser.js +2 -2
- package/dist/cjs/parser/join-parser.js +2 -2
- package/dist/cjs/parser/order-by-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +14 -14
- package/dist/cjs/parser/reference-parser.js +12 -9
- package/dist/cjs/parser/select-parser.d.ts +6 -7
- package/dist/cjs/parser/select-parser.js +2 -2
- package/dist/cjs/parser/set-operation-parser.d.ts +2 -4
- package/dist/cjs/parser/table-parser.d.ts +11 -12
- package/dist/cjs/parser/table-parser.js +2 -2
- package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
- package/dist/cjs/parser/unary-operation-parser.js +17 -0
- package/dist/cjs/parser/update-set-parser.d.ts +1 -1
- package/dist/cjs/parser/value-parser.d.ts +5 -9
- package/dist/cjs/parser/value-parser.js +4 -4
- package/dist/cjs/parser/with-parser.d.ts +3 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +245 -14
- package/dist/cjs/query-builder/aggregate-function-builder.js +164 -12
- package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
- package/dist/cjs/query-builder/delete-query-builder.js +19 -16
- package/dist/cjs/query-builder/function-module.d.ts +123 -22
- package/dist/cjs/query-builder/function-module.js +91 -48
- package/dist/cjs/query-builder/having-interface.d.ts +9 -8
- package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
- package/dist/cjs/query-builder/insert-query-builder.js +11 -9
- package/dist/cjs/query-builder/insert-result.d.ts +8 -1
- package/dist/cjs/query-builder/insert-result.js +12 -1
- package/dist/cjs/query-builder/join-builder.d.ts +9 -8
- package/dist/cjs/query-builder/join-builder.js +10 -9
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
- package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
- package/dist/cjs/query-builder/select-query-builder.d.ts +82 -51
- package/dist/cjs/query-builder/select-query-builder.js +39 -37
- package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
- package/dist/cjs/query-builder/update-query-builder.js +19 -16
- package/dist/cjs/query-builder/where-interface.d.ts +12 -11
- package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +5 -3
- package/dist/cjs/query-compiler/default-query-compiler.js +37 -33
- package/dist/cjs/query-executor/query-executor-base.js +16 -1
- package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
- package/dist/cjs/raw-builder/raw-builder.js +24 -14
- package/dist/cjs/raw-builder/sql.d.ts +4 -4
- package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
- package/dist/cjs/schema/alter-column-builder.js +55 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
- package/dist/cjs/schema/alter-table-builder.js +63 -278
- package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
- package/dist/cjs/schema/column-definition-builder.js +189 -0
- package/dist/cjs/schema/create-index-builder.d.ts +3 -3
- package/dist/cjs/schema/create-index-builder.js +7 -7
- package/dist/cjs/schema/create-schema-builder.d.ts +1 -1
- package/dist/cjs/schema/create-schema-builder.js +2 -2
- package/dist/cjs/schema/create-table-builder.d.ts +39 -6
- package/dist/cjs/schema/create-table-builder.js +47 -12
- package/dist/cjs/schema/create-type-builder.d.ts +1 -1
- package/dist/cjs/schema/create-type-builder.js +2 -2
- package/dist/cjs/schema/create-view-builder.d.ts +4 -3
- package/dist/cjs/schema/create-view-builder.js +7 -7
- package/dist/cjs/schema/drop-index-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-index-builder.js +4 -4
- package/dist/cjs/schema/drop-schema-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-schema-builder.js +3 -3
- package/dist/cjs/schema/drop-table-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-table-builder.js +3 -3
- package/dist/cjs/schema/drop-type-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-type-builder.js +2 -2
- package/dist/cjs/schema/drop-view-builder.d.ts +1 -1
- package/dist/cjs/schema/drop-view-builder.js +4 -4
- package/dist/cjs/schema/schema.d.ts +2 -2
- package/dist/cjs/schema/schema.js +14 -13
- package/dist/cjs/util/compilable.d.ts +2 -2
- package/dist/cjs/util/explainable.d.ts +2 -2
- package/dist/cjs/util/infer-result.d.ts +46 -0
- package/dist/cjs/util/infer-result.js +2 -0
- package/dist/cjs/util/log-once.d.ts +5 -0
- package/dist/cjs/util/log-once.js +16 -0
- package/dist/cjs/util/object-utils.d.ts +1 -0
- package/dist/cjs/util/object-utils.js +5 -1
- package/dist/cjs/util/type-utils.d.ts +3 -17
- package/dist/esm/dialect/database-introspector.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
- package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/driver/database-connection.d.ts +6 -2
- package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
- package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
- package/dist/esm/expression/expression.d.ts +100 -0
- package/dist/esm/expression/expression.js +12 -0
- package/dist/esm/index.d.ts +10 -6
- package/dist/esm/index.js +6 -2
- package/dist/esm/migration/file-migration-provider.js +5 -3
- package/dist/esm/operation-node/aggregate-function-node.d.ts +7 -4
- package/dist/esm/operation-node/aggregate-function-node.js +17 -0
- package/dist/esm/operation-node/alias-node.d.ts +3 -11
- package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
- package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
- package/dist/esm/operation-node/alter-table-node.js +9 -1
- package/dist/esm/operation-node/and-node.d.ts +3 -4
- package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
- package/dist/esm/operation-node/binary-operation-node.js +18 -0
- package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
- package/dist/esm/operation-node/column-definition-node.js +16 -0
- package/dist/esm/operation-node/column-update-node.d.ts +2 -3
- package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
- package/dist/esm/operation-node/create-index-node.d.ts +1 -3
- package/dist/esm/operation-node/create-table-node.d.ts +4 -5
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -2
- package/dist/esm/operation-node/default-value-node.d.ts +2 -4
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
- package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-type-node.js +1 -2
- package/dist/esm/operation-node/explain-node.d.ts +2 -4
- package/dist/esm/operation-node/explain-node.js +1 -1
- package/dist/esm/operation-node/from-node.d.ts +3 -4
- package/dist/esm/operation-node/generated-node.d.ts +2 -3
- package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
- package/dist/esm/operation-node/having-node.d.ts +3 -4
- package/dist/esm/operation-node/having-node.js +4 -4
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -5
- package/dist/esm/operation-node/join-node.d.ts +5 -9
- package/dist/esm/operation-node/join-node.js +6 -6
- package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
- package/dist/esm/operation-node/on-conflict-node.js +12 -12
- package/dist/esm/operation-node/on-node.d.ts +3 -4
- package/dist/esm/operation-node/on-node.js +4 -4
- package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -2
- package/dist/esm/operation-node/operation-node-transformer.js +22 -15
- package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -2
- package/dist/esm/operation-node/operation-node-visitor.js +2 -1
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +5 -3
- package/dist/esm/operation-node/operator-node.js +2 -4
- package/dist/esm/operation-node/or-node.d.ts +3 -4
- package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
- package/dist/esm/operation-node/parens-node.d.ts +2 -3
- package/dist/esm/operation-node/partition-by-item-node.d.ts +3 -4
- package/dist/esm/operation-node/query-node.d.ts +2 -3
- package/dist/esm/operation-node/query-node.js +6 -6
- package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
- package/dist/esm/operation-node/select-modifier-node.js +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +5 -6
- package/dist/esm/operation-node/select-query-node.js +10 -10
- package/dist/esm/operation-node/selection-node.d.ts +2 -3
- package/dist/esm/operation-node/set-operation-node.d.ts +2 -5
- package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
- package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
- package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
- package/dist/esm/operation-node/unary-operation-node.js +17 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/value-list-node.d.ts +2 -9
- package/dist/esm/operation-node/where-node.d.ts +3 -4
- package/dist/esm/operation-node/where-node.js +4 -4
- package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
- package/dist/esm/parser/binary-operation-parser.js +92 -0
- package/dist/esm/parser/coalesce-parser.d.ts +4 -0
- package/dist/esm/parser/coalesce-parser.js +8 -0
- package/dist/esm/parser/data-type-parser.d.ts +5 -5
- package/dist/esm/parser/default-value-parser.d.ts +4 -5
- package/dist/esm/parser/default-value-parser.js +2 -2
- package/dist/esm/parser/expression-parser.d.ts +10 -0
- package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
- package/dist/esm/parser/identifier-parser.d.ts +2 -0
- package/dist/esm/parser/identifier-parser.js +20 -0
- package/dist/esm/parser/insert-values-parser.d.ts +1 -1
- package/dist/esm/parser/insert-values-parser.js +2 -2
- package/dist/esm/parser/join-parser.js +2 -2
- package/dist/esm/parser/order-by-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +14 -14
- package/dist/esm/parser/reference-parser.js +10 -8
- package/dist/esm/parser/select-parser.d.ts +6 -7
- package/dist/esm/parser/select-parser.js +2 -2
- package/dist/esm/parser/set-operation-parser.d.ts +2 -4
- package/dist/esm/parser/table-parser.d.ts +11 -12
- package/dist/esm/parser/table-parser.js +2 -2
- package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
- package/dist/esm/parser/unary-operation-parser.js +13 -0
- package/dist/esm/parser/update-set-parser.d.ts +1 -1
- package/dist/esm/parser/value-parser.d.ts +5 -9
- package/dist/esm/parser/value-parser.js +4 -4
- package/dist/esm/parser/with-parser.d.ts +3 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +245 -14
- package/dist/esm/query-builder/aggregate-function-builder.js +164 -12
- package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
- package/dist/esm/query-builder/delete-query-builder.js +19 -16
- package/dist/esm/query-builder/function-module.d.ts +123 -22
- package/dist/esm/query-builder/function-module.js +92 -49
- package/dist/esm/query-builder/having-interface.d.ts +9 -8
- package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
- package/dist/esm/query-builder/insert-query-builder.js +11 -9
- package/dist/esm/query-builder/insert-result.d.ts +8 -1
- package/dist/esm/query-builder/insert-result.js +12 -1
- package/dist/esm/query-builder/join-builder.d.ts +9 -8
- package/dist/esm/query-builder/join-builder.js +10 -9
- package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
- package/dist/esm/query-builder/on-conflict-builder.js +18 -17
- package/dist/esm/query-builder/select-query-builder.d.ts +82 -51
- package/dist/esm/query-builder/select-query-builder.js +38 -36
- package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
- package/dist/esm/query-builder/update-query-builder.js +19 -16
- package/dist/esm/query-builder/where-interface.d.ts +12 -11
- package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +5 -3
- package/dist/esm/query-compiler/default-query-compiler.js +38 -34
- package/dist/esm/query-executor/query-executor-base.js +16 -1
- package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
- package/dist/esm/raw-builder/raw-builder.js +23 -14
- package/dist/esm/raw-builder/sql.d.ts +4 -4
- package/dist/esm/schema/alter-column-builder.d.ts +28 -0
- package/dist/esm/schema/alter-column-builder.js +51 -0
- package/dist/esm/schema/alter-table-builder.d.ts +39 -341
- package/dist/esm/schema/alter-table-builder.js +59 -272
- package/dist/esm/schema/column-definition-builder.d.ts +43 -155
- package/dist/esm/schema/column-definition-builder.js +189 -0
- package/dist/esm/schema/create-index-builder.d.ts +3 -3
- package/dist/esm/schema/create-index-builder.js +7 -7
- package/dist/esm/schema/create-schema-builder.d.ts +1 -1
- package/dist/esm/schema/create-schema-builder.js +2 -2
- package/dist/esm/schema/create-table-builder.d.ts +39 -6
- package/dist/esm/schema/create-table-builder.js +47 -12
- package/dist/esm/schema/create-type-builder.d.ts +1 -1
- package/dist/esm/schema/create-type-builder.js +2 -2
- package/dist/esm/schema/create-view-builder.d.ts +4 -3
- package/dist/esm/schema/create-view-builder.js +7 -7
- package/dist/esm/schema/drop-index-builder.d.ts +1 -1
- package/dist/esm/schema/drop-index-builder.js +4 -4
- package/dist/esm/schema/drop-schema-builder.d.ts +1 -1
- package/dist/esm/schema/drop-schema-builder.js +3 -3
- package/dist/esm/schema/drop-table-builder.d.ts +1 -1
- package/dist/esm/schema/drop-table-builder.js +3 -3
- package/dist/esm/schema/drop-type-builder.d.ts +1 -1
- package/dist/esm/schema/drop-type-builder.js +2 -2
- package/dist/esm/schema/drop-view-builder.d.ts +1 -1
- package/dist/esm/schema/drop-view-builder.js +4 -4
- package/dist/esm/schema/schema.d.ts +2 -2
- package/dist/esm/schema/schema.js +14 -13
- package/dist/esm/util/compilable.d.ts +2 -2
- package/dist/esm/util/explainable.d.ts +2 -2
- package/dist/esm/util/infer-result.d.ts +46 -0
- package/dist/esm/util/infer-result.js +2 -0
- package/dist/esm/util/log-once.d.ts +5 -0
- package/dist/esm/util/log-once.js +13 -0
- package/dist/esm/util/object-utils.d.ts +1 -0
- package/dist/esm/util/object-utils.js +3 -0
- package/dist/esm/util/type-utils.d.ts +3 -17
- package/package.json +1 -1
- package/dist/cjs/operation-node/filter-node.d.ts +0 -18
- package/dist/cjs/operation-node/filter-node.js +0 -20
- package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -18
- package/dist/cjs/parser/complex-expression-parser.d.ts +0 -12
- package/dist/cjs/parser/filter-parser.d.ts +0 -24
- package/dist/cjs/parser/filter-parser.js +0 -109
- package/dist/esm/operation-node/filter-node.d.ts +0 -18
- package/dist/esm/operation-node/filter-node.js +0 -18
- package/dist/esm/operation-node/operation-node-utils.d.ts +0 -18
- package/dist/esm/operation-node/operation-node-utils.js +0 -2
- package/dist/esm/parser/complex-expression-parser.d.ts +0 -12
- package/dist/esm/parser/filter-parser.d.ts +0 -24
- package/dist/esm/parser/filter-parser.js +0 -100
|
@@ -3,10 +3,9 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
|
3
3
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
4
4
|
import { TableExpression } from '../parser/table-parser.js';
|
|
5
5
|
import { SelectExpression } from '../parser/select-parser.js';
|
|
6
|
-
import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
|
|
7
6
|
import { ReturningRow } from '../parser/returning-parser.js';
|
|
8
7
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
9
|
-
import {
|
|
8
|
+
import { MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
|
|
10
9
|
import { Compilable } from '../util/compilable.js';
|
|
11
10
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
12
11
|
import { QueryId } from '../util/query-id.js';
|
|
@@ -18,10 +17,11 @@ import { DeleteResult } from './delete-result.js';
|
|
|
18
17
|
import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
|
|
19
18
|
import { Selectable } from '../util/column-type.js';
|
|
20
19
|
import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
|
|
21
|
-
import { AliasedQueryBuilder } from './select-query-builder.js';
|
|
22
|
-
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
23
20
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
24
|
-
|
|
21
|
+
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
22
|
+
import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
|
|
23
|
+
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
24
|
+
export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable {
|
|
25
25
|
#private;
|
|
26
26
|
constructor(props: DeleteQueryBuilderProps);
|
|
27
27
|
/**
|
|
@@ -208,16 +208,16 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
208
208
|
* .execute()
|
|
209
209
|
* ```
|
|
210
210
|
*/
|
|
211
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
211
|
+
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): DeleteQueryBuilder<DB, TB, O>;
|
|
212
212
|
where(grouper: WhereGrouper<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
213
|
-
where(
|
|
213
|
+
where(expression: Expression<any>): DeleteQueryBuilder<DB, TB, O>;
|
|
214
214
|
/**
|
|
215
215
|
* Adds a `where` clause where both sides of the operator are references
|
|
216
216
|
* to columns.
|
|
217
217
|
*
|
|
218
218
|
* The normal `where` method treats the right hand side argument as a
|
|
219
219
|
* value by default. `whereRef` treats it as a column reference. This method is
|
|
220
|
-
* expecially useful with joins and
|
|
220
|
+
* expecially useful with joins and correlated subqueries.
|
|
221
221
|
*
|
|
222
222
|
* ### Examples
|
|
223
223
|
*
|
|
@@ -262,7 +262,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
262
262
|
* ) as "pet_name"
|
|
263
263
|
* from "person"
|
|
264
264
|
*/
|
|
265
|
-
whereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
265
|
+
whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
266
266
|
/**
|
|
267
267
|
* Adds an `or where` clause to the query. Otherwise works just like {@link where}.
|
|
268
268
|
*
|
|
@@ -326,15 +326,15 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
326
326
|
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
327
327
|
* ```
|
|
328
328
|
*/
|
|
329
|
-
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
329
|
+
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): DeleteQueryBuilder<DB, TB, O>;
|
|
330
330
|
orWhere(grouper: WhereGrouper<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
331
|
-
orWhere(
|
|
331
|
+
orWhere(expression: Expression<any>): DeleteQueryBuilder<DB, TB, O>;
|
|
332
332
|
/**
|
|
333
333
|
* Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
|
|
334
334
|
*
|
|
335
335
|
* Also see {@link orWhere} and {@link where}.
|
|
336
336
|
*/
|
|
337
|
-
orWhereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
337
|
+
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
338
338
|
/**
|
|
339
339
|
* Adds a `where exists` clause to the query.
|
|
340
340
|
*
|
|
@@ -401,11 +401,11 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
401
401
|
*/
|
|
402
402
|
whereNotExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
403
403
|
/**
|
|
404
|
-
* Just like {@link whereExists} but creates
|
|
404
|
+
* Just like {@link whereExists} but creates an `or exists` clause.
|
|
405
405
|
*/
|
|
406
406
|
orWhereExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
407
407
|
/**
|
|
408
|
-
* Just like {@link whereExists} but creates
|
|
408
|
+
* Just like {@link whereExists} but creates an `or not exists` clause.
|
|
409
409
|
*/
|
|
410
410
|
orWhereNotExists(arg: ExistsExpression<DB, TB>): DeleteQueryBuilder<DB, TB, O>;
|
|
411
411
|
/**
|
|
@@ -724,7 +724,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
724
724
|
*/
|
|
725
725
|
withPlugin(plugin: KyselyPlugin): DeleteQueryBuilder<DB, TB, O>;
|
|
726
726
|
toOperationNode(): DeleteQueryNode;
|
|
727
|
-
compile(): CompiledQuery
|
|
727
|
+
compile(): CompiledQuery<O>;
|
|
728
728
|
/**
|
|
729
729
|
* Executes the query and returns an array of rows.
|
|
730
730
|
*
|
|
@@ -761,29 +761,29 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
761
761
|
* explain format=json delete from `person` where `id` = ?
|
|
762
762
|
* ```
|
|
763
763
|
*/
|
|
764
|
-
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?:
|
|
764
|
+
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<ER[]>;
|
|
765
765
|
}
|
|
766
766
|
export interface DeleteQueryBuilderProps {
|
|
767
767
|
readonly queryId: QueryId;
|
|
768
768
|
readonly queryNode: DeleteQueryNode;
|
|
769
769
|
readonly executor: QueryExecutor;
|
|
770
770
|
}
|
|
771
|
-
export declare type DeleteQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? DeleteQueryBuilder<DB, TB | TE, O> : TE extends
|
|
771
|
+
export declare type DeleteQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? DeleteQueryBuilder<DB, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : never;
|
|
772
772
|
declare type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? DeleteQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : DeleteQueryBuilder<DB & Record<A, R>, TB | A, O>;
|
|
773
773
|
declare type InnerJoinedDB<DB, A extends string, R> = {
|
|
774
774
|
[C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
|
|
775
775
|
};
|
|
776
|
-
export declare type DeleteQueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends
|
|
776
|
+
export declare type DeleteQueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : never;
|
|
777
777
|
declare type LeftJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? DeleteQueryBuilder<LeftJoinedDB<DB, A, R>, TB | A, O> : DeleteQueryBuilder<DB & Record<A, Nullable<R>>, TB | A, O>;
|
|
778
778
|
declare type LeftJoinedDB<DB, A extends keyof any, R> = {
|
|
779
779
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
|
|
780
780
|
};
|
|
781
|
-
export declare type DeleteQueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends
|
|
781
|
+
export declare type DeleteQueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : never;
|
|
782
782
|
declare type RightJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = DeleteQueryBuilder<RightJoinedDB<DB, TB, A, R>, TB | A, O>;
|
|
783
783
|
declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
|
|
784
784
|
[C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
785
785
|
};
|
|
786
|
-
export declare type DeleteQueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends
|
|
786
|
+
export declare type DeleteQueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : never;
|
|
787
787
|
declare type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = DeleteQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, TB | A, O>;
|
|
788
788
|
declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
|
|
789
789
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/// <reference types="./delete-query-builder.d.ts" />
|
|
2
2
|
import { parseJoin, } from '../parser/join-parser.js';
|
|
3
3
|
import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
|
|
4
|
-
import { parseExistFilter, parseReferenceFilter, parseWhereFilter, parseNotExistFilter, } from '../parser/filter-parser.js';
|
|
5
4
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
6
5
|
import { preventAwait } from '../util/prevent-await.js';
|
|
7
6
|
import { freeze } from '../util/object-utils.js';
|
|
@@ -11,6 +10,8 @@ import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
|
|
|
11
10
|
import { LimitNode } from '../operation-node/limit-node.js';
|
|
12
11
|
import { parseOrderBy, } from '../parser/order-by-parser.js';
|
|
13
12
|
import { ExplainNode } from '../operation-node/explain-node.js';
|
|
13
|
+
import { parseReferentialFilter, parseWhere, } from '../parser/binary-operation-parser.js';
|
|
14
|
+
import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
|
|
14
15
|
export class DeleteQueryBuilder {
|
|
15
16
|
#props;
|
|
16
17
|
constructor(props) {
|
|
@@ -19,49 +20,49 @@ export class DeleteQueryBuilder {
|
|
|
19
20
|
where(...args) {
|
|
20
21
|
return new DeleteQueryBuilder({
|
|
21
22
|
...this.#props,
|
|
22
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
23
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhere(args)),
|
|
23
24
|
});
|
|
24
25
|
}
|
|
25
26
|
whereRef(lhs, op, rhs) {
|
|
26
27
|
return new DeleteQueryBuilder({
|
|
27
28
|
...this.#props,
|
|
28
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
29
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
29
30
|
});
|
|
30
31
|
}
|
|
31
32
|
orWhere(...args) {
|
|
32
33
|
return new DeleteQueryBuilder({
|
|
33
34
|
...this.#props,
|
|
34
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
35
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhere(args)),
|
|
35
36
|
});
|
|
36
37
|
}
|
|
37
38
|
orWhereRef(lhs, op, rhs) {
|
|
38
39
|
return new DeleteQueryBuilder({
|
|
39
40
|
...this.#props,
|
|
40
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
41
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
41
42
|
});
|
|
42
43
|
}
|
|
43
44
|
whereExists(arg) {
|
|
44
45
|
return new DeleteQueryBuilder({
|
|
45
46
|
...this.#props,
|
|
46
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
47
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExists(arg)),
|
|
47
48
|
});
|
|
48
49
|
}
|
|
49
50
|
whereNotExists(arg) {
|
|
50
51
|
return new DeleteQueryBuilder({
|
|
51
52
|
...this.#props,
|
|
52
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
53
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
53
54
|
});
|
|
54
55
|
}
|
|
55
56
|
orWhereExists(arg) {
|
|
56
57
|
return new DeleteQueryBuilder({
|
|
57
58
|
...this.#props,
|
|
58
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
59
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExists(arg)),
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
62
|
orWhereNotExists(arg) {
|
|
62
63
|
return new DeleteQueryBuilder({
|
|
63
64
|
...this.#props,
|
|
64
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
65
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
65
66
|
});
|
|
66
67
|
}
|
|
67
68
|
innerJoin(...args) {
|
|
@@ -261,15 +262,17 @@ export class DeleteQueryBuilder {
|
|
|
261
262
|
* Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
|
|
262
263
|
*/
|
|
263
264
|
async execute() {
|
|
264
|
-
const
|
|
265
|
-
const query =
|
|
266
|
-
const result = await this.#props.executor.executeQuery(
|
|
265
|
+
const compiledQuery = this.compile();
|
|
266
|
+
const query = compiledQuery.query;
|
|
267
|
+
const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
|
|
267
268
|
if (this.#props.executor.adapter.supportsReturning && query.returning) {
|
|
268
269
|
return result.rows;
|
|
269
270
|
}
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
271
|
+
return [
|
|
272
|
+
new DeleteResult(
|
|
273
|
+
// TODO: remove numUpdatedOrDeletedRows.
|
|
274
|
+
(result.numAffectedRows ?? result.numUpdatedOrDeletedRows)),
|
|
275
|
+
];
|
|
273
276
|
}
|
|
274
277
|
/**
|
|
275
278
|
* Executes the query and returns the first result or undefined if
|
|
@@ -313,7 +316,7 @@ export class DeleteQueryBuilder {
|
|
|
313
316
|
async explain(format, options) {
|
|
314
317
|
const builder = new DeleteQueryBuilder({
|
|
315
318
|
...this.#props,
|
|
316
|
-
queryNode: DeleteQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options)),
|
|
319
|
+
queryNode: DeleteQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options?.toOperationNode())),
|
|
317
320
|
});
|
|
318
321
|
return await builder.execute();
|
|
319
322
|
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
2
|
+
import { CoalesceReferenceExpressionList } from '../parser/coalesce-parser.js';
|
|
3
|
+
import { ExtractTypeFromReferenceExpression, SimpleReferenceExpression, ReferenceExpression, StringReference } from '../parser/reference-parser.js';
|
|
4
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
5
|
+
import { Equals, IsNever } from '../util/type-utils.js';
|
|
2
6
|
import { AggregateFunctionBuilder } from './aggregate-function-builder.js';
|
|
3
7
|
/**
|
|
4
8
|
* Helpers for type safe SQL function calls.
|
|
@@ -39,13 +43,13 @@ export declare class FunctionModule<DB, TB extends keyof DB> {
|
|
|
39
43
|
*
|
|
40
44
|
* If this is used in a `select` statement the type of the selected expression
|
|
41
45
|
* will be `number | string` by default. This is because Kysely can't know the
|
|
42
|
-
* type the db driver outputs. Sometimes the output can be larger than the
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
+
* type the db driver outputs. Sometimes the output can be larger than the largest
|
|
47
|
+
* javascript number and a string is returned instead. Most drivers allow you
|
|
48
|
+
* to configure the output type of large numbers and Kysely can't know if you've
|
|
49
|
+
* done so.
|
|
46
50
|
*
|
|
47
|
-
* You can specify the output type of the expression by providing
|
|
48
|
-
* the
|
|
51
|
+
* You can specify the output type of the expression by providing the type as
|
|
52
|
+
* the first type argument:
|
|
49
53
|
*
|
|
50
54
|
* ```ts
|
|
51
55
|
* const { avg } = db.fn
|
|
@@ -54,17 +58,65 @@ export declare class FunctionModule<DB, TB extends keyof DB> {
|
|
|
54
58
|
* .select(avg<number>('price').as('avg_price'))
|
|
55
59
|
* .execute()
|
|
56
60
|
* ```
|
|
61
|
+
*
|
|
62
|
+
* Sometimes a null is returned, e.g. when row count is 0, and no `group by`
|
|
63
|
+
* was used. It is highly recommended to include null in the output type union
|
|
64
|
+
* and handle null values in post-execute code, or wrap the function with a `coalesce`
|
|
65
|
+
* function.
|
|
66
|
+
*
|
|
67
|
+
* ```ts
|
|
68
|
+
* const { avg } = db.fn
|
|
69
|
+
*
|
|
70
|
+
* db.selectFrom('toy')
|
|
71
|
+
* .select(avg<number | null>('price').as('avg_price'))
|
|
72
|
+
* .execute()
|
|
73
|
+
* ```
|
|
74
|
+
*/
|
|
75
|
+
avg<O extends number | string | null = number | string, C extends SimpleReferenceExpression<DB, TB> = SimpleReferenceExpression<DB, TB>>(column: C): AggregateFunctionBuilder<DB, TB, O>;
|
|
76
|
+
/**
|
|
77
|
+
* Calls the `coalesce` function for given arguments.
|
|
78
|
+
*
|
|
79
|
+
* This function returns the first non-null value from left to right, commonly
|
|
80
|
+
* used to provide a default scalar for nullable columns or functions.
|
|
81
|
+
*
|
|
82
|
+
* ```ts
|
|
83
|
+
* const { coalesce, max } = db.fn
|
|
84
|
+
*
|
|
85
|
+
* db.selectFrom('person')
|
|
86
|
+
* .select(coalesce(max('age'), sql<number>`0`).as('max_age'))
|
|
87
|
+
* .where('first_name', '=', 'Jennifer')
|
|
88
|
+
* .execute()
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* The generated SQL (postgres):
|
|
92
|
+
*
|
|
93
|
+
* ```sql
|
|
94
|
+
* select coalesce(max("age"), 0) as "max_age" from "person" where "first_name" = $1
|
|
95
|
+
* ```
|
|
96
|
+
*
|
|
97
|
+
* If this is used in a `select` statement the type of the selected expression
|
|
98
|
+
* is inferred in the same manner that the function computes. A union of arguments'
|
|
99
|
+
* types - if a non-nullable argument exists, it stops there (ignoring any further
|
|
100
|
+
* arguments' types) and exludes null from the final union type.
|
|
101
|
+
*
|
|
102
|
+
* Examples:
|
|
103
|
+
*
|
|
104
|
+
* `(string | null, number | null)` is inferred as `string | number | null`.
|
|
105
|
+
*
|
|
106
|
+
* `(string | null, number, Date | null)` is inferred as `string | number`.
|
|
107
|
+
*
|
|
108
|
+
* `(number, string | null)` is inferred as `number`.
|
|
57
109
|
*/
|
|
58
|
-
|
|
110
|
+
coalesce<V extends ReferenceExpression<DB, TB>, OV extends ReferenceExpression<DB, TB>[]>(value: V, ...otherValues: OV): RawBuilder<CoalesceReferenceExpressionList<DB, TB, [V, ...OV]>>;
|
|
59
111
|
/**
|
|
60
112
|
* Calls the `count` function for the column given as the argument.
|
|
61
113
|
*
|
|
62
114
|
* If this is used in a `select` statement the type of the selected expression
|
|
63
|
-
* will be `number | string | bigint` by default. This is because Kysely
|
|
64
|
-
* know the type the db driver outputs. Sometimes the output can be larger
|
|
65
|
-
* the largest javascript number and a string is returned instead. Most
|
|
66
|
-
* allow you to configure the output type of large numbers and Kysely
|
|
67
|
-
* know if you've done so.
|
|
115
|
+
* will be `number | string | bigint` by default. This is because Kysely
|
|
116
|
+
* can't know the type the db driver outputs. Sometimes the output can be larger
|
|
117
|
+
* than the largest javascript number and a string is returned instead. Most
|
|
118
|
+
* drivers allow you to configure the output type of large numbers and Kysely
|
|
119
|
+
* can't know if you've done so.
|
|
68
120
|
*
|
|
69
121
|
* You can specify the output type of the expression by providing
|
|
70
122
|
* the type as the first type argument:
|
|
@@ -85,10 +137,13 @@ export declare class FunctionModule<DB, TB extends keyof DB> {
|
|
|
85
137
|
* .execute()
|
|
86
138
|
* ```
|
|
87
139
|
*/
|
|
88
|
-
count<O extends number | string | bigint, C extends
|
|
140
|
+
count<O extends number | string | bigint, C extends SimpleReferenceExpression<DB, TB> = SimpleReferenceExpression<DB, TB>>(column: C): AggregateFunctionBuilder<DB, TB, O>;
|
|
89
141
|
/**
|
|
90
142
|
* Calls the `max` function for the column given as the argument.
|
|
91
143
|
*
|
|
144
|
+
* If this is used in a `select` statement the type of the selected expression
|
|
145
|
+
* will be the referenced column's type.
|
|
146
|
+
*
|
|
92
147
|
* ### Examples
|
|
93
148
|
*
|
|
94
149
|
* ```ts
|
|
@@ -98,11 +153,28 @@ export declare class FunctionModule<DB, TB extends keyof DB> {
|
|
|
98
153
|
* .select(max('price').as('max_price'))
|
|
99
154
|
* .execute()
|
|
100
155
|
* ```
|
|
156
|
+
*
|
|
157
|
+
* Sometimes a null is returned, e.g. when row count is 0, and no `group by`
|
|
158
|
+
* was used. It is highly recommended to include null in the output type union
|
|
159
|
+
* and handle null values in post-execute code, or wrap the function with a `coalesce`
|
|
160
|
+
* function.
|
|
161
|
+
*
|
|
162
|
+
* ```ts
|
|
163
|
+
* const { max } = db.fn
|
|
164
|
+
*
|
|
165
|
+
* db.selectFrom('toy')
|
|
166
|
+
* .select(max<number | null, 'price'>('price').as('max_price'))
|
|
167
|
+
* .execute()
|
|
168
|
+
* ```
|
|
101
169
|
*/
|
|
102
|
-
max<C extends StringReference<DB, TB>>(column:
|
|
170
|
+
max<O extends number | string | bigint | null = never, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: OutputBoundStringReference<DB, TB, C, O>): StringReferenceBoundAggregateFunctionBuilder<DB, TB, C, O>;
|
|
171
|
+
max<O extends number | string | bigint | null = number | string | bigint>(column: DynamicReferenceBuilder): AggregateFunctionBuilder<DB, TB, O>;
|
|
103
172
|
/**
|
|
104
173
|
* Calls the `min` function for the column given as the argument.
|
|
105
174
|
*
|
|
175
|
+
* If this is used in a `select` statement the type of the selected expression
|
|
176
|
+
* will be the referenced column's type.
|
|
177
|
+
*
|
|
106
178
|
* ### Examples
|
|
107
179
|
*
|
|
108
180
|
* ```ts
|
|
@@ -113,17 +185,30 @@ export declare class FunctionModule<DB, TB extends keyof DB> {
|
|
|
113
185
|
* .execute()
|
|
114
186
|
* ```
|
|
115
187
|
*
|
|
188
|
+
* Sometimes a null is returned, e.g. when row count is 0, and no `group by`
|
|
189
|
+
* was used. It is highly recommended to include null in the output type union
|
|
190
|
+
* and handle null values in post-execute code, or wrap the function with a `coalesce`
|
|
191
|
+
* function.
|
|
192
|
+
*
|
|
193
|
+
* ```ts
|
|
194
|
+
* const { min } = db.fn
|
|
195
|
+
*
|
|
196
|
+
* db.selectFrom('toy')
|
|
197
|
+
* .select(min<number | null, 'price'>('price').as('min_price'))
|
|
198
|
+
* .execute()
|
|
199
|
+
* ```
|
|
116
200
|
*/
|
|
117
|
-
min<C extends StringReference<DB, TB>>(column:
|
|
201
|
+
min<O extends number | string | bigint | null = never, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: OutputBoundStringReference<DB, TB, C, O>): StringReferenceBoundAggregateFunctionBuilder<DB, TB, C, O>;
|
|
202
|
+
min<O extends number | string | bigint | null = number | string | bigint>(column: DynamicReferenceBuilder): AggregateFunctionBuilder<DB, TB, O>;
|
|
118
203
|
/**
|
|
119
204
|
* Calls the `sum` function for the column given as the argument.
|
|
120
205
|
*
|
|
121
206
|
* If this is used in a `select` statement the type of the selected expression
|
|
122
|
-
* will be `number | string | bigint` by default. This is because Kysely
|
|
123
|
-
* know the type the db driver outputs. Sometimes the output can be larger
|
|
124
|
-
* the largest javascript number and a string is returned instead. Most
|
|
125
|
-
* allow you to configure the output type of large numbers and Kysely
|
|
126
|
-
* know if you've done so.
|
|
207
|
+
* will be `number | string | bigint` by default. This is because Kysely
|
|
208
|
+
* can't know the type the db driver outputs. Sometimes the output can be larger
|
|
209
|
+
* than the largest javascript number and a string is returned instead. Most
|
|
210
|
+
* drivers allow you to configure the output type of large numbers and Kysely
|
|
211
|
+
* can't know if you've done so.
|
|
127
212
|
*
|
|
128
213
|
* You can specify the output type of the expression by providing
|
|
129
214
|
* the type as the first type argument:
|
|
@@ -135,6 +220,22 @@ export declare class FunctionModule<DB, TB extends keyof DB> {
|
|
|
135
220
|
* .select(sum<number>('price').as('total_price'))
|
|
136
221
|
* .execute()
|
|
137
222
|
* ```
|
|
223
|
+
*
|
|
224
|
+
* Sometimes a null is returned, e.g. when row count is 0, and no `group by`
|
|
225
|
+
* was used. It is highly recommended to include null in the output type union
|
|
226
|
+
* and handle null values in post-execute code, or wrap the function with a `coalesce`
|
|
227
|
+
* function.
|
|
228
|
+
*
|
|
229
|
+
* ```ts
|
|
230
|
+
* const { sum } = db.fn
|
|
231
|
+
*
|
|
232
|
+
* db.selectFrom('toy')
|
|
233
|
+
* .select(sum<number | null>('price').as('total_price'))
|
|
234
|
+
* .execute()
|
|
235
|
+
* ```
|
|
138
236
|
*/
|
|
139
|
-
sum<O extends number | string | bigint, C extends
|
|
237
|
+
sum<O extends number | string | bigint | null = number | string | bigint, C extends SimpleReferenceExpression<DB, TB> = SimpleReferenceExpression<DB, TB>>(column: C): AggregateFunctionBuilder<DB, TB, O>;
|
|
140
238
|
}
|
|
239
|
+
declare type OutputBoundStringReference<DB, TB extends keyof DB, C extends StringReference<DB, TB>, O> = IsNever<O> extends true ? C : Equals<ExtractTypeFromReferenceExpression<DB, TB, C> | null, O | null> extends true ? C : never;
|
|
240
|
+
declare type StringReferenceBoundAggregateFunctionBuilder<DB, TB extends keyof DB, C extends StringReference<DB, TB>, O> = AggregateFunctionBuilder<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, C> | (null extends O ? null : never)>;
|
|
241
|
+
export {};
|