kysely 0.27.6 → 0.28.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/README.md +169 -1
- package/deno.check.d.ts +7 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
- package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/cjs/driver/database-connection.d.ts +0 -4
- package/dist/cjs/driver/driver.d.ts +17 -0
- package/dist/cjs/driver/driver.js +13 -1
- package/dist/cjs/driver/dummy-driver.d.ts +3 -0
- package/dist/cjs/driver/dummy-driver.js +9 -0
- package/dist/cjs/driver/runtime-driver.d.ts +4 -0
- package/dist/cjs/driver/runtime-driver.js +43 -3
- package/dist/cjs/expression/expression-builder.d.ts +7 -10
- package/dist/cjs/helpers/postgres.d.ts +48 -0
- package/dist/cjs/helpers/postgres.js +50 -0
- package/dist/cjs/index.d.ts +13 -2
- package/dist/cjs/index.js +13 -2
- package/dist/cjs/kysely.d.ts +339 -2
- package/dist/cjs/kysely.js +465 -11
- package/dist/cjs/migration/migrator.d.ts +8 -0
- package/dist/cjs/migration/migrator.js +1 -1
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
- package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
- package/dist/cjs/operation-node/collate-node.d.ts +13 -0
- package/dist/cjs/operation-node/collate-node.js +19 -0
- package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/delete-query-node.js +11 -15
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
- package/dist/cjs/operation-node/or-action-node.js +18 -0
- package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/cjs/operation-node/order-by-item-node.js +6 -0
- package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/cjs/operation-node/query-node.d.ts +7 -0
- package/dist/cjs/operation-node/query-node.js +15 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
- package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/select-query-node.js +11 -15
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/update-query-node.js +5 -2
- package/dist/cjs/parser/collate-parser.d.ts +1 -0
- package/dist/cjs/parser/collate-parser.js +2 -0
- package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
- package/dist/cjs/parser/delete-from-parser.js +2 -0
- package/dist/cjs/parser/join-parser.d.ts +1 -1
- package/dist/cjs/parser/join-parser.js +7 -1
- package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
- package/dist/cjs/parser/merge-into-parser.js +2 -0
- package/dist/cjs/parser/order-by-parser.d.ts +18 -5
- package/dist/cjs/parser/order-by-parser.js +24 -14
- package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
- package/dist/cjs/parser/savepoint-parser.js +11 -0
- package/dist/cjs/parser/select-from-parser.d.ts +4 -0
- package/dist/cjs/parser/select-from-parser.js +2 -0
- package/dist/cjs/parser/table-parser.d.ts +2 -5
- package/dist/cjs/parser/update-parser.d.ts +5 -0
- package/dist/cjs/parser/update-parser.js +2 -0
- package/dist/cjs/parser/update-set-parser.d.ts +7 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +6 -5
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +29 -24
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
- package/dist/cjs/query-builder/cte-builder.js +0 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/cjs/query-builder/delete-query-builder.js +12 -78
- package/dist/cjs/query-builder/function-module.d.ts +31 -4
- package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/cjs/query-builder/insert-query-builder.js +197 -10
- package/dist/cjs/query-builder/join-builder.js +0 -2
- package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/cjs/query-builder/merge-query-builder.js +28 -7
- package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
- package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
- package/dist/cjs/query-builder/order-by-interface.js +2 -0
- package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
- package/dist/cjs/query-builder/over-builder.d.ts +43 -6
- package/dist/cjs/query-builder/over-builder.js +8 -25
- package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
- package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
- package/dist/cjs/query-builder/select-query-builder.js +26 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
- package/dist/cjs/query-builder/update-query-builder.js +17 -15
- package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
- package/dist/cjs/query-compiler/compiled-query.js +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
- package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
- package/dist/cjs/query-creator.d.ts +23 -25
- package/dist/cjs/query-creator.js +280 -8
- package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
- package/dist/cjs/query-executor/default-query-executor.js +2 -2
- package/dist/cjs/query-executor/query-executor-base.js +7 -25
- package/dist/cjs/raw-builder/raw-builder.js +0 -3
- package/dist/cjs/raw-builder/sql.d.ts +3 -3
- package/dist/cjs/raw-builder/sql.js +1 -1
- package/dist/cjs/schema/alter-column-builder.js +0 -3
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
- package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
- package/dist/cjs/schema/alter-table-builder.js +21 -10
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/cjs/schema/alter-table-executor.js +0 -2
- package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
- package/dist/cjs/schema/check-constraint-builder.js +20 -0
- package/dist/cjs/schema/column-definition-builder.js +0 -2
- package/dist/cjs/schema/create-index-builder.js +1 -3
- package/dist/cjs/schema/create-schema-builder.js +0 -2
- package/dist/cjs/schema/create-table-builder.d.ts +5 -4
- package/dist/cjs/schema/create-table-builder.js +9 -7
- package/dist/cjs/schema/create-type-builder.d.ts +1 -1
- package/dist/cjs/schema/create-type-builder.js +0 -2
- package/dist/cjs/schema/create-view-builder.js +0 -2
- package/dist/cjs/schema/drop-index-builder.js +0 -2
- package/dist/cjs/schema/drop-schema-builder.js +0 -2
- package/dist/cjs/schema/drop-table-builder.js +0 -2
- package/dist/cjs/schema/drop-type-builder.js +0 -2
- package/dist/cjs/schema/drop-view-builder.js +0 -2
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
- package/dist/cjs/schema/schema.d.ts +14 -0
- package/dist/cjs/schema/schema.js +21 -0
- package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/cjs/schema/unique-constraint-builder.js +26 -5
- package/dist/cjs/util/infer-result.d.ts +1 -1
- package/dist/cjs/util/log.d.ts +1 -0
- package/dist/cjs/util/log.js +3 -2
- package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
- package/dist/cjs/util/provide-controlled-connection.js +24 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
- package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/esm/driver/database-connection.d.ts +0 -4
- package/dist/esm/driver/driver.d.ts +17 -0
- package/dist/esm/driver/driver.js +11 -0
- package/dist/esm/driver/dummy-driver.d.ts +3 -0
- package/dist/esm/driver/dummy-driver.js +9 -0
- package/dist/esm/driver/runtime-driver.d.ts +4 -0
- package/dist/esm/driver/runtime-driver.js +43 -3
- package/dist/esm/expression/expression-builder.d.ts +7 -10
- package/dist/esm/helpers/postgres.d.ts +48 -0
- package/dist/esm/helpers/postgres.js +49 -0
- package/dist/esm/index.d.ts +13 -2
- package/dist/esm/index.js +11 -1
- package/dist/esm/kysely.d.ts +339 -2
- package/dist/esm/kysely.js +461 -10
- package/dist/esm/migration/migrator.d.ts +8 -0
- package/dist/esm/migration/migrator.js +1 -1
- package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/esm/operation-node/aggregate-function-node.js +4 -3
- package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
- package/dist/esm/operation-node/collate-node.d.ts +13 -0
- package/dist/esm/operation-node/collate-node.js +17 -0
- package/dist/esm/operation-node/constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
- package/dist/esm/operation-node/delete-query-node.js +11 -15
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/esm/operation-node/operation-node-transformer.js +352 -312
- package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/esm/operation-node/operation-node-visitor.js +4 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/or-action-node.d.ts +12 -0
- package/dist/esm/operation-node/or-action-node.js +16 -0
- package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/esm/operation-node/order-by-item-node.js +6 -0
- package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/esm/operation-node/query-node.d.ts +7 -0
- package/dist/esm/operation-node/query-node.js +15 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
- package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/esm/operation-node/rename-constraint-node.js +18 -0
- package/dist/esm/operation-node/select-query-node.d.ts +8 -2
- package/dist/esm/operation-node/select-query-node.js +11 -15
- package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/update-query-node.js +5 -2
- package/dist/esm/parser/collate-parser.d.ts +1 -0
- package/dist/esm/parser/collate-parser.js +2 -0
- package/dist/esm/parser/delete-from-parser.d.ts +5 -0
- package/dist/esm/parser/delete-from-parser.js +2 -0
- package/dist/esm/parser/join-parser.d.ts +1 -1
- package/dist/esm/parser/join-parser.js +7 -1
- package/dist/esm/parser/merge-into-parser.d.ts +5 -0
- package/dist/esm/parser/merge-into-parser.js +2 -0
- package/dist/esm/parser/order-by-parser.d.ts +18 -5
- package/dist/esm/parser/order-by-parser.js +27 -17
- package/dist/esm/parser/savepoint-parser.d.ts +4 -0
- package/dist/esm/parser/savepoint-parser.js +9 -0
- package/dist/esm/parser/select-from-parser.d.ts +4 -0
- package/dist/esm/parser/select-from-parser.js +2 -0
- package/dist/esm/parser/table-parser.d.ts +2 -5
- package/dist/esm/parser/update-parser.d.ts +5 -0
- package/dist/esm/parser/update-parser.js +2 -0
- package/dist/esm/parser/update-set-parser.d.ts +7 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +6 -5
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +29 -24
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
- package/dist/esm/query-builder/cte-builder.js +0 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/esm/query-builder/delete-query-builder.js +12 -78
- package/dist/esm/query-builder/function-module.d.ts +31 -4
- package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/esm/query-builder/insert-query-builder.js +197 -10
- package/dist/esm/query-builder/join-builder.js +0 -2
- package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/esm/query-builder/merge-query-builder.js +29 -8
- package/dist/esm/query-builder/on-conflict-builder.js +0 -4
- package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
- package/dist/esm/query-builder/order-by-interface.js +2 -0
- package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/esm/query-builder/order-by-item-builder.js +72 -0
- package/dist/esm/query-builder/over-builder.d.ts +43 -6
- package/dist/esm/query-builder/over-builder.js +8 -25
- package/dist/esm/query-builder/returning-interface.d.ts +20 -3
- package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
- package/dist/esm/query-builder/select-query-builder.js +26 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
- package/dist/esm/query-builder/update-query-builder.js +17 -15
- package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
- package/dist/esm/query-compiler/compiled-query.js +2 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/esm/query-compiler/default-query-compiler.js +97 -2
- package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
- package/dist/esm/query-creator.d.ts +23 -25
- package/dist/esm/query-creator.js +281 -9
- package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
- package/dist/esm/query-executor/default-query-executor.js +2 -2
- package/dist/esm/query-executor/query-executor-base.js +7 -25
- package/dist/esm/raw-builder/raw-builder.js +0 -3
- package/dist/esm/raw-builder/sql.d.ts +3 -3
- package/dist/esm/raw-builder/sql.js +1 -1
- package/dist/esm/schema/alter-column-builder.js +0 -3
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
- package/dist/esm/schema/alter-table-builder.d.ts +7 -3
- package/dist/esm/schema/alter-table-builder.js +22 -11
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/esm/schema/alter-table-executor.js +0 -2
- package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
- package/dist/esm/schema/check-constraint-builder.js +17 -0
- package/dist/esm/schema/column-definition-builder.js +0 -2
- package/dist/esm/schema/create-index-builder.js +1 -3
- package/dist/esm/schema/create-schema-builder.js +0 -2
- package/dist/esm/schema/create-table-builder.d.ts +5 -4
- package/dist/esm/schema/create-table-builder.js +10 -8
- package/dist/esm/schema/create-type-builder.d.ts +1 -1
- package/dist/esm/schema/create-type-builder.js +0 -2
- package/dist/esm/schema/create-view-builder.js +0 -2
- package/dist/esm/schema/drop-index-builder.js +0 -2
- package/dist/esm/schema/drop-schema-builder.js +0 -2
- package/dist/esm/schema/drop-table-builder.js +0 -2
- package/dist/esm/schema/drop-type-builder.js +0 -2
- package/dist/esm/schema/drop-view-builder.js +0 -2
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
- package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
- package/dist/esm/schema/schema.d.ts +14 -0
- package/dist/esm/schema/schema.js +21 -0
- package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/esm/schema/unique-constraint-builder.js +26 -5
- package/dist/esm/util/infer-result.d.ts +1 -1
- package/dist/esm/util/log.d.ts +1 -0
- package/dist/esm/util/log.js +3 -2
- package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
- package/dist/esm/util/provide-controlled-connection.js +22 -0
- package/outdated-typescript.d.ts +5 -0
- package/package.json +16 -2
- package/CONTRIBUTING.md +0 -168
- package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/cjs/util/prevent-await.d.ts +0 -1
- package/dist/cjs/util/prevent-await.js +0 -13
- package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/esm/util/prevent-await.d.ts +0 -1
- package/dist/esm/util/prevent-await.js +0 -11
|
@@ -1,38 +1,22 @@
|
|
|
1
1
|
/// <reference types="./over-builder.d.ts" />
|
|
2
2
|
import { OverNode } from '../operation-node/over-node.js';
|
|
3
|
+
import { QueryNode } from '../operation-node/query-node.js';
|
|
3
4
|
import { parseOrderBy, } from '../parser/order-by-parser.js';
|
|
4
5
|
import { parsePartitionBy, } from '../parser/partition-by-parser.js';
|
|
5
6
|
import { freeze } from '../util/object-utils.js';
|
|
6
|
-
import { preventAwait } from '../util/prevent-await.js';
|
|
7
7
|
export class OverBuilder {
|
|
8
8
|
#props;
|
|
9
9
|
constructor(props) {
|
|
10
10
|
this.#props = freeze(props);
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
* .select(
|
|
19
|
-
* (eb) => eb.fn.avg<number>('age').over(
|
|
20
|
-
* ob => ob.orderBy('first_name', 'asc').orderBy('last_name', 'asc')
|
|
21
|
-
* ).as('average_age')
|
|
22
|
-
* )
|
|
23
|
-
* .execute()
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* The generated SQL (PostgreSQL):
|
|
27
|
-
*
|
|
28
|
-
* ```sql
|
|
29
|
-
* select avg("age") over(order by "first_name" asc, "last_name" asc) as "average_age"
|
|
30
|
-
* from "person"
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
orderBy(orderBy, direction) {
|
|
12
|
+
orderBy(...args) {
|
|
13
|
+
return new OverBuilder({
|
|
14
|
+
overNode: OverNode.cloneWithOrderByItems(this.#props.overNode, parseOrderBy(args)),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
clearOrderBy() {
|
|
34
18
|
return new OverBuilder({
|
|
35
|
-
overNode:
|
|
19
|
+
overNode: QueryNode.cloneWithoutOrderBy(this.#props.overNode),
|
|
36
20
|
});
|
|
37
21
|
}
|
|
38
22
|
partitionBy(partitionBy) {
|
|
@@ -51,4 +35,3 @@ export class OverBuilder {
|
|
|
51
35
|
return this.#props.overNode;
|
|
52
36
|
}
|
|
53
37
|
}
|
|
54
|
-
preventAwait(OverBuilder, "don't await OverBuilder instances. They are never executed directly and are always just a part of a query.");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
1
|
+
import { ReturningAllRow, ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
2
2
|
import { SelectCallback, SelectExpression } from '../parser/select-parser.js';
|
|
3
3
|
import { Selectable } from '../util/column-type.js';
|
|
4
4
|
export interface ReturningInterface<DB, TB extends keyof DB, O> {
|
|
@@ -6,7 +6,7 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
|
|
|
6
6
|
* Allows you to return data from modified rows.
|
|
7
7
|
*
|
|
8
8
|
* On supported databases like PostgreSQL, this method can be chained to
|
|
9
|
-
* `insert`, `update` and `
|
|
9
|
+
* `insert`, `update`, `delete` and `merge` queries to return data.
|
|
10
10
|
*
|
|
11
11
|
* Note that on SQLite you need to give aliases for the expressions to avoid
|
|
12
12
|
* [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
|
|
@@ -65,10 +65,27 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
|
|
|
65
65
|
returning<CB extends SelectCallback<DB, TB>>(callback: CB): ReturningInterface<DB, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
66
66
|
returning<SE extends SelectExpression<DB, TB>>(selection: SE): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
67
67
|
/**
|
|
68
|
-
* Adds a `returning *` to an insert/update/delete query on databases
|
|
68
|
+
* Adds a `returning *` to an insert/update/delete/merge query on databases
|
|
69
69
|
* that support `returning` such as PostgreSQL.
|
|
70
70
|
*
|
|
71
71
|
* Also see the {@link returning} method.
|
|
72
72
|
*/
|
|
73
73
|
returningAll(): ReturningInterface<DB, TB, Selectable<DB[TB]>>;
|
|
74
74
|
}
|
|
75
|
+
export interface MultiTableReturningInterface<DB, TB extends keyof DB, O> extends ReturningInterface<DB, TB, O> {
|
|
76
|
+
/**
|
|
77
|
+
* Adds a `returning *` or `returning table.*` to an insert/update/delete/merge
|
|
78
|
+
* query on databases that support `returning` such as PostgreSQL.
|
|
79
|
+
*
|
|
80
|
+
* Also see the {@link returning} method.
|
|
81
|
+
*/
|
|
82
|
+
returningAll<T extends TB>(tables: ReadonlyArray<T>): MultiTableReturningInterface<DB, TB, ReturningAllRow<DB, T, O>>;
|
|
83
|
+
/**
|
|
84
|
+
* Adds a `returning *` to an insert/update/delete/merge query on databases
|
|
85
|
+
* that support `returning` such as PostgreSQL.
|
|
86
|
+
*
|
|
87
|
+
* Also see the {@link returning} method.
|
|
88
|
+
*/
|
|
89
|
+
returningAll<T extends TB>(table: T): MultiTableReturningInterface<DB, TB, ReturningAllRow<DB, T, O>>;
|
|
90
|
+
returningAll(): ReturningInterface<DB, TB, Selectable<DB[TB]>>;
|
|
91
|
+
}
|
|
@@ -6,7 +6,7 @@ import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
|
6
6
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
7
7
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
8
8
|
import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, Simplify, SimplifySingleResult, SqlBool } from '../util/type-utils.js';
|
|
9
|
-
import {
|
|
9
|
+
import { DirectedOrderByStringReference, OrderByExpression, OrderByModifiers } from '../parser/order-by-parser.js';
|
|
10
10
|
import { Compilable } from '../util/compilable.js';
|
|
11
11
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
12
12
|
import { QueryId } from '../util/query-id.js';
|
|
@@ -28,7 +28,8 @@ import { SelectQueryBuilderExpression } from './select-query-builder-expression.
|
|
|
28
28
|
import { ValueExpression } from '../parser/value-parser.js';
|
|
29
29
|
import { FetchModifier } from '../operation-node/fetch-node.js';
|
|
30
30
|
import { TopModifier } from '../operation-node/top-node.js';
|
|
31
|
-
|
|
31
|
+
import { OrderByInterface } from './order-by-interface.js';
|
|
32
|
+
export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInterface<DB, TB>, HavingInterface<DB, TB>, OrderByInterface<DB, TB, O>, SelectQueryBuilderExpression<O>, Compilable<O>, Explainable, Streamable<O> {
|
|
32
33
|
/**
|
|
33
34
|
* Adds a `where` expression to the query.
|
|
34
35
|
*
|
|
@@ -505,7 +506,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
505
506
|
* import { sql } from 'kysely'
|
|
506
507
|
*
|
|
507
508
|
* const persons = await db.selectFrom('person')
|
|
508
|
-
* .select(({ eb, selectFrom, or }) => [
|
|
509
|
+
* .select(({ eb, selectFrom, or, val, lit }) => [
|
|
509
510
|
* // Select a correlated subquery
|
|
510
511
|
* selectFrom('pet')
|
|
511
512
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
@@ -522,7 +523,13 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
522
523
|
* ]).as('is_jennifer_or_arnold'),
|
|
523
524
|
*
|
|
524
525
|
* // Select a raw sql expression
|
|
525
|
-
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name')
|
|
526
|
+
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
527
|
+
*
|
|
528
|
+
* // Select a static string value
|
|
529
|
+
* val('Some value').as('string_value'),
|
|
530
|
+
*
|
|
531
|
+
* // Select a literal value
|
|
532
|
+
* lit(42).as('literal_value'),
|
|
526
533
|
* ])
|
|
527
534
|
* .execute()
|
|
528
535
|
* ```
|
|
@@ -539,7 +546,9 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
539
546
|
* limit $1
|
|
540
547
|
* ) as "pet_name",
|
|
541
548
|
* ("first_name" = $2 or "first_name" = $3) as "jennifer_or_arnold",
|
|
542
|
-
* concat(first_name, ' ', last_name) as "full_name"
|
|
549
|
+
* concat(first_name, ' ', last_name) as "full_name",
|
|
550
|
+
* $4 as "string_value",
|
|
551
|
+
* 42 as "literal_value"
|
|
543
552
|
* from "person"
|
|
544
553
|
* ```
|
|
545
554
|
*
|
|
@@ -803,13 +812,13 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
803
812
|
selectAll<T extends TB>(table: T): SelectQueryBuilder<DB, TB, O & Selectable<DB[T]>>;
|
|
804
813
|
selectAll(): SelectQueryBuilder<DB, TB, O & AllSelection<DB, TB>>;
|
|
805
814
|
/**
|
|
806
|
-
* Joins another table to the query using an inner join
|
|
815
|
+
* Joins another table to the query using an `inner join`.
|
|
807
816
|
*
|
|
808
817
|
* ### Examples
|
|
809
818
|
*
|
|
810
819
|
* <!-- siteExample("join", "Simple inner join", 10) -->
|
|
811
820
|
*
|
|
812
|
-
* Simple inner
|
|
821
|
+
* Simple `inner join`s can be done by providing a table name and two columns to join:
|
|
813
822
|
*
|
|
814
823
|
* ```ts
|
|
815
824
|
* const result = await db
|
|
@@ -929,23 +938,31 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
929
938
|
innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
930
939
|
innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
931
940
|
/**
|
|
932
|
-
* Just like {@link innerJoin} but adds a left join instead of an inner join
|
|
941
|
+
* Just like {@link innerJoin} but adds a `left join` instead of an `inner join`.
|
|
933
942
|
*/
|
|
934
943
|
leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithLeftJoin<DB, TB, O, TE>;
|
|
935
944
|
leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithLeftJoin<DB, TB, O, TE>;
|
|
936
945
|
/**
|
|
937
|
-
* Just like {@link innerJoin} but adds a right join instead of an inner join
|
|
946
|
+
* Just like {@link innerJoin} but adds a `right join` instead of an `inner join`.
|
|
938
947
|
*/
|
|
939
948
|
rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithRightJoin<DB, TB, O, TE>;
|
|
940
949
|
rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithRightJoin<DB, TB, O, TE>;
|
|
941
950
|
/**
|
|
942
|
-
* Just like {@link innerJoin} but adds a full join instead of an inner join
|
|
951
|
+
* Just like {@link innerJoin} but adds a `full join` instead of an `inner join`.
|
|
952
|
+
*
|
|
953
|
+
* This is only supported by some dialects like PostgreSQL, MS SQL Server and SQLite.
|
|
943
954
|
*/
|
|
944
955
|
fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithFullJoin<DB, TB, O, TE>;
|
|
945
956
|
fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithFullJoin<DB, TB, O, TE>;
|
|
957
|
+
/**
|
|
958
|
+
* Just like {@link innerJoin} but adds a `cross join` instead of an `inner join`.
|
|
959
|
+
*/
|
|
960
|
+
crossJoin<TE extends TableExpression<DB, TB>>(table: TE): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
946
961
|
/**
|
|
947
962
|
* Just like {@link innerJoin} but adds a lateral join instead of an inner join.
|
|
948
963
|
*
|
|
964
|
+
* This is only supported by some dialects like PostgreSQL and MySQL.
|
|
965
|
+
*
|
|
949
966
|
* ### Examples
|
|
950
967
|
*
|
|
951
968
|
* ```ts
|
|
@@ -979,7 +996,10 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
979
996
|
innerJoinLateral<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
980
997
|
innerJoinLateral<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
981
998
|
/**
|
|
982
|
-
* Just like {@link innerJoin} but adds a
|
|
999
|
+
* Just like {@link innerJoin} but adds a `left join lateral` instead of an `inner join`.
|
|
1000
|
+
*
|
|
1001
|
+
* This is only supported by some dialects like PostgreSQL and MySQL.
|
|
1002
|
+
*
|
|
983
1003
|
* ### Examples
|
|
984
1004
|
*
|
|
985
1005
|
* ```ts
|
|
@@ -1013,119 +1033,81 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1013
1033
|
leftJoinLateral<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithLeftJoin<DB, TB, O, TE>;
|
|
1014
1034
|
leftJoinLateral<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithLeftJoin<DB, TB, O, TE>;
|
|
1015
1035
|
/**
|
|
1016
|
-
*
|
|
1036
|
+
* Just like {@link innerJoin} but adds a `cross join lateral` instead of an `inner join`.
|
|
1017
1037
|
*
|
|
1018
|
-
*
|
|
1019
|
-
* the existing order by clause.
|
|
1020
|
-
*
|
|
1021
|
-
* In a single call you can add a single column/expression or multiple columns/expressions.
|
|
1022
|
-
*
|
|
1023
|
-
* Single column/expression calls can have 1-2 arguments. The first argument is
|
|
1024
|
-
* the expression to order by (optionally including the direction) while the second
|
|
1025
|
-
* optional argument is the direction (`asc` or `desc`).
|
|
1038
|
+
* This is only supported by some dialects like PostgreSQL.
|
|
1026
1039
|
*
|
|
1027
1040
|
* ### Examples
|
|
1028
1041
|
*
|
|
1029
|
-
* Single column/expression per call:
|
|
1030
|
-
*
|
|
1031
1042
|
* ```ts
|
|
1032
|
-
* await db
|
|
1033
|
-
* .
|
|
1034
|
-
*
|
|
1035
|
-
*
|
|
1036
|
-
*
|
|
1037
|
-
*
|
|
1038
|
-
*
|
|
1039
|
-
*
|
|
1040
|
-
*
|
|
1041
|
-
*
|
|
1042
|
-
* .selectFrom('person')
|
|
1043
|
-
* .select('person.first_name as fn')
|
|
1044
|
-
* .orderBy('id')
|
|
1045
|
-
* .orderBy('fn', 'desc')
|
|
1043
|
+
* await db.selectFrom('person')
|
|
1044
|
+
* .crossJoinLateral(
|
|
1045
|
+
* (eb) =>
|
|
1046
|
+
* eb.selectFrom('pet')
|
|
1047
|
+
* .select('name')
|
|
1048
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
1049
|
+
* .as('p')
|
|
1050
|
+
* )
|
|
1051
|
+
* .select(['first_name', 'p.name'])
|
|
1052
|
+
* .orderBy('first_name')
|
|
1046
1053
|
* .execute()
|
|
1047
1054
|
* ```
|
|
1048
1055
|
*
|
|
1049
1056
|
* The generated SQL (PostgreSQL):
|
|
1050
1057
|
*
|
|
1051
1058
|
* ```sql
|
|
1052
|
-
* select "person"."first_name"
|
|
1059
|
+
* select "person"."first_name", "p"."name"
|
|
1053
1060
|
* from "person"
|
|
1054
|
-
*
|
|
1061
|
+
* cross join lateral (
|
|
1062
|
+
* select "name"
|
|
1063
|
+
* from "pet"
|
|
1064
|
+
* where "pet"."owner_id" = "person"."id"
|
|
1065
|
+
* ) as "p"
|
|
1066
|
+
* order by "first_name"
|
|
1055
1067
|
* ```
|
|
1068
|
+
*/
|
|
1069
|
+
crossJoinLateral<TE extends TableExpression<DB, TB>>(table: TE): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
1070
|
+
/**
|
|
1071
|
+
* Joins another table to the query using a `cross apply`.
|
|
1056
1072
|
*
|
|
1057
|
-
*
|
|
1073
|
+
* This is only supported by some dialects like MS SQL Server.
|
|
1058
1074
|
*
|
|
1059
|
-
*
|
|
1060
|
-
* await db
|
|
1061
|
-
* .selectFrom('person')
|
|
1062
|
-
* .select('person.first_name as fn')
|
|
1063
|
-
* .orderBy(['id', 'fn desc'])
|
|
1064
|
-
* .execute()
|
|
1065
|
-
* ```
|
|
1066
|
-
*
|
|
1067
|
-
* The order by expression can also be a raw sql expression or a subquery
|
|
1068
|
-
* in addition to column references:
|
|
1075
|
+
* ### Examples
|
|
1069
1076
|
*
|
|
1070
1077
|
* ```ts
|
|
1071
|
-
*
|
|
1072
|
-
*
|
|
1073
|
-
*
|
|
1074
|
-
*
|
|
1075
|
-
*
|
|
1076
|
-
*
|
|
1077
|
-
*
|
|
1078
|
-
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
1079
|
-
* .limit(1)
|
|
1080
|
-
* )
|
|
1081
|
-
* .orderBy(
|
|
1082
|
-
* sql<string>`concat(first_name, last_name)`
|
|
1078
|
+
* await db.selectFrom('person')
|
|
1079
|
+
* .crossApply(
|
|
1080
|
+
* (eb) =>
|
|
1081
|
+
* eb.selectFrom('pet')
|
|
1082
|
+
* .select('name')
|
|
1083
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
1084
|
+
* .as('p')
|
|
1083
1085
|
* )
|
|
1086
|
+
* .select(['first_name', 'p.name'])
|
|
1087
|
+
* .orderBy('first_name')
|
|
1084
1088
|
* .execute()
|
|
1085
1089
|
* ```
|
|
1086
1090
|
*
|
|
1087
|
-
* The generated SQL (
|
|
1091
|
+
* The generated SQL (MS SQL Server):
|
|
1088
1092
|
*
|
|
1089
1093
|
* ```sql
|
|
1090
|
-
* select
|
|
1094
|
+
* select "person"."first_name", "p"."name"
|
|
1091
1095
|
* from "person"
|
|
1092
|
-
*
|
|
1093
|
-
*
|
|
1094
|
-
*
|
|
1095
|
-
*
|
|
1096
|
-
*
|
|
1097
|
-
*
|
|
1098
|
-
* concat(first_name, last_name) asc
|
|
1099
|
-
* ```
|
|
1100
|
-
*
|
|
1101
|
-
* `dynamic.ref` can be used to refer to columns not known at
|
|
1102
|
-
* compile time:
|
|
1103
|
-
*
|
|
1104
|
-
* ```ts
|
|
1105
|
-
* async function someQuery(orderBy: string) {
|
|
1106
|
-
* const { ref } = db.dynamic
|
|
1107
|
-
*
|
|
1108
|
-
* return await db
|
|
1109
|
-
* .selectFrom('person')
|
|
1110
|
-
* .select('person.first_name as fn')
|
|
1111
|
-
* .orderBy(ref(orderBy))
|
|
1112
|
-
* .execute()
|
|
1113
|
-
* }
|
|
1114
|
-
*
|
|
1115
|
-
* someQuery('fn')
|
|
1096
|
+
* cross apply (
|
|
1097
|
+
* select "name"
|
|
1098
|
+
* from "pet"
|
|
1099
|
+
* where "pet"."owner_id" = "person"."id"
|
|
1100
|
+
* ) as "p"
|
|
1101
|
+
* order by "first_name"
|
|
1116
1102
|
* ```
|
|
1103
|
+
*/
|
|
1104
|
+
crossApply<TE extends TableExpression<DB, TB>>(table: TE): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
1105
|
+
/**
|
|
1106
|
+
* Just like {@link crossApply} but adds an `outer apply` instead of a `cross apply`.
|
|
1117
1107
|
*
|
|
1118
|
-
*
|
|
1119
|
-
*
|
|
1120
|
-
* ```sql
|
|
1121
|
-
* select "person"."first_name" as "fn"
|
|
1122
|
-
* from "person"
|
|
1123
|
-
* order by "fn" asc
|
|
1124
|
-
* ```
|
|
1108
|
+
* This is only supported by some dialects like MS SQL Server.
|
|
1125
1109
|
*/
|
|
1126
|
-
|
|
1127
|
-
orderBy<OE extends DirectedOrderByStringReference<DB, TB, O>>(ref: OE): SelectQueryBuilder<DB, TB, O>;
|
|
1128
|
-
orderBy<OE extends OrderByExpression<DB, TB, O>>(refs: ReadonlyArray<OE>): SelectQueryBuilder<DB, TB, O>;
|
|
1110
|
+
outerApply<TE extends TableExpression<DB, TB>>(table: TE): SelectQueryBuilderWithLeftJoin<DB, TB, O, TE>;
|
|
1129
1111
|
/**
|
|
1130
1112
|
* Adds a `group by` clause to the query.
|
|
1131
1113
|
*
|
|
@@ -1225,9 +1207,159 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1225
1207
|
* ```
|
|
1226
1208
|
*/
|
|
1227
1209
|
groupBy<GE extends GroupByArg<DB, TB, O>>(groupBy: GE): SelectQueryBuilder<DB, TB, O>;
|
|
1210
|
+
/**
|
|
1211
|
+
* Adds an `order by` clause to the query.
|
|
1212
|
+
*
|
|
1213
|
+
* `orderBy` calls are additive. Meaning, additional `orderBy` calls append to
|
|
1214
|
+
* the existing order by clause.
|
|
1215
|
+
*
|
|
1216
|
+
* `orderBy` is supported in select queries on all dialects. In MySQL, you can
|
|
1217
|
+
* also use `orderBy` in update and delete queries.
|
|
1218
|
+
*
|
|
1219
|
+
* In a single call you can add a single column/expression or multiple columns/expressions.
|
|
1220
|
+
*
|
|
1221
|
+
* Single column/expression calls can have 1-2 arguments. The first argument is
|
|
1222
|
+
* the expression to order by, while the second optional argument is the direction
|
|
1223
|
+
* (`asc` or `desc`), a callback that accepts and returns an {@link OrderByItemBuilder}
|
|
1224
|
+
* or an expression.
|
|
1225
|
+
*
|
|
1226
|
+
* See {@link clearOrderBy} to remove the `order by` clause from a query.
|
|
1227
|
+
*
|
|
1228
|
+
* ### Examples
|
|
1229
|
+
*
|
|
1230
|
+
* Single column/expression per call:
|
|
1231
|
+
*
|
|
1232
|
+
* ```ts
|
|
1233
|
+
* await db
|
|
1234
|
+
* .selectFrom('person')
|
|
1235
|
+
* .select('person.first_name as fn')
|
|
1236
|
+
* .orderBy('id')
|
|
1237
|
+
* .orderBy('fn', 'desc')
|
|
1238
|
+
* .execute()
|
|
1239
|
+
* ```
|
|
1240
|
+
*
|
|
1241
|
+
* The generated SQL (PostgreSQL):
|
|
1242
|
+
*
|
|
1243
|
+
* ```sql
|
|
1244
|
+
* select "person"."first_name" as "fn"
|
|
1245
|
+
* from "person"
|
|
1246
|
+
* order by "id", "fn" desc
|
|
1247
|
+
* ```
|
|
1248
|
+
*
|
|
1249
|
+
* Multiple columns/expressions per call:
|
|
1250
|
+
*
|
|
1251
|
+
* ```ts
|
|
1252
|
+
* await db
|
|
1253
|
+
* .selectFrom('person')
|
|
1254
|
+
* .select('person.first_name as fn')
|
|
1255
|
+
* .orderBy(['id', 'fn'])
|
|
1256
|
+
* .execute()
|
|
1257
|
+
* ```
|
|
1258
|
+
*
|
|
1259
|
+
* The generated SQL (PostgreSQL):
|
|
1260
|
+
*
|
|
1261
|
+
* ```sql
|
|
1262
|
+
* select "person"."first_name" as "fn"
|
|
1263
|
+
* from "person"
|
|
1264
|
+
* order by "id", "fn"
|
|
1265
|
+
* ```
|
|
1266
|
+
*
|
|
1267
|
+
* Building advanced modifiers:
|
|
1268
|
+
*
|
|
1269
|
+
* ```ts
|
|
1270
|
+
* await db
|
|
1271
|
+
* .selectFrom('person')
|
|
1272
|
+
* .select('person.first_name as fn')
|
|
1273
|
+
* .orderBy('id', (ob) => ob.desc().nullsFirst())
|
|
1274
|
+
* .execute()
|
|
1275
|
+
* ```
|
|
1276
|
+
*
|
|
1277
|
+
* The generated SQL (PostgreSQL):
|
|
1278
|
+
*
|
|
1279
|
+
* ```sql
|
|
1280
|
+
* select "person"."first_name" as "fn"
|
|
1281
|
+
* from "person"
|
|
1282
|
+
* order by "id" desc nulls first
|
|
1283
|
+
* ```
|
|
1284
|
+
*
|
|
1285
|
+
* The order by expression can also be a raw sql expression or a subquery
|
|
1286
|
+
* in addition to column references:
|
|
1287
|
+
*
|
|
1288
|
+
* ```ts
|
|
1289
|
+
* import { sql } from 'kysely'
|
|
1290
|
+
*
|
|
1291
|
+
* await db
|
|
1292
|
+
* .selectFrom('person')
|
|
1293
|
+
* .selectAll()
|
|
1294
|
+
* .orderBy((eb) => eb.selectFrom('pet')
|
|
1295
|
+
* .select('pet.name')
|
|
1296
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
1297
|
+
* .limit(1)
|
|
1298
|
+
* )
|
|
1299
|
+
* .orderBy(
|
|
1300
|
+
* sql<string>`concat(first_name, last_name) asc`
|
|
1301
|
+
* )
|
|
1302
|
+
* .execute()
|
|
1303
|
+
* ```
|
|
1304
|
+
*
|
|
1305
|
+
* The generated SQL (PostgreSQL):
|
|
1306
|
+
*
|
|
1307
|
+
* ```sql
|
|
1308
|
+
* select *
|
|
1309
|
+
* from "person"
|
|
1310
|
+
* order by
|
|
1311
|
+
* ( select "pet"."name"
|
|
1312
|
+
* from "pet"
|
|
1313
|
+
* where "pet"."owner_id" = "person"."id"
|
|
1314
|
+
* limit $1
|
|
1315
|
+
* ) asc,
|
|
1316
|
+
* concat(first_name, last_name) asc
|
|
1317
|
+
* ```
|
|
1318
|
+
*
|
|
1319
|
+
* `dynamic.ref` can be used to refer to columns not known at
|
|
1320
|
+
* compile time:
|
|
1321
|
+
*
|
|
1322
|
+
* ```ts
|
|
1323
|
+
* async function someQuery(orderBy: string) {
|
|
1324
|
+
* const { ref } = db.dynamic
|
|
1325
|
+
*
|
|
1326
|
+
* return await db
|
|
1327
|
+
* .selectFrom('person')
|
|
1328
|
+
* .select('person.first_name as fn')
|
|
1329
|
+
* .orderBy(ref(orderBy))
|
|
1330
|
+
* .execute()
|
|
1331
|
+
* }
|
|
1332
|
+
*
|
|
1333
|
+
* someQuery('fn')
|
|
1334
|
+
* ```
|
|
1335
|
+
*
|
|
1336
|
+
* The generated SQL (PostgreSQL):
|
|
1337
|
+
*
|
|
1338
|
+
* ```sql
|
|
1339
|
+
* select "person"."first_name" as "fn"
|
|
1340
|
+
* from "person"
|
|
1341
|
+
* order by "fn"
|
|
1342
|
+
* ```
|
|
1343
|
+
*/
|
|
1344
|
+
orderBy<OE extends OrderByExpression<DB, TB, O>>(expr: OE, modifiers?: OrderByModifiers): SelectQueryBuilder<DB, TB, O>;
|
|
1345
|
+
/**
|
|
1346
|
+
* @deprecated It does ~2-2.5x more compile-time instantiations than multiple `orderBy(expr, modifiers?)` calls, and has broken autocompletion.
|
|
1347
|
+
*/
|
|
1348
|
+
orderBy<OE extends OrderByExpression<DB, TB, O> | DirectedOrderByStringReference<DB, TB, O>>(exprs: ReadonlyArray<OE>): SelectQueryBuilder<DB, TB, O>;
|
|
1349
|
+
/**
|
|
1350
|
+
* @deprecated Use orderBy(expr, direction) instead.
|
|
1351
|
+
*/
|
|
1352
|
+
orderBy<OE extends DirectedOrderByStringReference<DB, TB, O>>(expr: OE): SelectQueryBuilder<DB, TB, O>;
|
|
1353
|
+
/**
|
|
1354
|
+
* @deprecated Use `orderBy(expr, (ob) => ...)` instead.
|
|
1355
|
+
*/
|
|
1356
|
+
orderBy<OE extends OrderByExpression<DB, TB, O>>(expr: OE, modifiers: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
1228
1357
|
/**
|
|
1229
1358
|
* Adds a limit clause to the query.
|
|
1230
1359
|
*
|
|
1360
|
+
* Passing a `null` value is only supported by some dialects like PostgreSQL,
|
|
1361
|
+
* and will result in a no-op limit clause.
|
|
1362
|
+
*
|
|
1231
1363
|
* ### Examples
|
|
1232
1364
|
*
|
|
1233
1365
|
* Select the first 10 rows of the result:
|
|
@@ -1263,7 +1395,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1263
1395
|
* select "first_name" from "person" limit $1 offset $2
|
|
1264
1396
|
* ```
|
|
1265
1397
|
*/
|
|
1266
|
-
limit(limit: ValueExpression<DB, TB, number | bigint>): SelectQueryBuilder<DB, TB, O>;
|
|
1398
|
+
limit(limit: ValueExpression<DB, TB, number | bigint | null>): SelectQueryBuilder<DB, TB, O>;
|
|
1267
1399
|
/**
|
|
1268
1400
|
* Adds an `offset` clause to the query.
|
|
1269
1401
|
*
|
|
@@ -1978,6 +2110,55 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1978
2110
|
$asTuple<K1 extends keyof O, K2 extends Exclude<keyof O, K1>, K3 extends Exclude<keyof O, K1 | K2>>(key1: K1, key2: K2, key3: K3): keyof O extends K1 | K2 | K3 ? ExpressionWrapper<DB, TB, [O[K1], O[K2], O[K3]]> : KyselyTypeError<'$asTuple() call failed: All selected columns must be provided as arguments'>;
|
|
1979
2111
|
$asTuple<K1 extends keyof O, K2 extends Exclude<keyof O, K1>, K3 extends Exclude<keyof O, K1 | K2>, K4 extends Exclude<keyof O, K1 | K2 | K3>>(key1: K1, key2: K2, key3: K3, key4: K4): keyof O extends K1 | K2 | K3 | K4 ? ExpressionWrapper<DB, TB, [O[K1], O[K2], O[K3], O[K4]]> : KyselyTypeError<'$asTuple() call failed: All selected columns must be provided as arguments'>;
|
|
1980
2112
|
$asTuple<K1 extends keyof O, K2 extends Exclude<keyof O, K1>, K3 extends Exclude<keyof O, K1 | K2>, K4 extends Exclude<keyof O, K1 | K2 | K3>, K5 extends Exclude<keyof O, K1 | K2 | K3 | K4>>(key1: K1, key2: K2, key3: K3, key4: K4, key5: K5): keyof O extends K1 | K2 | K3 | K4 | K5 ? ExpressionWrapper<DB, TB, [O[K1], O[K2], O[K3], O[K4], O[K5]]> : KyselyTypeError<'$asTuple() call failed: All selected columns must be provided as arguments'>;
|
|
2113
|
+
/**
|
|
2114
|
+
* Plucks the value type of the output record.
|
|
2115
|
+
*
|
|
2116
|
+
* In SQL, any record type that only has one column can be used as a scalar.
|
|
2117
|
+
* For example a query like this works:
|
|
2118
|
+
*
|
|
2119
|
+
* ```sql
|
|
2120
|
+
* select
|
|
2121
|
+
* id,
|
|
2122
|
+
* first_name
|
|
2123
|
+
* from
|
|
2124
|
+
* person as p
|
|
2125
|
+
* where
|
|
2126
|
+
* -- This is ok since the query only selects one row
|
|
2127
|
+
* -- and one column.
|
|
2128
|
+
* (select name from pet where pet.owner_id = p.id limit 1) = 'Doggo'
|
|
2129
|
+
* ```
|
|
2130
|
+
*
|
|
2131
|
+
* In many cases Kysely handles this automatically and picks the correct
|
|
2132
|
+
* scalar type instead of the record type, but sometimes you need to give
|
|
2133
|
+
* Kysely a hint.
|
|
2134
|
+
*
|
|
2135
|
+
* One such case are custom helper functions that take `Expression<T>`
|
|
2136
|
+
* instances as inputs:
|
|
2137
|
+
*
|
|
2138
|
+
* ```ts
|
|
2139
|
+
* import type { Expression } from 'kysely'
|
|
2140
|
+
*
|
|
2141
|
+
* function doStuff(expr: Expression<string>) {
|
|
2142
|
+
* // ...
|
|
2143
|
+
* }
|
|
2144
|
+
*
|
|
2145
|
+
* // Error! This is not ok because the expression type is
|
|
2146
|
+
* // `{ first_name: string }` instead of `string`.
|
|
2147
|
+
* // doStuff(db.selectFrom('person').select('first_name'))
|
|
2148
|
+
*
|
|
2149
|
+
* // Ok! This is ok since we've plucked the `string` type of the
|
|
2150
|
+
* // only column in the output type.
|
|
2151
|
+
* doStuff(db.selectFrom('person').select('first_name').$asScalar())
|
|
2152
|
+
* ```
|
|
2153
|
+
*
|
|
2154
|
+
* This function has absolutely no effect on the generated SQL. It's
|
|
2155
|
+
* purely a type-level helper.
|
|
2156
|
+
*
|
|
2157
|
+
* This method returns an `ExpressionWrapper` instead of a `SelectQueryBuilder`
|
|
2158
|
+
* since the return value should only be used as a part of an expression
|
|
2159
|
+
* and never executed as the main query.
|
|
2160
|
+
*/
|
|
2161
|
+
$asScalar<K extends keyof O = keyof O>(): ExpressionWrapper<DB, TB, O[K]>;
|
|
1981
2162
|
/**
|
|
1982
2163
|
* Narrows (parts of) the output type of the query.
|
|
1983
2164
|
*
|