kysely 0.21.6 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +70 -0
- package/README.md +27 -4
- 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 +17 -8
- package/dist/cjs/index.js +15 -4
- package/dist/cjs/kysely.d.ts +3 -3
- package/dist/cjs/kysely.js +3 -3
- package/dist/cjs/migration/file-migration-provider.js +11 -4
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +25 -0
- package/dist/cjs/operation-node/aggregate-function-node.js +48 -0
- package/dist/cjs/operation-node/alias-node.d.ts +3 -10
- 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/group-by-node.d.ts +1 -1
- package/dist/cjs/operation-node/group-by-node.js +3 -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 -4
- 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 +14 -4
- package/dist/cjs/operation-node/operation-node-transformer.js +60 -20
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +14 -4
- package/dist/cjs/operation-node/operation-node-visitor.js +7 -2
- 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/over-node.d.ts +19 -0
- package/dist/cjs/operation-node/over-node.js +35 -0
- package/dist/cjs/operation-node/parens-node.d.ts +2 -3
- package/dist/cjs/operation-node/partition-by-item-node.d.ts +13 -0
- package/dist/cjs/operation-node/{filter-node.js → partition-by-item-node.js} +6 -8
- package/dist/cjs/operation-node/partition-by-node.d.ts +14 -0
- package/dist/cjs/operation-node/partition-by-node.js +24 -0
- 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 +8 -9
- package/dist/cjs/operation-node/select-query-node.js +14 -14
- package/dist/cjs/operation-node/selection-node.d.ts +2 -3
- package/dist/cjs/operation-node/set-operation-node.d.ts +15 -0
- package/dist/cjs/operation-node/{union-node.js → set-operation-node.js} +7 -6
- 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 -8
- 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/group-by-parser.d.ts +1 -1
- package/dist/cjs/parser/group-by-parser.js +2 -2
- 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/parse-utils.d.ts +2 -0
- package/dist/cjs/parser/parse-utils.js +9 -1
- package/dist/cjs/parser/partition-by-parser.d.ts +6 -0
- package/dist/cjs/parser/partition-by-parser.js +9 -0
- package/dist/cjs/parser/reference-parser.d.ts +14 -13
- package/dist/cjs/parser/reference-parser.js +12 -9
- package/dist/cjs/parser/select-parser.d.ts +6 -6
- package/dist/cjs/parser/select-parser.js +2 -2
- package/dist/cjs/parser/set-operation-parser.d.ts +3 -0
- package/dist/cjs/parser/set-operation-parser.js +8 -0
- 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 -8
- 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 +348 -0
- package/dist/cjs/query-builder/aggregate-function-builder.js +298 -0
- 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/expression-builder.d.ts +3 -3
- package/dist/cjs/query-builder/expression-builder.js +3 -3
- package/dist/cjs/query-builder/function-module.d.ts +241 -0
- package/dist/cjs/query-builder/function-module.js +214 -0
- 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/over-builder.d.ts +59 -0
- package/dist/cjs/query-builder/over-builder.js +50 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +138 -47
- package/dist/cjs/query-builder/select-query-builder.js +122 -40
- 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 +15 -5
- package/dist/cjs/query-compiler/default-query-compiler.js +78 -47
- 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 +15 -7
- package/dist/cjs/raw-builder/sql.js +6 -0
- 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 +65 -280
- 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 +2 -2
- package/dist/cjs/schema/create-table-builder.d.ts +38 -5
- package/dist/cjs/schema/create-table-builder.js +36 -1
- package/dist/cjs/schema/create-view-builder.d.ts +3 -2
- package/dist/cjs/schema/schema.d.ts +2 -2
- package/dist/cjs/schema/schema.js +6 -5
- 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 -13
- 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 +17 -8
- package/dist/esm/index.js +13 -4
- package/dist/esm/kysely.d.ts +3 -3
- package/dist/esm/kysely.js +3 -3
- package/dist/esm/migration/file-migration-provider.js +11 -4
- package/dist/esm/operation-node/aggregate-function-node.d.ts +25 -0
- package/dist/esm/operation-node/aggregate-function-node.js +46 -0
- package/dist/esm/operation-node/alias-node.d.ts +3 -10
- 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/group-by-node.d.ts +1 -1
- package/dist/esm/operation-node/group-by-node.js +3 -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 -4
- 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 +14 -4
- package/dist/esm/operation-node/operation-node-transformer.js +60 -20
- package/dist/esm/operation-node/operation-node-visitor.d.ts +14 -4
- package/dist/esm/operation-node/operation-node-visitor.js +7 -2
- 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/over-node.d.ts +19 -0
- package/dist/esm/operation-node/over-node.js +33 -0
- package/dist/esm/operation-node/parens-node.d.ts +2 -3
- package/dist/esm/operation-node/partition-by-item-node.d.ts +13 -0
- package/dist/esm/operation-node/partition-by-item-node.js +16 -0
- package/dist/esm/operation-node/partition-by-node.d.ts +14 -0
- package/dist/esm/operation-node/partition-by-node.js +22 -0
- 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 +8 -9
- package/dist/esm/operation-node/select-query-node.js +14 -14
- package/dist/esm/operation-node/selection-node.d.ts +2 -3
- package/dist/esm/operation-node/set-operation-node.d.ts +15 -0
- package/dist/esm/operation-node/set-operation-node.js +18 -0
- 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 -8
- 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/group-by-parser.d.ts +1 -1
- package/dist/esm/parser/group-by-parser.js +2 -2
- 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/parse-utils.d.ts +2 -0
- package/dist/esm/parser/parse-utils.js +7 -0
- package/dist/esm/parser/partition-by-parser.d.ts +6 -0
- package/dist/esm/parser/partition-by-parser.js +6 -0
- package/dist/esm/parser/reference-parser.d.ts +14 -13
- package/dist/esm/parser/reference-parser.js +10 -8
- package/dist/esm/parser/select-parser.d.ts +6 -6
- package/dist/esm/parser/select-parser.js +2 -2
- package/dist/esm/parser/set-operation-parser.d.ts +3 -0
- package/dist/esm/parser/set-operation-parser.js +5 -0
- 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 -8
- 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 +348 -0
- package/dist/esm/query-builder/aggregate-function-builder.js +294 -0
- 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/expression-builder.d.ts +3 -3
- package/dist/esm/query-builder/expression-builder.js +3 -3
- package/dist/esm/query-builder/function-module.d.ts +241 -0
- package/dist/esm/query-builder/function-module.js +211 -0
- 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/over-builder.d.ts +59 -0
- package/dist/esm/query-builder/over-builder.js +47 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +138 -47
- package/dist/esm/query-builder/select-query-builder.js +120 -38
- 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 +15 -5
- package/dist/esm/query-compiler/default-query-compiler.js +79 -48
- 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 +15 -7
- package/dist/esm/raw-builder/sql.js +6 -0
- 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 +61 -274
- 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 +2 -2
- package/dist/esm/schema/create-table-builder.d.ts +38 -5
- package/dist/esm/schema/create-table-builder.js +36 -1
- package/dist/esm/schema/create-view-builder.d.ts +3 -2
- package/dist/esm/schema/schema.d.ts +2 -2
- package/dist/esm/schema/schema.js +6 -5
- 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 -13
- package/package.json +4 -1
- package/dist/cjs/operation-node/filter-node.d.ts +0 -18
- package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -17
- package/dist/cjs/operation-node/union-node.d.ts +0 -16
- package/dist/cjs/parser/complex-expression-parser.d.ts +0 -10
- package/dist/cjs/parser/filter-parser.d.ts +0 -24
- package/dist/cjs/parser/filter-parser.js +0 -109
- package/dist/cjs/parser/union-parser.d.ts +0 -5
- package/dist/cjs/parser/union-parser.js +0 -8
- package/dist/cjs/query-builder/function-builder.d.ts +0 -133
- package/dist/cjs/query-builder/function-builder.js +0 -160
- 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 -17
- package/dist/esm/operation-node/operation-node-utils.js +0 -2
- package/dist/esm/operation-node/union-node.d.ts +0 -16
- package/dist/esm/operation-node/union-node.js +0 -17
- package/dist/esm/parser/complex-expression-parser.d.ts +0 -10
- package/dist/esm/parser/filter-parser.d.ts +0 -24
- package/dist/esm/parser/filter-parser.js +0 -100
- package/dist/esm/parser/union-parser.d.ts +0 -5
- package/dist/esm/parser/union-parser.js +0 -5
- package/dist/esm/query-builder/function-builder.d.ts +0 -133
- package/dist/esm/query-builder/function-builder.js +0 -157
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FunctionBuilder = void 0;
|
|
4
|
-
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
5
|
-
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
6
|
-
const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
|
|
7
|
-
const query_id_js_1 = require("../util/query-id.js");
|
|
8
|
-
/**
|
|
9
|
-
* Helpers for type safe SQL function calls.
|
|
10
|
-
*
|
|
11
|
-
* You can always use the {@link sql} tag to call functions and build arbitrary
|
|
12
|
-
* expressions. This module simply has shortcuts for most common function calls.
|
|
13
|
-
*
|
|
14
|
-
* ### Examples
|
|
15
|
-
*
|
|
16
|
-
* ```ts
|
|
17
|
-
* const { count } = db.fn
|
|
18
|
-
*
|
|
19
|
-
* await db.selectFrom('person')
|
|
20
|
-
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
21
|
-
* .select([
|
|
22
|
-
* 'person.id',
|
|
23
|
-
* count('pet.id').as('pet_count')
|
|
24
|
-
* ])
|
|
25
|
-
* .groupBy('person.id')
|
|
26
|
-
* .having(count('pet.id'), '>', 10)
|
|
27
|
-
* .execute()
|
|
28
|
-
* ```
|
|
29
|
-
*
|
|
30
|
-
* The generated SQL (PostgreSQL):
|
|
31
|
-
*
|
|
32
|
-
* ```sql
|
|
33
|
-
* select "person"."id", count("pet"."id") as "pet_count"
|
|
34
|
-
* from "person"
|
|
35
|
-
* inner join "pet" on "pet"."owner_id" = "person"."id"
|
|
36
|
-
* group by "person"."id"
|
|
37
|
-
* having count("pet"."id") > $1
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
class FunctionBuilder {
|
|
41
|
-
constructor() {
|
|
42
|
-
this.min = this.min.bind(this);
|
|
43
|
-
this.max = this.max.bind(this);
|
|
44
|
-
this.avg = this.avg.bind(this);
|
|
45
|
-
this.sum = this.sum.bind(this);
|
|
46
|
-
this.count = this.count.bind(this);
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Calls the `max` function for the column given as the argument.
|
|
50
|
-
*
|
|
51
|
-
* ### Examples
|
|
52
|
-
*
|
|
53
|
-
* ```ts
|
|
54
|
-
* const { max } = db.fn
|
|
55
|
-
*
|
|
56
|
-
* db.selectFrom('toy')
|
|
57
|
-
* .select(max('price').as('max_price'))
|
|
58
|
-
* .execute()
|
|
59
|
-
* ```
|
|
60
|
-
*/
|
|
61
|
-
max(column) {
|
|
62
|
-
return this.#oneArgFunction('max', column);
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Calls the `min` function for the column given as the argument.
|
|
66
|
-
*
|
|
67
|
-
* ### Examples
|
|
68
|
-
*
|
|
69
|
-
* ```ts
|
|
70
|
-
* const { min } = db.fn
|
|
71
|
-
*
|
|
72
|
-
* db.selectFrom('toy')
|
|
73
|
-
* .select(min('price').as('min_price'))
|
|
74
|
-
* .execute()
|
|
75
|
-
* ```
|
|
76
|
-
*
|
|
77
|
-
*/
|
|
78
|
-
min(column) {
|
|
79
|
-
return this.#oneArgFunction('min', column);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Calls the `avg` function for the column given as the argument.
|
|
83
|
-
*
|
|
84
|
-
* If this is used in a `select` statement the type of the selected expression
|
|
85
|
-
* will be `number | string` by default. This is because Kysely can't know the
|
|
86
|
-
* type the db driver outputs. Sometimes the output can be larger than the
|
|
87
|
-
* largest javascript number and a string is returned instead. Most drivers
|
|
88
|
-
* allow you to configure the output type of large numbers and Kysely can't
|
|
89
|
-
* know if you've done so.
|
|
90
|
-
*
|
|
91
|
-
* You can specify the output type of the expression by providing
|
|
92
|
-
* the type as the first type argument:
|
|
93
|
-
*
|
|
94
|
-
* ```ts
|
|
95
|
-
* const { avg } = db.fn
|
|
96
|
-
*
|
|
97
|
-
* db.selectFrom('toy')
|
|
98
|
-
* .select(avg<number>('price').as('avg_price'))
|
|
99
|
-
* .execute()
|
|
100
|
-
* ```
|
|
101
|
-
*/
|
|
102
|
-
avg(column) {
|
|
103
|
-
return this.#oneArgFunction('avg', column);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Calls the `sum` function for the column given as the argument.
|
|
107
|
-
*
|
|
108
|
-
* If this is used in a `select` statement the type of the selected expression
|
|
109
|
-
* will be `number | string | bigint` by default. This is because Kysely can't
|
|
110
|
-
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
111
|
-
* the largest javascript number and a string is returned instead. Most drivers
|
|
112
|
-
* allow you to configure the output type of large numbers and Kysely can't
|
|
113
|
-
* know if you've done so.
|
|
114
|
-
*
|
|
115
|
-
* You can specify the output type of the expression by providing
|
|
116
|
-
* the type as the first type argument:
|
|
117
|
-
*
|
|
118
|
-
* ```ts
|
|
119
|
-
* const { sum } = db.fn
|
|
120
|
-
*
|
|
121
|
-
* db.selectFrom('toy')
|
|
122
|
-
* .select(sum<number>('price').as('total_price'))
|
|
123
|
-
* .execute()
|
|
124
|
-
* ```
|
|
125
|
-
*/
|
|
126
|
-
sum(column) {
|
|
127
|
-
return this.#oneArgFunction('sum', column);
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Calls the `count` function for the column given as the argument.
|
|
131
|
-
*
|
|
132
|
-
* If this is used in a `select` statement the type of the selected expression
|
|
133
|
-
* will be `number | string |bigint` by default. This is because Kysely can't
|
|
134
|
-
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
135
|
-
* the largest javascript number and a string is returned instead. Most drivers
|
|
136
|
-
* allow you to configure the output type of large numbers and Kysely can't
|
|
137
|
-
* know if you've done so.
|
|
138
|
-
*
|
|
139
|
-
* You can specify the output type of the expression by providing
|
|
140
|
-
* the type as the first type argument:
|
|
141
|
-
*
|
|
142
|
-
* ```ts
|
|
143
|
-
* const { count } = db.fn
|
|
144
|
-
*
|
|
145
|
-
* db.selectFrom('toy')
|
|
146
|
-
* .select(count<number>('id').as('num_toys'))
|
|
147
|
-
* .execute()
|
|
148
|
-
* ```
|
|
149
|
-
*/
|
|
150
|
-
count(column) {
|
|
151
|
-
return this.#oneArgFunction('count', column);
|
|
152
|
-
}
|
|
153
|
-
#oneArgFunction(fn, column) {
|
|
154
|
-
return new raw_builder_js_1.RawBuilder({
|
|
155
|
-
queryId: (0, query_id_js_1.createQueryId)(),
|
|
156
|
-
rawNode: raw_node_js_1.RawNode.create([`${fn}(`, ')'], [(0, reference_parser_js_1.parseStringReference)(column)]),
|
|
157
|
-
});
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
exports.FunctionBuilder = FunctionBuilder;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { OperationNode } from './operation-node.js';
|
|
2
|
-
import { ReferenceExpressionNode, ValueExpressionNode } from './operation-node-utils.js';
|
|
3
|
-
import { OperatorNode } from './operator-node.js';
|
|
4
|
-
import { RawNode } from './raw-node.js';
|
|
5
|
-
export declare type FilterOperatorNode = OperatorNode | RawNode;
|
|
6
|
-
export interface FilterNode extends OperationNode {
|
|
7
|
-
readonly kind: 'FilterNode';
|
|
8
|
-
readonly left?: ReferenceExpressionNode;
|
|
9
|
-
readonly op: OperatorNode | RawNode;
|
|
10
|
-
readonly right: ValueExpressionNode;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* @internal
|
|
14
|
-
*/
|
|
15
|
-
export declare const FilterNode: Readonly<{
|
|
16
|
-
is(node: OperationNode): node is FilterNode;
|
|
17
|
-
create(left: ReferenceExpressionNode | undefined, op: OperatorNode | RawNode, right: ValueExpressionNode): FilterNode;
|
|
18
|
-
}>;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/// <reference types="./filter-node.d.ts" />
|
|
2
|
-
import { freeze } from '../util/object-utils.js';
|
|
3
|
-
/**
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
export const FilterNode = freeze({
|
|
7
|
-
is(node) {
|
|
8
|
-
return node.kind === 'FilterNode';
|
|
9
|
-
},
|
|
10
|
-
create(left, op, right) {
|
|
11
|
-
return freeze({
|
|
12
|
-
kind: 'FilterNode',
|
|
13
|
-
left,
|
|
14
|
-
op,
|
|
15
|
-
right,
|
|
16
|
-
});
|
|
17
|
-
},
|
|
18
|
-
});
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { AliasNode } from './alias-node.js';
|
|
2
|
-
import { AndNode } from './and-node.js';
|
|
3
|
-
import { ColumnNode } from './column-node.js';
|
|
4
|
-
import { FilterNode } from './filter-node.js';
|
|
5
|
-
import { OrNode } from './or-node.js';
|
|
6
|
-
import { ParensNode } from './parens-node.js';
|
|
7
|
-
import { PrimitiveValueListNode } from './primitive-value-list-node.js';
|
|
8
|
-
import { RawNode } from './raw-node.js';
|
|
9
|
-
import { ReferenceNode } from './reference-node.js';
|
|
10
|
-
import { SelectQueryNode } from './select-query-node.js';
|
|
11
|
-
import { TableNode } from './table-node.js';
|
|
12
|
-
import { ValueListNode } from './value-list-node.js';
|
|
13
|
-
import { ValueNode } from './value-node.js';
|
|
14
|
-
export declare type ReferenceExpressionNode = ColumnNode | ReferenceNode | SelectQueryNode | RawNode;
|
|
15
|
-
export declare type ValueExpressionNode = ValueNode | ValueListNode | PrimitiveValueListNode | ReferenceExpressionNode;
|
|
16
|
-
export declare type TableExpressionNode = TableNode | AliasNode;
|
|
17
|
-
export declare type FilterExpressionNode = FilterNode | AndNode | OrNode | ParensNode | RawNode;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { OperationNode } from './operation-node.js';
|
|
2
|
-
import { RawNode } from './raw-node.js';
|
|
3
|
-
import { SelectQueryNode } from './select-query-node.js';
|
|
4
|
-
export declare type UnionExpressionNode = SelectQueryNode | RawNode;
|
|
5
|
-
export interface UnionNode extends OperationNode {
|
|
6
|
-
readonly kind: 'UnionNode';
|
|
7
|
-
readonly union: UnionExpressionNode;
|
|
8
|
-
readonly all: boolean;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* @internal
|
|
12
|
-
*/
|
|
13
|
-
export declare const UnionNode: Readonly<{
|
|
14
|
-
is(node: OperationNode): node is UnionNode;
|
|
15
|
-
create(union: UnionExpressionNode, all: boolean): UnionNode;
|
|
16
|
-
}>;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/// <reference types="./union-node.d.ts" />
|
|
2
|
-
import { freeze } from '../util/object-utils.js';
|
|
3
|
-
/**
|
|
4
|
-
* @internal
|
|
5
|
-
*/
|
|
6
|
-
export const UnionNode = freeze({
|
|
7
|
-
is(node) {
|
|
8
|
-
return node.kind === 'UnionNode';
|
|
9
|
-
},
|
|
10
|
-
create(union, all) {
|
|
11
|
-
return freeze({
|
|
12
|
-
kind: 'UnionNode',
|
|
13
|
-
union,
|
|
14
|
-
all,
|
|
15
|
-
});
|
|
16
|
-
},
|
|
17
|
-
});
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
|
-
import { RawNode } from '../operation-node/raw-node.js';
|
|
3
|
-
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
4
|
-
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
5
|
-
import { AliasedQueryBuilderFactory, AliasedRawBuilderFactory, AnyAliasedQueryBuilder, AnyAliasedRawBuilder, AnySelectQueryBuilder, SelectQueryBuilderFactory, RawBuilderFactory } from '../util/type-utils.js';
|
|
6
|
-
export declare type ComplexExpression<DB, TB extends keyof DB, V = any> = AnySelectQueryBuilder | SelectQueryBuilderFactory<DB, TB> | RawBuilder<V> | RawBuilderFactory<DB, TB, V>;
|
|
7
|
-
export declare type AliasedComplexExpression<DB, TB extends keyof DB> = AnyAliasedQueryBuilder | AliasedQueryBuilderFactory<DB, TB> | AnyAliasedRawBuilder | AliasedRawBuilderFactory<DB, TB>;
|
|
8
|
-
export declare function parseComplexExpression(exp: ComplexExpression<any, any>): SelectQueryNode | RawNode;
|
|
9
|
-
export declare function parseAliasedComplexExpression(exp: AliasedComplexExpression<any, any>): AliasNode;
|
|
10
|
-
export declare function isComplexExpression(obj: unknown): obj is ComplexExpression<any, any>;
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { FilterNode } from '../operation-node/filter-node.js';
|
|
2
|
-
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
3
|
-
import { Operator } from '../operation-node/operator-node.js';
|
|
4
|
-
import { ExtractTypeFromReferenceExpression, ReferenceExpression } from './reference-parser.js';
|
|
5
|
-
import { ValueExpression, ValueExpressionOrList } from './value-parser.js';
|
|
6
|
-
import { FilterExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
7
|
-
import { WhereInterface } from '../query-builder/where-interface.js';
|
|
8
|
-
import { HavingInterface } from '../query-builder/having-interface.js';
|
|
9
|
-
import { ComplexExpression } from './complex-expression-parser.js';
|
|
10
|
-
export declare type FilterValueExpression<DB, TB extends keyof DB, RE> = ValueExpression<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|
11
|
-
export declare type FilterValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpressionOrList<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|
12
|
-
export declare type ExistsExpression<DB, TB extends keyof DB> = ComplexExpression<DB, TB, any>;
|
|
13
|
-
export declare type WhereGrouper<DB, TB extends keyof DB> = (qb: WhereInterface<DB, TB>) => WhereInterface<DB, TB>;
|
|
14
|
-
export declare type HavingGrouper<DB, TB extends keyof DB> = (qb: HavingInterface<DB, TB>) => HavingInterface<DB, TB>;
|
|
15
|
-
export declare type FilterOperator = Operator | AnyRawBuilder;
|
|
16
|
-
declare type FilterType = 'where' | 'having' | 'on';
|
|
17
|
-
export declare function parseWhereFilter(args: any[]): FilterExpressionNode;
|
|
18
|
-
export declare function parseHavingFilter(args: any[]): FilterExpressionNode;
|
|
19
|
-
export declare function parseOnFilter(args: any[]): FilterExpressionNode;
|
|
20
|
-
export declare function parseReferenceFilter(lhs: ReferenceExpression<any, any>, op: FilterOperator, rhs: ReferenceExpression<any, any>): FilterNode;
|
|
21
|
-
export declare function parseExistFilter(arg: ExistsExpression<any, any>): FilterNode;
|
|
22
|
-
export declare function parseNotExistFilter(arg: ExistsExpression<any, any>): FilterNode;
|
|
23
|
-
export declare function parseFilter(type: FilterType, args: any[]): FilterExpressionNode;
|
|
24
|
-
export {};
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/// <reference types="./filter-parser.d.ts" />
|
|
2
|
-
import { FilterNode } from '../operation-node/filter-node.js';
|
|
3
|
-
import { freeze, isBoolean, isFunction, isNull, isString, } from '../util/object-utils.js';
|
|
4
|
-
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
5
|
-
import { RawNode } from '../operation-node/raw-node.js';
|
|
6
|
-
import { OperatorNode, OPERATORS, } from '../operation-node/operator-node.js';
|
|
7
|
-
import { ParensNode } from '../operation-node/parens-node.js';
|
|
8
|
-
import { parseReferenceExpression, } from './reference-parser.js';
|
|
9
|
-
import { parseValueExpressionOrList, } from './value-parser.js';
|
|
10
|
-
import { ValueNode } from '../operation-node/value-node.js';
|
|
11
|
-
import { createJoinBuilder, createSelectQueryBuilder } from './parse-utils.js';
|
|
12
|
-
export function parseWhereFilter(args) {
|
|
13
|
-
return parseFilter('where', args);
|
|
14
|
-
}
|
|
15
|
-
export function parseHavingFilter(args) {
|
|
16
|
-
return parseFilter('having', args);
|
|
17
|
-
}
|
|
18
|
-
export function parseOnFilter(args) {
|
|
19
|
-
return parseFilter('on', args);
|
|
20
|
-
}
|
|
21
|
-
export function parseReferenceFilter(lhs, op, rhs) {
|
|
22
|
-
return FilterNode.create(parseReferenceExpression(lhs), parseFilterOperator(op), parseReferenceExpression(rhs));
|
|
23
|
-
}
|
|
24
|
-
export function parseExistFilter(arg) {
|
|
25
|
-
return parseExistExpression('exists', arg);
|
|
26
|
-
}
|
|
27
|
-
export function parseNotExistFilter(arg) {
|
|
28
|
-
return parseExistExpression('not exists', arg);
|
|
29
|
-
}
|
|
30
|
-
export function parseFilter(type, args) {
|
|
31
|
-
if (args.length === 3) {
|
|
32
|
-
return parseThreeArgFilter(args[0], args[1], args[2]);
|
|
33
|
-
}
|
|
34
|
-
else if (args.length === 1) {
|
|
35
|
-
return parseOneArgFilter(type, args[0]);
|
|
36
|
-
}
|
|
37
|
-
throw createFilterError(type, args);
|
|
38
|
-
}
|
|
39
|
-
function parseThreeArgFilter(left, op, right) {
|
|
40
|
-
if ((op === 'is' || op === 'is not') && (isNull(right) || isBoolean(right))) {
|
|
41
|
-
return parseIsFilter(left, op, right);
|
|
42
|
-
}
|
|
43
|
-
return FilterNode.create(parseReferenceExpression(left), parseFilterOperator(op), parseValueExpressionOrList(right));
|
|
44
|
-
}
|
|
45
|
-
function parseIsFilter(left, op, right) {
|
|
46
|
-
return FilterNode.create(parseReferenceExpression(left), parseFilterOperator(op), ValueNode.createImmediate(right));
|
|
47
|
-
}
|
|
48
|
-
function parseFilterOperator(op) {
|
|
49
|
-
if (isString(op) && OPERATORS.includes(op)) {
|
|
50
|
-
return OperatorNode.create(op);
|
|
51
|
-
}
|
|
52
|
-
else if (isOperationNodeSource(op)) {
|
|
53
|
-
return op.toOperationNode();
|
|
54
|
-
}
|
|
55
|
-
throw new Error(`invalid comparison operator ${JSON.stringify(op)} passed to a filter method`);
|
|
56
|
-
}
|
|
57
|
-
function parseExistExpression(type, arg) {
|
|
58
|
-
return FilterNode.create(undefined, OperatorNode.create(type), parseValueExpressionOrList(arg));
|
|
59
|
-
}
|
|
60
|
-
function parseOneArgFilter(type, arg) {
|
|
61
|
-
if (isFunction(arg)) {
|
|
62
|
-
return GROUP_PARSERS[type](arg);
|
|
63
|
-
}
|
|
64
|
-
else if (isOperationNodeSource(arg)) {
|
|
65
|
-
const node = arg.toOperationNode();
|
|
66
|
-
if (RawNode.is(node)) {
|
|
67
|
-
return node;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
throw createFilterError(type, arg);
|
|
71
|
-
}
|
|
72
|
-
function createFilterError(type, args) {
|
|
73
|
-
return new Error(`invalid arguments passed to a '${type}' method: ${JSON.stringify(args)}`);
|
|
74
|
-
}
|
|
75
|
-
const GROUP_PARSERS = freeze({
|
|
76
|
-
where(callback) {
|
|
77
|
-
const query = callback(createSelectQueryBuilder());
|
|
78
|
-
const queryNode = query.toOperationNode();
|
|
79
|
-
if (!queryNode.where) {
|
|
80
|
-
throw new Error('no `where` methods called insided a group callback');
|
|
81
|
-
}
|
|
82
|
-
return ParensNode.create(queryNode.where.where);
|
|
83
|
-
},
|
|
84
|
-
having(callback) {
|
|
85
|
-
const query = callback(createSelectQueryBuilder());
|
|
86
|
-
const queryNode = query.toOperationNode();
|
|
87
|
-
if (!queryNode.having) {
|
|
88
|
-
throw new Error('no `having` methods called insided a group callback');
|
|
89
|
-
}
|
|
90
|
-
return ParensNode.create(queryNode.having.having);
|
|
91
|
-
},
|
|
92
|
-
on(callback) {
|
|
93
|
-
const joinBuilder = callback(createJoinBuilder('InnerJoin', 'table'));
|
|
94
|
-
const joinNode = joinBuilder.toOperationNode();
|
|
95
|
-
if (!joinNode.on) {
|
|
96
|
-
throw new Error('no `on` methods called insided a group callback');
|
|
97
|
-
}
|
|
98
|
-
return ParensNode.create(joinNode.on.on);
|
|
99
|
-
},
|
|
100
|
-
});
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { UnionNode } from '../operation-node/union-node.js';
|
|
2
|
-
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
3
|
-
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
|
-
export declare type UnionExpression<DB, O> = SelectQueryBuilder<DB, any, O> | RawBuilder<O>;
|
|
5
|
-
export declare function parseUnion(union: UnionExpression<any, any>, all: boolean): UnionNode;
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { StringReference, ExtractTypeFromReferenceExpression } from '../parser/reference-parser.js';
|
|
2
|
-
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
3
|
-
/**
|
|
4
|
-
* Helpers for type safe SQL function calls.
|
|
5
|
-
*
|
|
6
|
-
* You can always use the {@link sql} tag to call functions and build arbitrary
|
|
7
|
-
* expressions. This module simply has shortcuts for most common function calls.
|
|
8
|
-
*
|
|
9
|
-
* ### Examples
|
|
10
|
-
*
|
|
11
|
-
* ```ts
|
|
12
|
-
* const { count } = db.fn
|
|
13
|
-
*
|
|
14
|
-
* await db.selectFrom('person')
|
|
15
|
-
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
16
|
-
* .select([
|
|
17
|
-
* 'person.id',
|
|
18
|
-
* count('pet.id').as('pet_count')
|
|
19
|
-
* ])
|
|
20
|
-
* .groupBy('person.id')
|
|
21
|
-
* .having(count('pet.id'), '>', 10)
|
|
22
|
-
* .execute()
|
|
23
|
-
* ```
|
|
24
|
-
*
|
|
25
|
-
* The generated SQL (PostgreSQL):
|
|
26
|
-
*
|
|
27
|
-
* ```sql
|
|
28
|
-
* select "person"."id", count("pet"."id") as "pet_count"
|
|
29
|
-
* from "person"
|
|
30
|
-
* inner join "pet" on "pet"."owner_id" = "person"."id"
|
|
31
|
-
* group by "person"."id"
|
|
32
|
-
* having count("pet"."id") > $1
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
export declare class FunctionBuilder<DB, TB extends keyof DB> {
|
|
36
|
-
#private;
|
|
37
|
-
constructor();
|
|
38
|
-
/**
|
|
39
|
-
* Calls the `max` function for the column given as the argument.
|
|
40
|
-
*
|
|
41
|
-
* ### Examples
|
|
42
|
-
*
|
|
43
|
-
* ```ts
|
|
44
|
-
* const { max } = db.fn
|
|
45
|
-
*
|
|
46
|
-
* db.selectFrom('toy')
|
|
47
|
-
* .select(max('price').as('max_price'))
|
|
48
|
-
* .execute()
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
max<C extends StringReference<DB, TB>>(column: C): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, C>>;
|
|
52
|
-
/**
|
|
53
|
-
* Calls the `min` function for the column given as the argument.
|
|
54
|
-
*
|
|
55
|
-
* ### Examples
|
|
56
|
-
*
|
|
57
|
-
* ```ts
|
|
58
|
-
* const { min } = db.fn
|
|
59
|
-
*
|
|
60
|
-
* db.selectFrom('toy')
|
|
61
|
-
* .select(min('price').as('min_price'))
|
|
62
|
-
* .execute()
|
|
63
|
-
* ```
|
|
64
|
-
*
|
|
65
|
-
*/
|
|
66
|
-
min<C extends StringReference<DB, TB>>(column: C): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, C>>;
|
|
67
|
-
/**
|
|
68
|
-
* Calls the `avg` function for the column given as the argument.
|
|
69
|
-
*
|
|
70
|
-
* If this is used in a `select` statement the type of the selected expression
|
|
71
|
-
* will be `number | string` by default. This is because Kysely can't know the
|
|
72
|
-
* type the db driver outputs. Sometimes the output can be larger than the
|
|
73
|
-
* largest javascript number and a string is returned instead. Most drivers
|
|
74
|
-
* allow you to configure the output type of large numbers and Kysely can't
|
|
75
|
-
* know if you've done so.
|
|
76
|
-
*
|
|
77
|
-
* You can specify the output type of the expression by providing
|
|
78
|
-
* the type as the first type argument:
|
|
79
|
-
*
|
|
80
|
-
* ```ts
|
|
81
|
-
* const { avg } = db.fn
|
|
82
|
-
*
|
|
83
|
-
* db.selectFrom('toy')
|
|
84
|
-
* .select(avg<number>('price').as('avg_price'))
|
|
85
|
-
* .execute()
|
|
86
|
-
* ```
|
|
87
|
-
*/
|
|
88
|
-
avg<O extends number | string, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: C): RawBuilder<O>;
|
|
89
|
-
/**
|
|
90
|
-
* Calls the `sum` function for the column given as the argument.
|
|
91
|
-
*
|
|
92
|
-
* If this is used in a `select` statement the type of the selected expression
|
|
93
|
-
* will be `number | string | bigint` by default. This is because Kysely can't
|
|
94
|
-
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
95
|
-
* the largest javascript number and a string is returned instead. Most drivers
|
|
96
|
-
* allow you to configure the output type of large numbers and Kysely can't
|
|
97
|
-
* know if you've done so.
|
|
98
|
-
*
|
|
99
|
-
* You can specify the output type of the expression by providing
|
|
100
|
-
* the type as the first type argument:
|
|
101
|
-
*
|
|
102
|
-
* ```ts
|
|
103
|
-
* const { sum } = db.fn
|
|
104
|
-
*
|
|
105
|
-
* db.selectFrom('toy')
|
|
106
|
-
* .select(sum<number>('price').as('total_price'))
|
|
107
|
-
* .execute()
|
|
108
|
-
* ```
|
|
109
|
-
*/
|
|
110
|
-
sum<O extends number | string | bigint, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: C): RawBuilder<O>;
|
|
111
|
-
/**
|
|
112
|
-
* Calls the `count` function for the column given as the argument.
|
|
113
|
-
*
|
|
114
|
-
* If this is used in a `select` statement the type of the selected expression
|
|
115
|
-
* will be `number | string |bigint` by default. This is because Kysely can't
|
|
116
|
-
* know the type the db driver outputs. Sometimes the output can be larger than
|
|
117
|
-
* the largest javascript number and a string is returned instead. Most drivers
|
|
118
|
-
* allow you to configure the output type of large numbers and Kysely can't
|
|
119
|
-
* know if you've done so.
|
|
120
|
-
*
|
|
121
|
-
* You can specify the output type of the expression by providing
|
|
122
|
-
* the type as the first type argument:
|
|
123
|
-
*
|
|
124
|
-
* ```ts
|
|
125
|
-
* const { count } = db.fn
|
|
126
|
-
*
|
|
127
|
-
* db.selectFrom('toy')
|
|
128
|
-
* .select(count<number>('id').as('num_toys'))
|
|
129
|
-
* .execute()
|
|
130
|
-
* ```
|
|
131
|
-
*/
|
|
132
|
-
count<O extends number | string | bigint, C extends StringReference<DB, TB> = StringReference<DB, TB>>(column: C): RawBuilder<O>;
|
|
133
|
-
}
|