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
|
@@ -214,7 +214,7 @@ export class CreateTableBuilder {
|
|
|
214
214
|
* ```ts
|
|
215
215
|
* db.schema.createTable('person')
|
|
216
216
|
* .modifyFront(sql`global temporary`)
|
|
217
|
-
* .addColumn('id', 'integer', col => col
|
|
217
|
+
* .addColumn('id', 'integer', col => col.primaryKey())
|
|
218
218
|
* .addColumn('first_name', 'varchar(64)', col => col.notNull())
|
|
219
219
|
* .addColumn('last_name', 'varchar(64), col => col.notNull())
|
|
220
220
|
* .execute()
|
|
@@ -268,6 +268,41 @@ export class CreateTableBuilder {
|
|
|
268
268
|
createTableNode: CreateTableNode.cloneWithEndModifier(this.#props.createTableNode, modifier.toOperationNode()),
|
|
269
269
|
});
|
|
270
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* Calls the given function passing `this` as the only argument.
|
|
273
|
+
*
|
|
274
|
+
* ### Examples
|
|
275
|
+
*
|
|
276
|
+
* ```ts
|
|
277
|
+
* db.schema
|
|
278
|
+
* .createTable('test')
|
|
279
|
+
* .call((builder) => builder.addColumn('id', 'integer'))
|
|
280
|
+
* .execute()
|
|
281
|
+
* ```
|
|
282
|
+
*
|
|
283
|
+
* ```ts
|
|
284
|
+
* const addDefaultColumns = <T extends string, C extends string = never>(
|
|
285
|
+
* builder: CreateTableBuilder<T, C>
|
|
286
|
+
* ) => {
|
|
287
|
+
* return builder
|
|
288
|
+
* .addColumn('id', 'integer', (col) => col.notNull())
|
|
289
|
+
* .addColumn('created_at', 'date', (col) =>
|
|
290
|
+
* col.notNull().defaultTo(sql`now()`)
|
|
291
|
+
* )
|
|
292
|
+
* .addColumn('updated_at', 'date', (col) =>
|
|
293
|
+
* col.notNull().defaultTo(sql`now()`)
|
|
294
|
+
* )
|
|
295
|
+
* }
|
|
296
|
+
*
|
|
297
|
+
* db.schema
|
|
298
|
+
* .createTable('test')
|
|
299
|
+
* .call(addDefaultColumns)
|
|
300
|
+
* .execute()
|
|
301
|
+
* ```
|
|
302
|
+
*/
|
|
303
|
+
call(func) {
|
|
304
|
+
return func(this);
|
|
305
|
+
}
|
|
271
306
|
toOperationNode() {
|
|
272
307
|
return this.#props.executor.transformQuery(this.#props.createTableNode, this.#props.queryId);
|
|
273
308
|
}
|
|
@@ -4,7 +4,8 @@ import { Compilable } from '../util/compilable.js';
|
|
|
4
4
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
5
5
|
import { QueryId } from '../util/query-id.js';
|
|
6
6
|
import { CreateViewNode } from '../operation-node/create-view-node.js';
|
|
7
|
-
import {
|
|
7
|
+
import { AnySelectQueryBuilder } from '../util/type-utils.js';
|
|
8
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
8
9
|
export declare class CreateViewBuilder implements OperationNodeSource, Compilable {
|
|
9
10
|
#private;
|
|
10
11
|
constructor(props: CreateViewBuilderProps);
|
|
@@ -30,7 +31,7 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
|
|
|
30
31
|
* string opening an SQL injection vulnerability. DO NOT pass unchecked user input
|
|
31
32
|
* into the query or raw expression passed to this method!
|
|
32
33
|
*/
|
|
33
|
-
as(query: AnySelectQueryBuilder |
|
|
34
|
+
as(query: AnySelectQueryBuilder | RawBuilder<any>): CreateViewBuilder;
|
|
34
35
|
toOperationNode(): CreateViewNode;
|
|
35
36
|
compile(): CompiledQuery;
|
|
36
37
|
execute(): Promise<void>;
|
|
@@ -186,7 +186,7 @@ export declare class SchemaModule {
|
|
|
186
186
|
* .execute()
|
|
187
187
|
* ```
|
|
188
188
|
*/
|
|
189
|
-
createType(
|
|
189
|
+
createType(typeName: string): CreateTypeBuilder;
|
|
190
190
|
/**
|
|
191
191
|
* Drop a type.
|
|
192
192
|
*
|
|
@@ -201,7 +201,7 @@ export declare class SchemaModule {
|
|
|
201
201
|
* .execute()
|
|
202
202
|
* ```
|
|
203
203
|
*/
|
|
204
|
-
dropType(
|
|
204
|
+
dropType(typeName: string): DropTypeBuilder;
|
|
205
205
|
/**
|
|
206
206
|
* Returns a copy of this schema module with the given plugin installed.
|
|
207
207
|
*/
|
|
@@ -24,6 +24,7 @@ import { CreateTypeBuilder } from './create-type-builder.js';
|
|
|
24
24
|
import { DropTypeBuilder } from './drop-type-builder.js';
|
|
25
25
|
import { CreateTypeNode } from '../operation-node/create-type-node.js';
|
|
26
26
|
import { DropTypeNode } from '../operation-node/drop-type-node.js';
|
|
27
|
+
import { parseSchemableIdentifier } from '../parser/identifier-parser.js';
|
|
27
28
|
/**
|
|
28
29
|
* Provides methods for building database schema.
|
|
29
30
|
*/
|
|
@@ -199,7 +200,7 @@ export class SchemaModule {
|
|
|
199
200
|
return new AlterTableBuilder({
|
|
200
201
|
queryId: createQueryId(),
|
|
201
202
|
executor: this.#executor,
|
|
202
|
-
|
|
203
|
+
node: AlterTableNode.create(table),
|
|
203
204
|
});
|
|
204
205
|
}
|
|
205
206
|
/**
|
|
@@ -255,11 +256,11 @@ export class SchemaModule {
|
|
|
255
256
|
* .execute()
|
|
256
257
|
* ```
|
|
257
258
|
*/
|
|
258
|
-
createType(
|
|
259
|
+
createType(typeName) {
|
|
259
260
|
return new CreateTypeBuilder({
|
|
260
261
|
queryId: createQueryId(),
|
|
261
262
|
executor: this.#executor,
|
|
262
|
-
createTypeNode: CreateTypeNode.create(
|
|
263
|
+
createTypeNode: CreateTypeNode.create(parseSchemableIdentifier(typeName)),
|
|
263
264
|
});
|
|
264
265
|
}
|
|
265
266
|
/**
|
|
@@ -276,11 +277,11 @@ export class SchemaModule {
|
|
|
276
277
|
* .execute()
|
|
277
278
|
* ```
|
|
278
279
|
*/
|
|
279
|
-
dropType(
|
|
280
|
+
dropType(typeName) {
|
|
280
281
|
return new DropTypeBuilder({
|
|
281
282
|
queryId: createQueryId(),
|
|
282
283
|
executor: this.#executor,
|
|
283
|
-
dropTypeNode: DropTypeNode.create(
|
|
284
|
+
dropTypeNode: DropTypeNode.create(parseSchemableIdentifier(typeName)),
|
|
284
285
|
});
|
|
285
286
|
}
|
|
286
287
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
2
|
export declare type ExplainFormat = 'text' | 'xml' | 'json' | 'yaml' | 'traditional' | 'tree';
|
|
3
3
|
export interface Explainable {
|
|
4
|
-
explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?:
|
|
4
|
+
explain<O extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<O[]>;
|
|
5
5
|
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
2
|
+
import { InsertResult } from '../query-builder/insert-result.js';
|
|
3
|
+
import { UpdateResult } from '../query-builder/update-result.js';
|
|
4
|
+
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
5
|
+
import { Compilable } from './compilable.js';
|
|
6
|
+
/**
|
|
7
|
+
* A helper type that allows inferring a select/insert/update/delete query's result
|
|
8
|
+
* type from a query builder or compiled query.
|
|
9
|
+
*
|
|
10
|
+
* ### Examples
|
|
11
|
+
*
|
|
12
|
+
* Infer a query builder's result type:
|
|
13
|
+
*
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { InferResult } from 'kysely'
|
|
16
|
+
*
|
|
17
|
+
* const query = db
|
|
18
|
+
* .selectFrom('person')
|
|
19
|
+
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
20
|
+
* .select(['person.first_name', 'pet.name'])
|
|
21
|
+
*
|
|
22
|
+
* type QueryResult = InferResult<typeof query> // { first_name: string; name: string; }[]
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* Infer a compiled query's result type:
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* import { InferResult } from 'kysely'
|
|
29
|
+
*
|
|
30
|
+
* const compiledQuery = db
|
|
31
|
+
* .insertInto('person')
|
|
32
|
+
* .values({
|
|
33
|
+
* first_name: 'Foo',
|
|
34
|
+
* last_name: 'Barson',
|
|
35
|
+
* gender: 'other',
|
|
36
|
+
* age: 15,
|
|
37
|
+
* })
|
|
38
|
+
* .returningAll()
|
|
39
|
+
* .compile()
|
|
40
|
+
*
|
|
41
|
+
* type QueryResult = InferResult<typeof compiledQuery> // Selectable<Person>[]
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare type InferResult<C extends Compilable<any> | CompiledQuery<any>> = C extends Compilable<infer O> ? ResolveResult<O> : C extends CompiledQuery<infer O> ? ResolveResult<O> : never;
|
|
45
|
+
declare type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult ? O : O[];
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/// <reference types="./log-once.d.ts" />
|
|
2
|
+
const LOGGED_MESSAGES = new Set();
|
|
3
|
+
/**
|
|
4
|
+
* Use for system-level logging, such as deprecation messages.
|
|
5
|
+
* Logs a message and ensures it won't be logged again.
|
|
6
|
+
*/
|
|
7
|
+
export function logOnce(message) {
|
|
8
|
+
if (LOGGED_MESSAGES.has(message)) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
LOGGED_MESSAGES.add(message);
|
|
12
|
+
console.log(message);
|
|
13
|
+
}
|
|
@@ -11,6 +11,7 @@ export declare function isBuffer(obj: unknown): obj is {
|
|
|
11
11
|
};
|
|
12
12
|
export declare function isFunction(obj: unknown): obj is Function;
|
|
13
13
|
export declare function isObject(obj: unknown): obj is Record<string, unknown>;
|
|
14
|
+
export declare function isArrayBufferOrView(obj: unknown): obj is ArrayBuffer | ArrayBufferView;
|
|
14
15
|
export declare function getLast<T>(arr: ArrayLike<T>): T | undefined;
|
|
15
16
|
export declare function freeze<T>(obj: T): Readonly<T>;
|
|
16
17
|
export declare function asArray<T>(arg: T | T[]): T[];
|
|
@@ -40,6 +40,9 @@ export function isFunction(obj) {
|
|
|
40
40
|
export function isObject(obj) {
|
|
41
41
|
return typeof obj === 'object' && obj !== null;
|
|
42
42
|
}
|
|
43
|
+
export function isArrayBufferOrView(obj) {
|
|
44
|
+
return obj instanceof ArrayBuffer || ArrayBuffer.isView(obj);
|
|
45
|
+
}
|
|
43
46
|
export function getLast(arr) {
|
|
44
47
|
return arr[arr.length - 1];
|
|
45
48
|
}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
3
|
-
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
1
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
4
2
|
import { InsertResult } from '../query-builder/insert-result.js';
|
|
5
3
|
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
6
4
|
import { UpdateResult } from '../query-builder/update-result.js';
|
|
@@ -99,21 +97,11 @@ export declare type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = {
|
|
|
99
97
|
*/
|
|
100
98
|
export declare type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
|
|
101
99
|
export declare type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
|
|
102
|
-
export declare type AnyAliasedQueryBuilder = AliasedQueryBuilder<any, any, any, any>;
|
|
103
|
-
export declare type AnyRawBuilder = RawBuilder<any>;
|
|
104
|
-
export declare type AnyAliasedRawBuilder = AliasedRawBuilder<any, any>;
|
|
105
|
-
export declare type SelectQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnySelectQueryBuilder;
|
|
106
|
-
export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
|
|
107
|
-
export declare type RawBuilderFactory<DB, TB extends keyof DB, O = any> = (qb: ExpressionBuilder<DB, TB>) => RawBuilder<O>;
|
|
108
|
-
export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
|
|
109
100
|
export declare type SingleResultType<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : O | undefined;
|
|
110
101
|
export declare type UnknownRow = Record<string, unknown>;
|
|
111
102
|
export declare type Nullable<T> = {
|
|
112
103
|
[P in keyof T]: T[P] | null;
|
|
113
104
|
};
|
|
114
|
-
export declare type NullableValues<T> = {
|
|
115
|
-
[P in keyof T]: Nullable<T[P]>;
|
|
116
|
-
};
|
|
117
105
|
/**
|
|
118
106
|
* Takes all properties from T1 and merges all properties from T2
|
|
119
107
|
* that don't exist in T1 as optional properties.
|
|
@@ -135,3 +123,5 @@ export declare type NullableValues<T> = {
|
|
|
135
123
|
* // { name: string, age: number, species?: 'cat' | 'dog' }
|
|
136
124
|
*/
|
|
137
125
|
export declare type MergePartial<T1, T2> = T1 & Partial<Omit<T2, keyof T1>>;
|
|
126
|
+
export declare type IsNever<T> = [T] extends [never] ? true : false;
|
|
127
|
+
export declare type Equals<T, U> = (<G>() => G extends T ? 1 : 2) extends <G>() => G extends U ? 1 : 2 ? true : false;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kysely",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.23.0",
|
|
4
4
|
"description": "Type safe SQL query builder",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -41,6 +41,9 @@
|
|
|
41
41
|
},
|
|
42
42
|
"author": "Sami Koskimäki <sami@jakso.me>",
|
|
43
43
|
"license": "MIT",
|
|
44
|
+
"contributors": [
|
|
45
|
+
"Igal Klebanov <igalklebanov@gmail.com>"
|
|
46
|
+
],
|
|
44
47
|
"devDependencies": {
|
|
45
48
|
"@types/better-sqlite3": "^7.5.0",
|
|
46
49
|
"@types/chai": "^4.3.1",
|
|
@@ -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,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,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,109 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseFilter = exports.parseNotExistFilter = exports.parseExistFilter = exports.parseReferenceFilter = exports.parseOnFilter = exports.parseHavingFilter = exports.parseWhereFilter = void 0;
|
|
4
|
-
const filter_node_js_1 = require("../operation-node/filter-node.js");
|
|
5
|
-
const object_utils_js_1 = require("../util/object-utils.js");
|
|
6
|
-
const operation_node_source_js_1 = require("../operation-node/operation-node-source.js");
|
|
7
|
-
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
8
|
-
const operator_node_js_1 = require("../operation-node/operator-node.js");
|
|
9
|
-
const parens_node_js_1 = require("../operation-node/parens-node.js");
|
|
10
|
-
const reference_parser_js_1 = require("./reference-parser.js");
|
|
11
|
-
const value_parser_js_1 = require("./value-parser.js");
|
|
12
|
-
const value_node_js_1 = require("../operation-node/value-node.js");
|
|
13
|
-
const parse_utils_js_1 = require("./parse-utils.js");
|
|
14
|
-
function parseWhereFilter(args) {
|
|
15
|
-
return parseFilter('where', args);
|
|
16
|
-
}
|
|
17
|
-
exports.parseWhereFilter = parseWhereFilter;
|
|
18
|
-
function parseHavingFilter(args) {
|
|
19
|
-
return parseFilter('having', args);
|
|
20
|
-
}
|
|
21
|
-
exports.parseHavingFilter = parseHavingFilter;
|
|
22
|
-
function parseOnFilter(args) {
|
|
23
|
-
return parseFilter('on', args);
|
|
24
|
-
}
|
|
25
|
-
exports.parseOnFilter = parseOnFilter;
|
|
26
|
-
function parseReferenceFilter(lhs, op, rhs) {
|
|
27
|
-
return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(lhs), parseFilterOperator(op), (0, reference_parser_js_1.parseReferenceExpression)(rhs));
|
|
28
|
-
}
|
|
29
|
-
exports.parseReferenceFilter = parseReferenceFilter;
|
|
30
|
-
function parseExistFilter(arg) {
|
|
31
|
-
return parseExistExpression('exists', arg);
|
|
32
|
-
}
|
|
33
|
-
exports.parseExistFilter = parseExistFilter;
|
|
34
|
-
function parseNotExistFilter(arg) {
|
|
35
|
-
return parseExistExpression('not exists', arg);
|
|
36
|
-
}
|
|
37
|
-
exports.parseNotExistFilter = parseNotExistFilter;
|
|
38
|
-
function parseFilter(type, args) {
|
|
39
|
-
if (args.length === 3) {
|
|
40
|
-
return parseThreeArgFilter(args[0], args[1], args[2]);
|
|
41
|
-
}
|
|
42
|
-
else if (args.length === 1) {
|
|
43
|
-
return parseOneArgFilter(type, args[0]);
|
|
44
|
-
}
|
|
45
|
-
throw createFilterError(type, args);
|
|
46
|
-
}
|
|
47
|
-
exports.parseFilter = parseFilter;
|
|
48
|
-
function parseThreeArgFilter(left, op, right) {
|
|
49
|
-
if ((op === 'is' || op === 'is not') && ((0, object_utils_js_1.isNull)(right) || (0, object_utils_js_1.isBoolean)(right))) {
|
|
50
|
-
return parseIsFilter(left, op, right);
|
|
51
|
-
}
|
|
52
|
-
return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(left), parseFilterOperator(op), (0, value_parser_js_1.parseValueExpressionOrList)(right));
|
|
53
|
-
}
|
|
54
|
-
function parseIsFilter(left, op, right) {
|
|
55
|
-
return filter_node_js_1.FilterNode.create((0, reference_parser_js_1.parseReferenceExpression)(left), parseFilterOperator(op), value_node_js_1.ValueNode.createImmediate(right));
|
|
56
|
-
}
|
|
57
|
-
function parseFilterOperator(op) {
|
|
58
|
-
if ((0, object_utils_js_1.isString)(op) && operator_node_js_1.OPERATORS.includes(op)) {
|
|
59
|
-
return operator_node_js_1.OperatorNode.create(op);
|
|
60
|
-
}
|
|
61
|
-
else if ((0, operation_node_source_js_1.isOperationNodeSource)(op)) {
|
|
62
|
-
return op.toOperationNode();
|
|
63
|
-
}
|
|
64
|
-
throw new Error(`invalid comparison operator ${JSON.stringify(op)} passed to a filter method`);
|
|
65
|
-
}
|
|
66
|
-
function parseExistExpression(type, arg) {
|
|
67
|
-
return filter_node_js_1.FilterNode.create(undefined, operator_node_js_1.OperatorNode.create(type), (0, value_parser_js_1.parseValueExpressionOrList)(arg));
|
|
68
|
-
}
|
|
69
|
-
function parseOneArgFilter(type, arg) {
|
|
70
|
-
if ((0, object_utils_js_1.isFunction)(arg)) {
|
|
71
|
-
return GROUP_PARSERS[type](arg);
|
|
72
|
-
}
|
|
73
|
-
else if ((0, operation_node_source_js_1.isOperationNodeSource)(arg)) {
|
|
74
|
-
const node = arg.toOperationNode();
|
|
75
|
-
if (raw_node_js_1.RawNode.is(node)) {
|
|
76
|
-
return node;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
throw createFilterError(type, arg);
|
|
80
|
-
}
|
|
81
|
-
function createFilterError(type, args) {
|
|
82
|
-
return new Error(`invalid arguments passed to a '${type}' method: ${JSON.stringify(args)}`);
|
|
83
|
-
}
|
|
84
|
-
const GROUP_PARSERS = (0, object_utils_js_1.freeze)({
|
|
85
|
-
where(callback) {
|
|
86
|
-
const query = callback((0, parse_utils_js_1.createSelectQueryBuilder)());
|
|
87
|
-
const queryNode = query.toOperationNode();
|
|
88
|
-
if (!queryNode.where) {
|
|
89
|
-
throw new Error('no `where` methods called insided a group callback');
|
|
90
|
-
}
|
|
91
|
-
return parens_node_js_1.ParensNode.create(queryNode.where.where);
|
|
92
|
-
},
|
|
93
|
-
having(callback) {
|
|
94
|
-
const query = callback((0, parse_utils_js_1.createSelectQueryBuilder)());
|
|
95
|
-
const queryNode = query.toOperationNode();
|
|
96
|
-
if (!queryNode.having) {
|
|
97
|
-
throw new Error('no `having` methods called insided a group callback');
|
|
98
|
-
}
|
|
99
|
-
return parens_node_js_1.ParensNode.create(queryNode.having.having);
|
|
100
|
-
},
|
|
101
|
-
on(callback) {
|
|
102
|
-
const joinBuilder = callback((0, parse_utils_js_1.createJoinBuilder)('InnerJoin', 'table'));
|
|
103
|
-
const joinNode = joinBuilder.toOperationNode();
|
|
104
|
-
if (!joinNode.on) {
|
|
105
|
-
throw new Error('no `on` methods called insided a group callback');
|
|
106
|
-
}
|
|
107
|
-
return parens_node_js_1.ParensNode.create(joinNode.on.on);
|
|
108
|
-
},
|
|
109
|
-
});
|
|
@@ -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,8 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseUnion = void 0;
|
|
4
|
-
const union_node_js_1 = require("../operation-node/union-node.js");
|
|
5
|
-
function parseUnion(union, all) {
|
|
6
|
-
return union_node_js_1.UnionNode.create(union.toOperationNode(), all);
|
|
7
|
-
}
|
|
8
|
-
exports.parseUnion = parseUnion;
|
|
@@ -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
|
-
}
|