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
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
|
-
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
2
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
4
3
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
5
4
|
import { TableExpression } from '../parser/table-parser.js';
|
|
6
5
|
import { SelectExpression, QueryBuilderWithSelection, SelectAllQueryBuilder } from '../parser/select-parser.js';
|
|
7
|
-
import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper, HavingGrouper } from '../parser/filter-parser.js';
|
|
8
6
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
9
7
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
10
|
-
import {
|
|
8
|
+
import { MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
|
|
11
9
|
import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
|
|
12
10
|
import { Compilable } from '../util/compilable.js';
|
|
13
11
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
@@ -17,12 +15,31 @@ import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
|
17
15
|
import { WhereInterface } from './where-interface.js';
|
|
18
16
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
19
17
|
import { HavingInterface } from './having-interface.js';
|
|
20
|
-
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
21
18
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
22
|
-
import {
|
|
23
|
-
|
|
19
|
+
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
20
|
+
import { ComparisonOperatorExpression, HavingGrouper, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
|
|
21
|
+
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
22
|
+
export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, HavingInterface<DB, TB>, Expression<O>, Compilable<O>, Explainable {
|
|
24
23
|
#private;
|
|
25
24
|
constructor(props: SelectQueryBuilderProps);
|
|
25
|
+
/** @private */
|
|
26
|
+
/**
|
|
27
|
+
* All expressions need to have this getter for complicated type-related reasons.
|
|
28
|
+
* Simply add this getter for your expression and always return `undefined` from it:
|
|
29
|
+
*
|
|
30
|
+
* ```ts
|
|
31
|
+
* class SomeExpression<T> implements Expression<T> {
|
|
32
|
+
* get expressionType(): T | undefined {
|
|
33
|
+
* return undefined
|
|
34
|
+
* }
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* The getter is needed to make the expression assignable to another expression only
|
|
39
|
+
* if the types `T` are assignable. Without this property (or some other property
|
|
40
|
+
* that references `T`), you could assing `Expression<string>` to `Expression<number>`.
|
|
41
|
+
*/
|
|
42
|
+
get expressionType(): O | undefined;
|
|
26
43
|
/**
|
|
27
44
|
* Adds a `where` clause to the query.
|
|
28
45
|
*
|
|
@@ -207,16 +224,16 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
207
224
|
* .execute()
|
|
208
225
|
* ```
|
|
209
226
|
*/
|
|
210
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
227
|
+
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
211
228
|
where(grouper: WhereGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
212
|
-
where(
|
|
229
|
+
where(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
213
230
|
/**
|
|
214
231
|
* Adds a `where` clause where both sides of the operator are references
|
|
215
232
|
* to columns.
|
|
216
233
|
*
|
|
217
234
|
* The normal `where` method treats the right hand side argument as a
|
|
218
235
|
* value by default. `whereRef` treats it as a column reference. This method is
|
|
219
|
-
* expecially useful with joins and
|
|
236
|
+
* expecially useful with joins and correlated subqueries.
|
|
220
237
|
*
|
|
221
238
|
* ### Examples
|
|
222
239
|
*
|
|
@@ -261,7 +278,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
261
278
|
* ) as "pet_name"
|
|
262
279
|
* from "person"
|
|
263
280
|
*/
|
|
264
|
-
whereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
281
|
+
whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
265
282
|
/**
|
|
266
283
|
* Adds an `or where` clause to the query. Otherwise works just like {@link where}.
|
|
267
284
|
*
|
|
@@ -325,15 +342,15 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
325
342
|
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
326
343
|
* ```
|
|
327
344
|
*/
|
|
328
|
-
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
345
|
+
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
329
346
|
orWhere(grouper: WhereGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
330
|
-
orWhere(
|
|
347
|
+
orWhere(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
331
348
|
/**
|
|
332
349
|
* Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
|
|
333
350
|
*
|
|
334
351
|
* Also see {@link orWhere} and {@link where}.
|
|
335
352
|
*/
|
|
336
|
-
orWhereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
353
|
+
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
337
354
|
/**
|
|
338
355
|
* Adds a `where exists` clause to the query.
|
|
339
356
|
*
|
|
@@ -400,37 +417,37 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
400
417
|
*/
|
|
401
418
|
whereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
402
419
|
/**
|
|
403
|
-
* Just like {@link whereExists} but creates
|
|
420
|
+
* Just like {@link whereExists} but creates an `or exists` clause.
|
|
404
421
|
*/
|
|
405
422
|
orWhereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
406
423
|
/**
|
|
407
|
-
* Just like {@link whereExists} but creates
|
|
424
|
+
* Just like {@link whereExists} but creates an `or not exists` clause.
|
|
408
425
|
*/
|
|
409
426
|
orWhereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
410
427
|
/**
|
|
411
428
|
* Just like {@link WhereInterface.where | where} but adds a `having` statement
|
|
412
429
|
* instead of a `where` statement.
|
|
413
430
|
*/
|
|
414
|
-
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
431
|
+
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
415
432
|
having(grouper: HavingGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
416
|
-
having(
|
|
433
|
+
having(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
417
434
|
/**
|
|
418
435
|
* Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
|
|
419
436
|
* instead of a `where` statement.
|
|
420
437
|
*/
|
|
421
|
-
havingRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
438
|
+
havingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
422
439
|
/**
|
|
423
440
|
* Just like {@link WhereInterface.orWhere | orWhere} but adds a `having` statement
|
|
424
441
|
* instead of a `where` statement.
|
|
425
442
|
*/
|
|
426
|
-
orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
443
|
+
orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
427
444
|
orHaving(grouper: HavingGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
428
|
-
orHaving(
|
|
445
|
+
orHaving(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
429
446
|
/**
|
|
430
447
|
* Just like {@link WhereInterface.orWhereRef | orWhereRef} but adds a `having` statement
|
|
431
448
|
* instead of a `where` statement.
|
|
432
449
|
*/
|
|
433
|
-
orHavingRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
450
|
+
orHavingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
434
451
|
/**
|
|
435
452
|
* Just like {@link WhereInterface.whereExists | whereExists} but adds a `having` statement
|
|
436
453
|
* instead of a `where` statement.
|
|
@@ -627,11 +644,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
627
644
|
select<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): QueryBuilderWithSelection<DB, TB, O, SE>;
|
|
628
645
|
select<SE extends SelectExpression<DB, TB>>(selection: SE): QueryBuilderWithSelection<DB, TB, O, SE>;
|
|
629
646
|
/**
|
|
630
|
-
* Adds `distinct on`
|
|
631
|
-
*
|
|
632
|
-
* Takes the same inputs as the {@link SelectQueryBuilder.select | select} method.
|
|
633
|
-
* See the {@link SelectQueryBuilder.select | select} method's documentation for
|
|
634
|
-
* more examples.
|
|
647
|
+
* Adds `distinct on` expressions to the select clause.
|
|
635
648
|
*
|
|
636
649
|
* ### Examples
|
|
637
650
|
*
|
|
@@ -653,8 +666,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
653
666
|
* where "pet"."name" = $1
|
|
654
667
|
* ```
|
|
655
668
|
*/
|
|
656
|
-
distinctOn<
|
|
657
|
-
distinctOn<
|
|
669
|
+
distinctOn<RE extends ReferenceExpression<DB, TB>>(selections: ReadonlyArray<RE>): SelectQueryBuilder<DB, TB, O>;
|
|
670
|
+
distinctOn<RE extends ReferenceExpression<DB, TB>>(selection: RE): SelectQueryBuilder<DB, TB, O>;
|
|
658
671
|
/**
|
|
659
672
|
* This can be used to add any additional SQL to the front of the query __after__ the `select` keyword.
|
|
660
673
|
*
|
|
@@ -674,7 +687,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
674
687
|
* from `person`
|
|
675
688
|
* ```
|
|
676
689
|
*/
|
|
677
|
-
modifyFront(modifier:
|
|
690
|
+
modifyFront(modifier: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
678
691
|
/**
|
|
679
692
|
* This can be used to add any additional SQL to the end of the query.
|
|
680
693
|
*
|
|
@@ -698,7 +711,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
698
711
|
* for update
|
|
699
712
|
* ```
|
|
700
713
|
*/
|
|
701
|
-
modifyEnd(modifier:
|
|
714
|
+
modifyEnd(modifier: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
702
715
|
/**
|
|
703
716
|
* Makes the selection distinct.
|
|
704
717
|
*
|
|
@@ -1202,7 +1215,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1202
1215
|
* .orderBy('name')
|
|
1203
1216
|
* ```
|
|
1204
1217
|
*/
|
|
1205
|
-
union(expression:
|
|
1218
|
+
union(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
|
|
1206
1219
|
/**
|
|
1207
1220
|
* Combines another select query or raw expression to this query using `union all`.
|
|
1208
1221
|
*
|
|
@@ -1217,7 +1230,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1217
1230
|
* .orderBy('name')
|
|
1218
1231
|
* ```
|
|
1219
1232
|
*/
|
|
1220
|
-
unionAll(expression:
|
|
1233
|
+
unionAll(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
|
|
1221
1234
|
/**
|
|
1222
1235
|
* Combines another select query or raw expression to this query using `intersect`.
|
|
1223
1236
|
*
|
|
@@ -1232,7 +1245,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1232
1245
|
* .orderBy('name')
|
|
1233
1246
|
* ```
|
|
1234
1247
|
*/
|
|
1235
|
-
intersect(expression:
|
|
1248
|
+
intersect(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
|
|
1236
1249
|
/**
|
|
1237
1250
|
* Combines another select query or raw expression to this query using `intersect all`.
|
|
1238
1251
|
*
|
|
@@ -1247,7 +1260,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1247
1260
|
* .orderBy('name')
|
|
1248
1261
|
* ```
|
|
1249
1262
|
*/
|
|
1250
|
-
intersectAll(expression:
|
|
1263
|
+
intersectAll(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
|
|
1251
1264
|
/**
|
|
1252
1265
|
* Combines another select query or raw expression to this query using `except`.
|
|
1253
1266
|
*
|
|
@@ -1262,7 +1275,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1262
1275
|
* .orderBy('name')
|
|
1263
1276
|
* ```
|
|
1264
1277
|
*/
|
|
1265
|
-
except(expression:
|
|
1278
|
+
except(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
|
|
1266
1279
|
/**
|
|
1267
1280
|
* Combines another select query or raw expression to this query using `except all`.
|
|
1268
1281
|
*
|
|
@@ -1277,7 +1290,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1277
1290
|
* .orderBy('name')
|
|
1278
1291
|
* ```
|
|
1279
1292
|
*/
|
|
1280
|
-
exceptAll(expression:
|
|
1293
|
+
exceptAll(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
|
|
1281
1294
|
/**
|
|
1282
1295
|
* Simply calls the given function passing `this` as the only argument.
|
|
1283
1296
|
*
|
|
@@ -1371,7 +1384,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1371
1384
|
* pets[0].owner_first_name
|
|
1372
1385
|
* ```
|
|
1373
1386
|
*/
|
|
1374
|
-
as<A extends string>(alias: A):
|
|
1387
|
+
as<A extends string>(alias: A): AliasedSelectQueryBuilder<DB, TB, O, A>;
|
|
1375
1388
|
/**
|
|
1376
1389
|
* Change the output type of the query.
|
|
1377
1390
|
*
|
|
@@ -1383,8 +1396,22 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1383
1396
|
* Returns a copy of this SelectQueryBuilder instance with the given plugin installed.
|
|
1384
1397
|
*/
|
|
1385
1398
|
withPlugin(plugin: KyselyPlugin): SelectQueryBuilder<DB, TB, O>;
|
|
1399
|
+
/**
|
|
1400
|
+
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
1401
|
+
*
|
|
1402
|
+
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
1403
|
+
* template tag to build the node:
|
|
1404
|
+
*
|
|
1405
|
+
* ```ts
|
|
1406
|
+
* class SomeExpression<T> implements Expression<T> {
|
|
1407
|
+
* toOperationNode(): OperationNode {
|
|
1408
|
+
* return sql`some sql here`.toOperationNode()
|
|
1409
|
+
* }
|
|
1410
|
+
* }
|
|
1411
|
+
* ```
|
|
1412
|
+
*/
|
|
1386
1413
|
toOperationNode(): SelectQueryNode;
|
|
1387
|
-
compile(): CompiledQuery
|
|
1414
|
+
compile(): CompiledQuery<O>;
|
|
1388
1415
|
/**
|
|
1389
1416
|
* Executes the query and returns an array of rows.
|
|
1390
1417
|
*
|
|
@@ -1467,7 +1494,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1467
1494
|
* explain (analyze, format json) select * from "person" where "gender" = $1
|
|
1468
1495
|
* ```
|
|
1469
1496
|
*/
|
|
1470
|
-
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?:
|
|
1497
|
+
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<ER[]>;
|
|
1471
1498
|
}
|
|
1472
1499
|
export interface SelectQueryBuilderProps {
|
|
1473
1500
|
readonly queryId: QueryId;
|
|
@@ -1477,36 +1504,40 @@ export interface SelectQueryBuilderProps {
|
|
|
1477
1504
|
/**
|
|
1478
1505
|
* {@link SelectQueryBuilder} with an alias. The result of calling {@link SelectQueryBuilder.as}.
|
|
1479
1506
|
*/
|
|
1480
|
-
export declare class
|
|
1507
|
+
export declare class AliasedSelectQueryBuilder<DB, TB extends keyof DB, O = undefined, A extends string = never> implements AliasedExpression<O, A> {
|
|
1481
1508
|
#private;
|
|
1482
1509
|
constructor(queryBuilder: SelectQueryBuilder<DB, TB, O>, alias: A);
|
|
1510
|
+
/** @private */
|
|
1483
1511
|
/**
|
|
1484
|
-
*
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
*
|
|
1512
|
+
* Returns the aliased expression.
|
|
1513
|
+
*/
|
|
1514
|
+
get expression(): Expression<O>;
|
|
1515
|
+
/** @private */
|
|
1516
|
+
/**
|
|
1517
|
+
* Returns the alias.
|
|
1518
|
+
*/
|
|
1519
|
+
get alias(): A;
|
|
1520
|
+
/**
|
|
1521
|
+
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
1490
1522
|
*/
|
|
1491
|
-
protected get alias(): A;
|
|
1492
1523
|
toOperationNode(): AliasNode;
|
|
1493
1524
|
}
|
|
1494
|
-
export declare type SelectQueryBuilderWithInnerJoin<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 ? SelectQueryBuilder<DB, TB | TE, O> : TE extends
|
|
1525
|
+
export declare type SelectQueryBuilderWithInnerJoin<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 ? SelectQueryBuilder<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;
|
|
1495
1526
|
declare type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? SelectQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & Record<A, R>, TB | A, O>;
|
|
1496
1527
|
declare type InnerJoinedDB<DB, A extends string, R> = {
|
|
1497
1528
|
[C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
|
|
1498
1529
|
};
|
|
1499
|
-
export declare type SelectQueryBuilderWithLeftJoin<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
|
|
1530
|
+
export declare type SelectQueryBuilderWithLeftJoin<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;
|
|
1500
1531
|
declare type LeftJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? SelectQueryBuilder<LeftJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & Record<A, Nullable<R>>, TB | A, O>;
|
|
1501
1532
|
declare type LeftJoinedDB<DB, A extends keyof any, R> = {
|
|
1502
1533
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
|
|
1503
1534
|
};
|
|
1504
|
-
export declare type SelectQueryBuilderWithRightJoin<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
|
|
1535
|
+
export declare type SelectQueryBuilderWithRightJoin<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;
|
|
1505
1536
|
declare type RightJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<RightJoinedDB<DB, TB, A, R>, TB | A, O>;
|
|
1506
1537
|
declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
|
|
1507
1538
|
[C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
1508
1539
|
};
|
|
1509
|
-
export declare type SelectQueryBuilderWithFullJoin<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
|
|
1540
|
+
export declare type SelectQueryBuilderWithFullJoin<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;
|
|
1510
1541
|
declare type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, TB | A, O>;
|
|
1511
1542
|
declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
|
|
1512
1543
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
@@ -3,7 +3,7 @@ import { AliasNode } from '../operation-node/alias-node.js';
|
|
|
3
3
|
import { SelectModifierNode } from '../operation-node/select-modifier-node.js';
|
|
4
4
|
import { parseJoin, } from '../parser/join-parser.js';
|
|
5
5
|
import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
|
|
6
|
-
import {
|
|
6
|
+
import { parseReferenceExpressionOrList, } from '../parser/reference-parser.js';
|
|
7
7
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
8
8
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
9
9
|
import { parseOrderBy, } from '../parser/order-by-parser.js';
|
|
@@ -15,106 +15,112 @@ import { parseGroupBy, } from '../parser/group-by-parser.js';
|
|
|
15
15
|
import { NoResultError } from './no-result-error.js';
|
|
16
16
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
17
17
|
import { ExplainNode } from '../operation-node/explain-node.js';
|
|
18
|
-
import { parseSetOperation
|
|
18
|
+
import { parseSetOperation } from '../parser/set-operation-parser.js';
|
|
19
|
+
import { parseHaving, parseReferentialFilter, parseWhere, } from '../parser/binary-operation-parser.js';
|
|
20
|
+
import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
|
|
19
21
|
export class SelectQueryBuilder {
|
|
20
22
|
#props;
|
|
21
23
|
constructor(props) {
|
|
22
24
|
this.#props = freeze(props);
|
|
23
25
|
}
|
|
26
|
+
/** @private */
|
|
27
|
+
get expressionType() {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
24
30
|
where(...args) {
|
|
25
31
|
return new SelectQueryBuilder({
|
|
26
32
|
...this.#props,
|
|
27
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
33
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseWhere(args)),
|
|
28
34
|
});
|
|
29
35
|
}
|
|
30
36
|
whereRef(lhs, op, rhs) {
|
|
31
37
|
return new SelectQueryBuilder({
|
|
32
38
|
...this.#props,
|
|
33
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
39
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
34
40
|
});
|
|
35
41
|
}
|
|
36
42
|
orWhere(...args) {
|
|
37
43
|
return new SelectQueryBuilder({
|
|
38
44
|
...this.#props,
|
|
39
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
45
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhere(args)),
|
|
40
46
|
});
|
|
41
47
|
}
|
|
42
48
|
orWhereRef(lhs, op, rhs) {
|
|
43
49
|
return new SelectQueryBuilder({
|
|
44
50
|
...this.#props,
|
|
45
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
51
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
46
52
|
});
|
|
47
53
|
}
|
|
48
54
|
whereExists(arg) {
|
|
49
55
|
return new SelectQueryBuilder({
|
|
50
56
|
...this.#props,
|
|
51
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
57
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExists(arg)),
|
|
52
58
|
});
|
|
53
59
|
}
|
|
54
60
|
whereNotExists(arg) {
|
|
55
61
|
return new SelectQueryBuilder({
|
|
56
62
|
...this.#props,
|
|
57
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
63
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
58
64
|
});
|
|
59
65
|
}
|
|
60
66
|
orWhereExists(arg) {
|
|
61
67
|
return new SelectQueryBuilder({
|
|
62
68
|
...this.#props,
|
|
63
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
69
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExists(arg)),
|
|
64
70
|
});
|
|
65
71
|
}
|
|
66
72
|
orWhereNotExists(arg) {
|
|
67
73
|
return new SelectQueryBuilder({
|
|
68
74
|
...this.#props,
|
|
69
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode,
|
|
75
|
+
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
70
76
|
});
|
|
71
77
|
}
|
|
72
78
|
having(...args) {
|
|
73
79
|
return new SelectQueryBuilder({
|
|
74
80
|
...this.#props,
|
|
75
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode,
|
|
81
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseHaving(args)),
|
|
76
82
|
});
|
|
77
83
|
}
|
|
78
84
|
havingRef(lhs, op, rhs) {
|
|
79
85
|
return new SelectQueryBuilder({
|
|
80
86
|
...this.#props,
|
|
81
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode,
|
|
87
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
82
88
|
});
|
|
83
89
|
}
|
|
84
90
|
orHaving(...args) {
|
|
85
91
|
return new SelectQueryBuilder({
|
|
86
92
|
...this.#props,
|
|
87
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode,
|
|
93
|
+
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseHaving(args)),
|
|
88
94
|
});
|
|
89
95
|
}
|
|
90
96
|
orHavingRef(lhs, op, rhs) {
|
|
91
97
|
return new SelectQueryBuilder({
|
|
92
98
|
...this.#props,
|
|
93
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode,
|
|
99
|
+
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseReferentialFilter(lhs, op, rhs)),
|
|
94
100
|
});
|
|
95
101
|
}
|
|
96
102
|
havingExists(arg) {
|
|
97
103
|
return new SelectQueryBuilder({
|
|
98
104
|
...this.#props,
|
|
99
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode,
|
|
105
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseExists(arg)),
|
|
100
106
|
});
|
|
101
107
|
}
|
|
102
108
|
havingNotExist(arg) {
|
|
103
109
|
return new SelectQueryBuilder({
|
|
104
110
|
...this.#props,
|
|
105
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode,
|
|
111
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseNotExists(arg)),
|
|
106
112
|
});
|
|
107
113
|
}
|
|
108
114
|
orHavingExists(arg) {
|
|
109
115
|
return new SelectQueryBuilder({
|
|
110
116
|
...this.#props,
|
|
111
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode,
|
|
117
|
+
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseExists(arg)),
|
|
112
118
|
});
|
|
113
119
|
}
|
|
114
120
|
orHavingNotExists(arg) {
|
|
115
121
|
return new SelectQueryBuilder({
|
|
116
122
|
...this.#props,
|
|
117
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode,
|
|
123
|
+
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseNotExists(arg)),
|
|
118
124
|
});
|
|
119
125
|
}
|
|
120
126
|
select(selection) {
|
|
@@ -126,7 +132,7 @@ export class SelectQueryBuilder {
|
|
|
126
132
|
distinctOn(selection) {
|
|
127
133
|
return new SelectQueryBuilder({
|
|
128
134
|
...this.#props,
|
|
129
|
-
queryNode: SelectQueryNode.
|
|
135
|
+
queryNode: SelectQueryNode.cloneWithDistinctOn(this.#props.queryNode, parseReferenceExpressionOrList(selection)),
|
|
130
136
|
});
|
|
131
137
|
}
|
|
132
138
|
/**
|
|
@@ -151,7 +157,7 @@ export class SelectQueryBuilder {
|
|
|
151
157
|
modifyFront(modifier) {
|
|
152
158
|
return new SelectQueryBuilder({
|
|
153
159
|
...this.#props,
|
|
154
|
-
queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.
|
|
160
|
+
queryNode: SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode())),
|
|
155
161
|
});
|
|
156
162
|
}
|
|
157
163
|
/**
|
|
@@ -180,7 +186,7 @@ export class SelectQueryBuilder {
|
|
|
180
186
|
modifyEnd(modifier) {
|
|
181
187
|
return new SelectQueryBuilder({
|
|
182
188
|
...this.#props,
|
|
183
|
-
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.
|
|
189
|
+
queryNode: SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, SelectModifierNode.createWithExpression(modifier.toOperationNode())),
|
|
184
190
|
});
|
|
185
191
|
}
|
|
186
192
|
/**
|
|
@@ -676,7 +682,7 @@ export class SelectQueryBuilder {
|
|
|
676
682
|
* ```
|
|
677
683
|
*/
|
|
678
684
|
as(alias) {
|
|
679
|
-
return new
|
|
685
|
+
return new AliasedSelectQueryBuilder(this, alias);
|
|
680
686
|
}
|
|
681
687
|
/**
|
|
682
688
|
* Change the output type of the query.
|
|
@@ -762,8 +768,8 @@ export class SelectQueryBuilder {
|
|
|
762
768
|
* ```
|
|
763
769
|
*/
|
|
764
770
|
async *stream(chunkSize = 100) {
|
|
765
|
-
const
|
|
766
|
-
const stream = this.#props.executor.stream(
|
|
771
|
+
const compiledQuery = this.compile();
|
|
772
|
+
const stream = this.#props.executor.stream(compiledQuery, chunkSize, this.#props.queryId);
|
|
767
773
|
for await (const item of stream) {
|
|
768
774
|
yield* item.rows;
|
|
769
775
|
}
|
|
@@ -806,7 +812,7 @@ export class SelectQueryBuilder {
|
|
|
806
812
|
async explain(format, options) {
|
|
807
813
|
const builder = new SelectQueryBuilder({
|
|
808
814
|
...this.#props,
|
|
809
|
-
queryNode: SelectQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options)),
|
|
815
|
+
queryNode: SelectQueryNode.cloneWithExplain(this.#props.queryNode, ExplainNode.create(format, options?.toOperationNode())),
|
|
810
816
|
});
|
|
811
817
|
return await builder.execute();
|
|
812
818
|
}
|
|
@@ -815,26 +821,22 @@ preventAwait(SelectQueryBuilder, "don't await SelectQueryBuilder instances direc
|
|
|
815
821
|
/**
|
|
816
822
|
* {@link SelectQueryBuilder} with an alias. The result of calling {@link SelectQueryBuilder.as}.
|
|
817
823
|
*/
|
|
818
|
-
export class
|
|
824
|
+
export class AliasedSelectQueryBuilder {
|
|
819
825
|
#queryBuilder;
|
|
820
826
|
#alias;
|
|
821
827
|
constructor(queryBuilder, alias) {
|
|
822
828
|
this.#queryBuilder = queryBuilder;
|
|
823
829
|
this.#alias = alias;
|
|
824
830
|
}
|
|
825
|
-
/**
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
* which causes this type to be equal to AliasedQueryBuilder with any A
|
|
831
|
-
* as long as D, TB and O are the same.
|
|
832
|
-
*/
|
|
831
|
+
/** @private */
|
|
832
|
+
get expression() {
|
|
833
|
+
return this.#queryBuilder;
|
|
834
|
+
}
|
|
835
|
+
/** @private */
|
|
833
836
|
get alias() {
|
|
834
837
|
return this.#alias;
|
|
835
838
|
}
|
|
836
839
|
toOperationNode() {
|
|
837
|
-
|
|
838
|
-
return AliasNode.create(node, IdentifierNode.create(this.#alias));
|
|
840
|
+
return AliasNode.create(this.#queryBuilder.toOperationNode(), IdentifierNode.create(this.#alias));
|
|
839
841
|
}
|
|
840
842
|
}
|