kysely 0.27.5 → 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/CODE_OF_CONDUCT.md +183 -0
- package/FUNDING.md +25 -0
- package/README.md +182 -3
- 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-introspector.js +66 -44
- 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 +9 -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 +16 -1
- package/dist/cjs/migration/migrator.js +14 -4
- 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/insert-values-parser.js +3 -1
- 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/camel-case/camel-case.js +4 -1
- 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 +8 -3
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +45 -14
- 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 +4 -4
- 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-introspector.js +66 -44
- 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 +9 -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 +16 -1
- package/dist/esm/migration/migrator.js +14 -4
- 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/insert-values-parser.js +3 -1
- 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/camel-case/camel-case.js +4 -1
- 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 +8 -3
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +45 -14
- 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 +4 -4
- 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 -70
- 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
|
@@ -7,7 +7,8 @@ import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
|
7
7
|
import { InsertObjectOrList, InsertObjectOrListFactory } from '../parser/insert-values-parser.js';
|
|
8
8
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
9
9
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
10
|
-
import { ReturningAllRow, ReturningRow } from '../parser/returning-parser.js';
|
|
10
|
+
import { ReturningAllRow, ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
11
|
+
import { SelectCallback, SelectExpression } from '../parser/select-parser.js';
|
|
11
12
|
import { TableExpression } from '../parser/table-parser.js';
|
|
12
13
|
import { ExtractUpdateTypeFromReferenceExpression, UpdateObject, UpdateObjectFactory } from '../parser/update-set-parser.js';
|
|
13
14
|
import { ValueExpression } from '../parser/value-parser.js';
|
|
@@ -19,8 +20,9 @@ import { ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '..
|
|
|
19
20
|
import { MergeResult } from './merge-result.js';
|
|
20
21
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
21
22
|
import { OutputCallback, OutputExpression, OutputInterface, OutputPrefix, SelectExpressionFromOutputCallback, SelectExpressionFromOutputExpression } from './output-interface.js';
|
|
23
|
+
import { MultiTableReturningInterface } from './returning-interface.js';
|
|
22
24
|
import { UpdateQueryBuilder } from './update-query-builder.js';
|
|
23
|
-
export declare class MergeQueryBuilder<DB, TT extends keyof DB, O> implements OutputInterface<DB, TT, O> {
|
|
25
|
+
export declare class MergeQueryBuilder<DB, TT extends keyof DB, O> implements MultiTableReturningInterface<DB, TT, O>, OutputInterface<DB, TT, O> {
|
|
24
26
|
#private;
|
|
25
27
|
constructor(props: MergeQueryBuilderProps);
|
|
26
28
|
/**
|
|
@@ -122,6 +124,76 @@ export declare class MergeQueryBuilder<DB, TT extends keyof DB, O> implements Ou
|
|
|
122
124
|
*/
|
|
123
125
|
using<TE extends TableExpression<DB, TT>, K1 extends JoinReferenceExpression<DB, TT, TE>, K2 extends JoinReferenceExpression<DB, TT, TE>>(sourceTable: TE, k1: K1, k2: K2): ExtractWheneableMergeQueryBuilder<DB, TT, TE, O>;
|
|
124
126
|
using<TE extends TableExpression<DB, TT>, FN extends JoinCallbackExpression<DB, TT, TE>>(sourceTable: TE, callback: FN): ExtractWheneableMergeQueryBuilder<DB, TT, TE, O>;
|
|
127
|
+
/**
|
|
128
|
+
* Allows you to return data from modified rows.
|
|
129
|
+
*
|
|
130
|
+
* On supported databases like PostgreSQL, this method can be chained to
|
|
131
|
+
* `insert`, `update`, `delete` and `merge` queries to return data.
|
|
132
|
+
*
|
|
133
|
+
* Note that on SQLite you need to give aliases for the expressions to avoid
|
|
134
|
+
* [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
|
|
135
|
+
* For example `.returning('id as id')`.
|
|
136
|
+
*
|
|
137
|
+
* Also see the {@link returningAll} method.
|
|
138
|
+
*
|
|
139
|
+
* ### Examples
|
|
140
|
+
*
|
|
141
|
+
* Return one column:
|
|
142
|
+
*
|
|
143
|
+
* ```ts
|
|
144
|
+
* const { id } = await db
|
|
145
|
+
* .insertInto('person')
|
|
146
|
+
* .values({
|
|
147
|
+
* first_name: 'Jennifer',
|
|
148
|
+
* last_name: 'Aniston'
|
|
149
|
+
* })
|
|
150
|
+
* .returning('id')
|
|
151
|
+
* .executeTakeFirstOrThrow()
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* Return multiple columns:
|
|
155
|
+
*
|
|
156
|
+
* ```ts
|
|
157
|
+
* const { id, last_name } = await db
|
|
158
|
+
* .insertInto('person')
|
|
159
|
+
* .values({
|
|
160
|
+
* first_name: 'Jennifer',
|
|
161
|
+
* last_name: 'Aniston'
|
|
162
|
+
* })
|
|
163
|
+
* .returning(['id', 'last_name'])
|
|
164
|
+
* .executeTakeFirstOrThrow()
|
|
165
|
+
* ```
|
|
166
|
+
*
|
|
167
|
+
* Return arbitrary expressions:
|
|
168
|
+
*
|
|
169
|
+
* ```ts
|
|
170
|
+
* import { sql } from 'kysely'
|
|
171
|
+
*
|
|
172
|
+
* const { id, full_name, first_pet_id } = await db
|
|
173
|
+
* .insertInto('person')
|
|
174
|
+
* .values({
|
|
175
|
+
* first_name: 'Jennifer',
|
|
176
|
+
* last_name: 'Aniston'
|
|
177
|
+
* })
|
|
178
|
+
* .returning((eb) => [
|
|
179
|
+
* 'id as id',
|
|
180
|
+
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
181
|
+
* eb.selectFrom('pet').select('pet.id').limit(1).as('first_pet_id')
|
|
182
|
+
* ])
|
|
183
|
+
* .executeTakeFirstOrThrow()
|
|
184
|
+
* ```
|
|
185
|
+
*/
|
|
186
|
+
returning<SE extends SelectExpression<DB, TT>>(selections: ReadonlyArray<SE>): MergeQueryBuilder<DB, TT, ReturningRow<DB, TT, O, SE>>;
|
|
187
|
+
returning<CB extends SelectCallback<DB, TT>>(callback: CB): MergeQueryBuilder<DB, TT, ReturningCallbackRow<DB, TT, O, CB>>;
|
|
188
|
+
returning<SE extends SelectExpression<DB, TT>>(selection: SE): MergeQueryBuilder<DB, TT, ReturningRow<DB, TT, O, SE>>;
|
|
189
|
+
/**
|
|
190
|
+
* Adds a `returning *` or `returning table.*` to an insert/update/delete/merge
|
|
191
|
+
* query on databases that support `returning` such as PostgreSQL.
|
|
192
|
+
*
|
|
193
|
+
* Also see the {@link returning} method.
|
|
194
|
+
*/
|
|
195
|
+
returningAll<T extends TT>(table: T): MergeQueryBuilder<DB, TT, ReturningAllRow<DB, T, O>>;
|
|
196
|
+
returningAll(): MergeQueryBuilder<DB, TT, ReturningAllRow<DB, TT, O>>;
|
|
125
197
|
/**
|
|
126
198
|
* Allows you to return data from modified rows.
|
|
127
199
|
*
|
|
@@ -252,7 +324,7 @@ export interface MergeQueryBuilderProps {
|
|
|
252
324
|
readonly queryNode: MergeQueryNode;
|
|
253
325
|
readonly executor: QueryExecutor;
|
|
254
326
|
}
|
|
255
|
-
export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST extends keyof DB, O> implements Compilable<O>, OutputInterface<DB, TT, O>, OperationNodeSource {
|
|
327
|
+
export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST extends keyof DB, O> implements Compilable<O>, MultiTableReturningInterface<DB, TT | ST, O>, OutputInterface<DB, TT, O>, OperationNodeSource {
|
|
256
328
|
#private;
|
|
257
329
|
constructor(props: MergeQueryBuilderProps);
|
|
258
330
|
/**
|
|
@@ -449,6 +521,76 @@ export declare class WheneableMergeQueryBuilder<DB, TT extends keyof DB, ST exte
|
|
|
449
521
|
* the target table, and not from source table and returns a {@link MatchedThenableMergeQueryBuilder}.
|
|
450
522
|
*/
|
|
451
523
|
whenNotMatchedBySourceAndRef<LRE extends ReferenceExpression<DB, TT>, RRE extends ReferenceExpression<DB, TT>>(lhs: LRE, op: ComparisonOperatorExpression, rhs: RRE): MatchedThenableMergeQueryBuilder<DB, TT, ST, TT, O>;
|
|
524
|
+
/**
|
|
525
|
+
* Allows you to return data from modified rows.
|
|
526
|
+
*
|
|
527
|
+
* On supported databases like PostgreSQL, this method can be chained to
|
|
528
|
+
* `insert`, `update`, `delete` and `merge` queries to return data.
|
|
529
|
+
*
|
|
530
|
+
* Note that on SQLite you need to give aliases for the expressions to avoid
|
|
531
|
+
* [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
|
|
532
|
+
* For example `.returning('id as id')`.
|
|
533
|
+
*
|
|
534
|
+
* Also see the {@link returningAll} method.
|
|
535
|
+
*
|
|
536
|
+
* ### Examples
|
|
537
|
+
*
|
|
538
|
+
* Return one column:
|
|
539
|
+
*
|
|
540
|
+
* ```ts
|
|
541
|
+
* const { id } = await db
|
|
542
|
+
* .insertInto('person')
|
|
543
|
+
* .values({
|
|
544
|
+
* first_name: 'Jennifer',
|
|
545
|
+
* last_name: 'Aniston'
|
|
546
|
+
* })
|
|
547
|
+
* .returning('id')
|
|
548
|
+
* .executeTakeFirstOrThrow()
|
|
549
|
+
* ```
|
|
550
|
+
*
|
|
551
|
+
* Return multiple columns:
|
|
552
|
+
*
|
|
553
|
+
* ```ts
|
|
554
|
+
* const { id, last_name } = await db
|
|
555
|
+
* .insertInto('person')
|
|
556
|
+
* .values({
|
|
557
|
+
* first_name: 'Jennifer',
|
|
558
|
+
* last_name: 'Aniston'
|
|
559
|
+
* })
|
|
560
|
+
* .returning(['id', 'last_name'])
|
|
561
|
+
* .executeTakeFirstOrThrow()
|
|
562
|
+
* ```
|
|
563
|
+
*
|
|
564
|
+
* Return arbitrary expressions:
|
|
565
|
+
*
|
|
566
|
+
* ```ts
|
|
567
|
+
* import { sql } from 'kysely'
|
|
568
|
+
*
|
|
569
|
+
* const { id, full_name, first_pet_id } = await db
|
|
570
|
+
* .insertInto('person')
|
|
571
|
+
* .values({
|
|
572
|
+
* first_name: 'Jennifer',
|
|
573
|
+
* last_name: 'Aniston'
|
|
574
|
+
* })
|
|
575
|
+
* .returning((eb) => [
|
|
576
|
+
* 'id as id',
|
|
577
|
+
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
578
|
+
* eb.selectFrom('pet').select('pet.id').limit(1).as('first_pet_id')
|
|
579
|
+
* ])
|
|
580
|
+
* .executeTakeFirstOrThrow()
|
|
581
|
+
* ```
|
|
582
|
+
*/
|
|
583
|
+
returning<SE extends SelectExpression<DB, TT | ST>>(selections: ReadonlyArray<SE>): WheneableMergeQueryBuilder<DB, TT, ST, ReturningRow<DB, TT | ST, O, SE>>;
|
|
584
|
+
returning<CB extends SelectCallback<DB, TT | ST>>(callback: CB): WheneableMergeQueryBuilder<DB, TT, ST, ReturningCallbackRow<DB, TT | ST, O, CB>>;
|
|
585
|
+
returning<SE extends SelectExpression<DB, TT | ST>>(selection: SE): WheneableMergeQueryBuilder<DB, TT, ST, ReturningRow<DB, TT | ST, O, SE>>;
|
|
586
|
+
/**
|
|
587
|
+
* Adds a `returning *` or `returning table.*` to an insert/update/delete/merge
|
|
588
|
+
* query on databases that support `returning` such as PostgreSQL.
|
|
589
|
+
*
|
|
590
|
+
* Also see the {@link returning} method.
|
|
591
|
+
*/
|
|
592
|
+
returningAll<T extends TT | ST>(table: T): WheneableMergeQueryBuilder<DB, TT, ST, ReturningAllRow<DB, T, O>>;
|
|
593
|
+
returningAll(): WheneableMergeQueryBuilder<DB, TT, ST, ReturningAllRow<DB, TT | ST, O>>;
|
|
452
594
|
/**
|
|
453
595
|
* Allows you to return data from modified rows.
|
|
454
596
|
*
|
|
@@ -6,11 +6,10 @@ import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|
|
6
6
|
import { parseInsertExpression, } from '../parser/insert-values-parser.js';
|
|
7
7
|
import { parseJoin, } from '../parser/join-parser.js';
|
|
8
8
|
import { parseMergeThen, parseMergeWhen } from '../parser/merge-parser.js';
|
|
9
|
-
import { parseSelectAll, parseSelectArg } from '../parser/select-parser.js';
|
|
9
|
+
import { parseSelectAll, parseSelectArg, } from '../parser/select-parser.js';
|
|
10
10
|
import { parseTop } from '../parser/top-parser.js';
|
|
11
11
|
import { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';
|
|
12
12
|
import { freeze } from '../util/object-utils.js';
|
|
13
|
-
import { preventAwait } from '../util/prevent-await.js';
|
|
14
13
|
import { MergeResult } from './merge-result.js';
|
|
15
14
|
import { NoResultError, isNoResultErrorConstructor, } from './no-result-error.js';
|
|
16
15
|
import { UpdateQueryBuilder } from './update-query-builder.js';
|
|
@@ -107,6 +106,18 @@ export class MergeQueryBuilder {
|
|
|
107
106
|
queryNode: MergeQueryNode.cloneWithUsing(this.#props.queryNode, parseJoin('Using', args)),
|
|
108
107
|
});
|
|
109
108
|
}
|
|
109
|
+
returning(args) {
|
|
110
|
+
return new MergeQueryBuilder({
|
|
111
|
+
...this.#props,
|
|
112
|
+
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(args)),
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
returningAll(table) {
|
|
116
|
+
return new MergeQueryBuilder({
|
|
117
|
+
...this.#props,
|
|
118
|
+
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),
|
|
119
|
+
});
|
|
120
|
+
}
|
|
110
121
|
output(args) {
|
|
111
122
|
return new MergeQueryBuilder({
|
|
112
123
|
...this.#props,
|
|
@@ -120,7 +131,6 @@ export class MergeQueryBuilder {
|
|
|
120
131
|
});
|
|
121
132
|
}
|
|
122
133
|
}
|
|
123
|
-
preventAwait(MergeQueryBuilder, "don't await MergeQueryBuilder instances directly. To execute the query you need to call `execute` when available.");
|
|
124
134
|
export class WheneableMergeQueryBuilder {
|
|
125
135
|
#props;
|
|
126
136
|
constructor(props) {
|
|
@@ -285,6 +295,18 @@ export class WheneableMergeQueryBuilder {
|
|
|
285
295
|
whenNotMatchedBySourceAndRef(lhs, op, rhs) {
|
|
286
296
|
return this.#whenNotMatched([lhs, op, rhs], true, true);
|
|
287
297
|
}
|
|
298
|
+
returning(args) {
|
|
299
|
+
return new WheneableMergeQueryBuilder({
|
|
300
|
+
...this.#props,
|
|
301
|
+
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectArg(args)),
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
returningAll(table) {
|
|
305
|
+
return new WheneableMergeQueryBuilder({
|
|
306
|
+
...this.#props,
|
|
307
|
+
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),
|
|
308
|
+
});
|
|
309
|
+
}
|
|
288
310
|
output(args) {
|
|
289
311
|
return new WheneableMergeQueryBuilder({
|
|
290
312
|
...this.#props,
|
|
@@ -395,8 +417,10 @@ export class WheneableMergeQueryBuilder {
|
|
|
395
417
|
async execute() {
|
|
396
418
|
const compiledQuery = this.compile();
|
|
397
419
|
const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
|
|
398
|
-
|
|
399
|
-
|
|
420
|
+
const { adapter } = this.#props.executor;
|
|
421
|
+
const query = compiledQuery.query;
|
|
422
|
+
if ((query.returning && adapter.supportsReturning) ||
|
|
423
|
+
(query.output && adapter.supportsOutput)) {
|
|
400
424
|
return result.rows;
|
|
401
425
|
}
|
|
402
426
|
return [new MergeResult(result.numAffectedRows)];
|
|
@@ -428,7 +452,6 @@ export class WheneableMergeQueryBuilder {
|
|
|
428
452
|
return result;
|
|
429
453
|
}
|
|
430
454
|
}
|
|
431
|
-
preventAwait(WheneableMergeQueryBuilder, "don't await WheneableMergeQueryBuilder instances directly. To execute the query you need to call `execute`.");
|
|
432
455
|
export class MatchedThenableMergeQueryBuilder {
|
|
433
456
|
#props;
|
|
434
457
|
constructor(props) {
|
|
@@ -551,7 +574,6 @@ export class MatchedThenableMergeQueryBuilder {
|
|
|
551
574
|
return this.thenUpdate((ub) => ub.set(...args));
|
|
552
575
|
}
|
|
553
576
|
}
|
|
554
|
-
preventAwait(MatchedThenableMergeQueryBuilder, "don't await MatchedThenableMergeQueryBuilder instances directly. To execute the query you need to call `execute` when available.");
|
|
555
577
|
export class NotMatchedThenableMergeQueryBuilder {
|
|
556
578
|
#props;
|
|
557
579
|
constructor(props) {
|
|
@@ -600,4 +622,3 @@ export class NotMatchedThenableMergeQueryBuilder {
|
|
|
600
622
|
});
|
|
601
623
|
}
|
|
602
624
|
}
|
|
603
|
-
preventAwait(NotMatchedThenableMergeQueryBuilder, "don't await NotMatchedThenableMergeQueryBuilder instances directly. To execute the query you need to call `execute` when available.");
|
|
@@ -5,7 +5,6 @@ import { OnConflictNode } from '../operation-node/on-conflict-node.js';
|
|
|
5
5
|
import { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';
|
|
6
6
|
import { parseUpdateObjectExpression, } from '../parser/update-set-parser.js';
|
|
7
7
|
import { freeze } from '../util/object-utils.js';
|
|
8
|
-
import { preventAwait } from '../util/prevent-await.js';
|
|
9
8
|
export class OnConflictBuilder {
|
|
10
9
|
#props;
|
|
11
10
|
constructor(props) {
|
|
@@ -205,7 +204,6 @@ export class OnConflictBuilder {
|
|
|
205
204
|
return func(this);
|
|
206
205
|
}
|
|
207
206
|
}
|
|
208
|
-
preventAwait(OnConflictBuilder, "don't await OnConflictBuilder instances.");
|
|
209
207
|
export class OnConflictDoNothingBuilder {
|
|
210
208
|
#props;
|
|
211
209
|
constructor(props) {
|
|
@@ -215,7 +213,6 @@ export class OnConflictDoNothingBuilder {
|
|
|
215
213
|
return this.#props.onConflictNode;
|
|
216
214
|
}
|
|
217
215
|
}
|
|
218
|
-
preventAwait(OnConflictDoNothingBuilder, "don't await OnConflictDoNothingBuilder instances.");
|
|
219
216
|
export class OnConflictUpdateBuilder {
|
|
220
217
|
#props;
|
|
221
218
|
constructor(props) {
|
|
@@ -255,4 +252,3 @@ export class OnConflictUpdateBuilder {
|
|
|
255
252
|
return this.#props.onConflictNode;
|
|
256
253
|
}
|
|
257
254
|
}
|
|
258
|
-
preventAwait(OnConflictUpdateBuilder, "don't await OnConflictUpdateBuilder instances.");
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
|
+
import { OrderByExpression, DirectedOrderByStringReference, OrderByModifiers } from '../parser/order-by-parser.js';
|
|
3
|
+
export interface OrderByInterface<DB, TB extends keyof DB, O> {
|
|
4
|
+
/**
|
|
5
|
+
* Adds an `order by` clause to the query.
|
|
6
|
+
*
|
|
7
|
+
* `orderBy` calls are additive. Meaning, additional `orderBy` calls append to
|
|
8
|
+
* the existing order by clause.
|
|
9
|
+
*
|
|
10
|
+
* `orderBy` is supported in select queries on all dialects. In MySQL, you can
|
|
11
|
+
* also use `orderBy` in update and delete queries.
|
|
12
|
+
*
|
|
13
|
+
* In a single call you can add a single column/expression or multiple columns/expressions.
|
|
14
|
+
*
|
|
15
|
+
* Single column/expression calls can have 1-2 arguments. The first argument is
|
|
16
|
+
* the expression to order by, while the second optional argument is the direction
|
|
17
|
+
* (`asc` or `desc`), a callback that accepts and returns an {@link OrderByItemBuilder}
|
|
18
|
+
* or an expression.
|
|
19
|
+
*
|
|
20
|
+
* See {@link clearOrderBy} to remove the `order by` clause from a query.
|
|
21
|
+
*
|
|
22
|
+
* ### Examples
|
|
23
|
+
*
|
|
24
|
+
* Single column/expression per call:
|
|
25
|
+
*
|
|
26
|
+
* ```ts
|
|
27
|
+
* await db
|
|
28
|
+
* .selectFrom('person')
|
|
29
|
+
* .select('person.first_name as fn')
|
|
30
|
+
* .orderBy('id')
|
|
31
|
+
* .orderBy('fn', 'desc')
|
|
32
|
+
* .execute()
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* The generated SQL (PostgreSQL):
|
|
36
|
+
*
|
|
37
|
+
* ```sql
|
|
38
|
+
* select "person"."first_name" as "fn"
|
|
39
|
+
* from "person"
|
|
40
|
+
* order by "id", "fn" desc
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* Multiple columns/expressions per call:
|
|
44
|
+
*
|
|
45
|
+
* ```ts
|
|
46
|
+
* await db
|
|
47
|
+
* .selectFrom('person')
|
|
48
|
+
* .select('person.first_name as fn')
|
|
49
|
+
* .orderBy(['id', 'fn'])
|
|
50
|
+
* .execute()
|
|
51
|
+
* ```
|
|
52
|
+
*
|
|
53
|
+
* The generated SQL (PostgreSQL):
|
|
54
|
+
*
|
|
55
|
+
* ```sql
|
|
56
|
+
* select "person"."first_name" as "fn"
|
|
57
|
+
* from "person"
|
|
58
|
+
* order by "id", "fn"
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* Building advanced modifiers:
|
|
62
|
+
*
|
|
63
|
+
* ```ts
|
|
64
|
+
* await db
|
|
65
|
+
* .selectFrom('person')
|
|
66
|
+
* .select('person.first_name as fn')
|
|
67
|
+
* .orderBy('id', (ob) => ob.desc().nullsFirst())
|
|
68
|
+
* .execute()
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* The generated SQL (PostgreSQL):
|
|
72
|
+
*
|
|
73
|
+
* ```sql
|
|
74
|
+
* select "person"."first_name" as "fn"
|
|
75
|
+
* from "person"
|
|
76
|
+
* order by "id" desc nulls first
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* The order by expression can also be a raw sql expression or a subquery
|
|
80
|
+
* in addition to column references:
|
|
81
|
+
*
|
|
82
|
+
* ```ts
|
|
83
|
+
* import { sql } from 'kysely'
|
|
84
|
+
*
|
|
85
|
+
* await db
|
|
86
|
+
* .selectFrom('person')
|
|
87
|
+
* .selectAll()
|
|
88
|
+
* .orderBy((eb) => eb.selectFrom('pet')
|
|
89
|
+
* .select('pet.name')
|
|
90
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
91
|
+
* .limit(1)
|
|
92
|
+
* )
|
|
93
|
+
* .orderBy(
|
|
94
|
+
* sql<string>`concat(first_name, last_name) asc`
|
|
95
|
+
* )
|
|
96
|
+
* .execute()
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* The generated SQL (PostgreSQL):
|
|
100
|
+
*
|
|
101
|
+
* ```sql
|
|
102
|
+
* select *
|
|
103
|
+
* from "person"
|
|
104
|
+
* order by
|
|
105
|
+
* ( select "pet"."name"
|
|
106
|
+
* from "pet"
|
|
107
|
+
* where "pet"."owner_id" = "person"."id"
|
|
108
|
+
* limit $1
|
|
109
|
+
* ) asc,
|
|
110
|
+
* concat(first_name, last_name) asc
|
|
111
|
+
* ```
|
|
112
|
+
*
|
|
113
|
+
* `dynamic.ref` can be used to refer to columns not known at
|
|
114
|
+
* compile time:
|
|
115
|
+
*
|
|
116
|
+
* ```ts
|
|
117
|
+
* async function someQuery(orderBy: string) {
|
|
118
|
+
* const { ref } = db.dynamic
|
|
119
|
+
*
|
|
120
|
+
* return await db
|
|
121
|
+
* .selectFrom('person')
|
|
122
|
+
* .select('person.first_name as fn')
|
|
123
|
+
* .orderBy(ref(orderBy))
|
|
124
|
+
* .execute()
|
|
125
|
+
* }
|
|
126
|
+
*
|
|
127
|
+
* someQuery('fn')
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* The generated SQL (PostgreSQL):
|
|
131
|
+
*
|
|
132
|
+
* ```sql
|
|
133
|
+
* select "person"."first_name" as "fn"
|
|
134
|
+
* from "person"
|
|
135
|
+
* order by "fn"
|
|
136
|
+
* ```
|
|
137
|
+
*/
|
|
138
|
+
orderBy<OE extends OrderByExpression<DB, TB, O>>(expr: OE, modifiers?: OrderByModifiers): OrderByInterface<DB, TB, O>;
|
|
139
|
+
/**
|
|
140
|
+
* @deprecated It does ~2-2.6x more compile-time instantiations compared to multiple chained `orderBy(expr, modifiers?)` calls (in `order by` clauses with reasonable item counts), and has broken autocompletion.
|
|
141
|
+
*/
|
|
142
|
+
orderBy<OE extends OrderByExpression<DB, TB, O> | DirectedOrderByStringReference<DB, TB, O>>(exprs: ReadonlyArray<OE>): OrderByInterface<DB, TB, O>;
|
|
143
|
+
/**
|
|
144
|
+
* @deprecated It does ~2.9x more compile-time instantiations compared to a `orderBy(expr, direction)` call.
|
|
145
|
+
*/
|
|
146
|
+
orderBy<OE extends DirectedOrderByStringReference<DB, TB, O>>(expr: OE): OrderByInterface<DB, TB, O>;
|
|
147
|
+
/**
|
|
148
|
+
* @deprecated Use `orderBy(expr, (ob) => ...)` instead.
|
|
149
|
+
*/
|
|
150
|
+
orderBy<OE extends OrderByExpression<DB, TB, O>>(expr: OE, modifiers: Expression<any>): OrderByInterface<DB, TB, O>;
|
|
151
|
+
/**
|
|
152
|
+
* Clears the `order by` clause from the query.
|
|
153
|
+
*
|
|
154
|
+
* See {@link orderBy} for adding an `order by` clause or item to a query.
|
|
155
|
+
*
|
|
156
|
+
* ### Examples
|
|
157
|
+
*
|
|
158
|
+
* ```ts
|
|
159
|
+
* const query = db
|
|
160
|
+
* .selectFrom('person')
|
|
161
|
+
* .selectAll()
|
|
162
|
+
* .orderBy('id', 'desc')
|
|
163
|
+
*
|
|
164
|
+
* const results = await query
|
|
165
|
+
* .clearOrderBy()
|
|
166
|
+
* .execute()
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* The generated SQL (PostgreSQL):
|
|
170
|
+
*
|
|
171
|
+
* ```sql
|
|
172
|
+
* select * from "person"
|
|
173
|
+
* ```
|
|
174
|
+
*/
|
|
175
|
+
clearOrderBy(): OrderByInterface<DB, TB, O>;
|
|
176
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
|
+
import { OrderByItemNode } from '../operation-node/order-by-item-node.js';
|
|
3
|
+
import { Collation } from '../parser/collate-parser.js';
|
|
4
|
+
export declare class OrderByItemBuilder implements OperationNodeSource {
|
|
5
|
+
#private;
|
|
6
|
+
constructor(props: OrderByItemBuilderProps);
|
|
7
|
+
/**
|
|
8
|
+
* Adds `desc` to the `order by` item.
|
|
9
|
+
*
|
|
10
|
+
* See {@link asc} for the opposite.
|
|
11
|
+
*/
|
|
12
|
+
desc(): OrderByItemBuilder;
|
|
13
|
+
/**
|
|
14
|
+
* Adds `asc` to the `order by` item.
|
|
15
|
+
*
|
|
16
|
+
* See {@link desc} for the opposite.
|
|
17
|
+
*/
|
|
18
|
+
asc(): OrderByItemBuilder;
|
|
19
|
+
/**
|
|
20
|
+
* Adds `nulls last` to the `order by` item.
|
|
21
|
+
*
|
|
22
|
+
* This is only supported by some dialects like PostgreSQL and SQLite.
|
|
23
|
+
*
|
|
24
|
+
* See {@link nullsFirst} for the opposite.
|
|
25
|
+
*/
|
|
26
|
+
nullsLast(): OrderByItemBuilder;
|
|
27
|
+
/**
|
|
28
|
+
* Adds `nulls first` to the `order by` item.
|
|
29
|
+
*
|
|
30
|
+
* This is only supported by some dialects like PostgreSQL and SQLite.
|
|
31
|
+
*
|
|
32
|
+
* See {@link nullsLast} for the opposite.
|
|
33
|
+
*/
|
|
34
|
+
nullsFirst(): OrderByItemBuilder;
|
|
35
|
+
/**
|
|
36
|
+
* Adds `collate <collationName>` to the `order by` item.
|
|
37
|
+
*/
|
|
38
|
+
collate(collation: Collation): OrderByItemBuilder;
|
|
39
|
+
toOperationNode(): OrderByItemNode;
|
|
40
|
+
}
|
|
41
|
+
export interface OrderByItemBuilderProps {
|
|
42
|
+
readonly node: OrderByItemNode;
|
|
43
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/// <reference types="./order-by-item-builder.d.ts" />
|
|
2
|
+
import { CollateNode } from '../operation-node/collate-node.js';
|
|
3
|
+
import { OrderByItemNode } from '../operation-node/order-by-item-node.js';
|
|
4
|
+
import { RawNode } from '../operation-node/raw-node.js';
|
|
5
|
+
import { freeze } from '../util/object-utils.js';
|
|
6
|
+
export class OrderByItemBuilder {
|
|
7
|
+
#props;
|
|
8
|
+
constructor(props) {
|
|
9
|
+
this.#props = freeze(props);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Adds `desc` to the `order by` item.
|
|
13
|
+
*
|
|
14
|
+
* See {@link asc} for the opposite.
|
|
15
|
+
*/
|
|
16
|
+
desc() {
|
|
17
|
+
return new OrderByItemBuilder({
|
|
18
|
+
node: OrderByItemNode.cloneWith(this.#props.node, {
|
|
19
|
+
direction: RawNode.createWithSql('desc'),
|
|
20
|
+
}),
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Adds `asc` to the `order by` item.
|
|
25
|
+
*
|
|
26
|
+
* See {@link desc} for the opposite.
|
|
27
|
+
*/
|
|
28
|
+
asc() {
|
|
29
|
+
return new OrderByItemBuilder({
|
|
30
|
+
node: OrderByItemNode.cloneWith(this.#props.node, {
|
|
31
|
+
direction: RawNode.createWithSql('asc'),
|
|
32
|
+
}),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Adds `nulls last` to the `order by` item.
|
|
37
|
+
*
|
|
38
|
+
* This is only supported by some dialects like PostgreSQL and SQLite.
|
|
39
|
+
*
|
|
40
|
+
* See {@link nullsFirst} for the opposite.
|
|
41
|
+
*/
|
|
42
|
+
nullsLast() {
|
|
43
|
+
return new OrderByItemBuilder({
|
|
44
|
+
node: OrderByItemNode.cloneWith(this.#props.node, { nulls: 'last' }),
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Adds `nulls first` to the `order by` item.
|
|
49
|
+
*
|
|
50
|
+
* This is only supported by some dialects like PostgreSQL and SQLite.
|
|
51
|
+
*
|
|
52
|
+
* See {@link nullsLast} for the opposite.
|
|
53
|
+
*/
|
|
54
|
+
nullsFirst() {
|
|
55
|
+
return new OrderByItemBuilder({
|
|
56
|
+
node: OrderByItemNode.cloneWith(this.#props.node, { nulls: 'first' }),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Adds `collate <collationName>` to the `order by` item.
|
|
61
|
+
*/
|
|
62
|
+
collate(collation) {
|
|
63
|
+
return new OrderByItemBuilder({
|
|
64
|
+
node: OrderByItemNode.cloneWith(this.#props.node, {
|
|
65
|
+
collation: CollateNode.create(collation),
|
|
66
|
+
}),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
toOperationNode() {
|
|
70
|
+
return this.#props.node;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
2
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
3
|
import { OverNode } from '../operation-node/over-node.js';
|
|
4
|
-
import {
|
|
4
|
+
import { DirectedOrderByStringReference, OrderByExpression, OrderByModifiers } from '../parser/order-by-parser.js';
|
|
5
5
|
import { PartitionByExpression } from '../parser/partition-by-parser.js';
|
|
6
|
-
import {
|
|
7
|
-
export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNodeSource {
|
|
6
|
+
import { OrderByInterface } from './order-by-interface.js';
|
|
7
|
+
export declare class OverBuilder<DB, TB extends keyof DB> implements OrderByInterface<DB, TB, {}>, OperationNodeSource {
|
|
8
8
|
#private;
|
|
9
9
|
constructor(props: OverBuilderProps);
|
|
10
10
|
/**
|
|
11
|
-
* Adds an order by clause item inside the over function.
|
|
11
|
+
* Adds an `order by` clause or item inside the `over` function.
|
|
12
12
|
*
|
|
13
13
|
* ```ts
|
|
14
14
|
* const result = await db
|
|
@@ -28,7 +28,44 @@ export declare class OverBuilder<DB, TB extends keyof DB> implements OperationNo
|
|
|
28
28
|
* from "person"
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
|
-
orderBy<OE extends
|
|
31
|
+
orderBy<OE extends OrderByExpression<DB, TB, {}>>(expr: OE, modifiers?: OrderByModifiers): OverBuilder<DB, TB>;
|
|
32
|
+
/**
|
|
33
|
+
* @deprecated It does ~2-2.6x more compile-time instantiations compared to multiple chained `orderBy(expr, modifiers?)` calls (in `order by` clauses with reasonable item counts), and has broken autocompletion.
|
|
34
|
+
*/
|
|
35
|
+
orderBy<OE extends OrderByExpression<DB, TB, {}> | DirectedOrderByStringReference<DB, TB, {}>>(exprs: ReadonlyArray<OE>): OverBuilder<DB, TB>;
|
|
36
|
+
/**
|
|
37
|
+
* @deprecated It does ~2.9x more compile-time instantiations compared to a `orderBy(expr, direction)` call.
|
|
38
|
+
*/
|
|
39
|
+
orderBy<OE extends DirectedOrderByStringReference<DB, TB, {}>>(expr: OE): OverBuilder<DB, TB>;
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated Use `orderBy(expr, (ob) => ...)` instead.
|
|
42
|
+
*/
|
|
43
|
+
orderBy<OE extends OrderByExpression<DB, TB, {}>>(expr: OE, modifiers: Expression<any>): OverBuilder<DB, TB>;
|
|
44
|
+
/**
|
|
45
|
+
* Clears the `order by` clause from the query.
|
|
46
|
+
*
|
|
47
|
+
* See {@link orderBy} for adding an `order by` clause or item to a query.
|
|
48
|
+
*
|
|
49
|
+
* ### Examples
|
|
50
|
+
*
|
|
51
|
+
* ```ts
|
|
52
|
+
* const query = db
|
|
53
|
+
* .selectFrom('person')
|
|
54
|
+
* .selectAll()
|
|
55
|
+
* .orderBy('id', 'desc')
|
|
56
|
+
*
|
|
57
|
+
* const results = await query
|
|
58
|
+
* .clearOrderBy()
|
|
59
|
+
* .execute()
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* The generated SQL (PostgreSQL):
|
|
63
|
+
*
|
|
64
|
+
* ```sql
|
|
65
|
+
* select * from "person"
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
clearOrderBy(): OverBuilder<DB, TB>;
|
|
32
69
|
/**
|
|
33
70
|
* Adds partition by clause item/s inside the over function.
|
|
34
71
|
*
|