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
|
@@ -8,7 +8,6 @@ import { parseReferenceExpressionOrList, } from '../parser/reference-parser.js';
|
|
|
8
8
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
9
9
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
10
10
|
import { parseOrderBy, } from '../parser/order-by-parser.js';
|
|
11
|
-
import { preventAwait } from '../util/prevent-await.js';
|
|
12
11
|
import { LimitNode } from '../operation-node/limit-node.js';
|
|
13
12
|
import { OffsetNode } from '../operation-node/offset-node.js';
|
|
14
13
|
import { asArray, freeze } from '../util/object-utils.js';
|
|
@@ -129,45 +128,45 @@ class SelectQueryBuilderImpl {
|
|
|
129
128
|
});
|
|
130
129
|
}
|
|
131
130
|
innerJoin(...args) {
|
|
132
|
-
return
|
|
133
|
-
...this.#props,
|
|
134
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('InnerJoin', args)),
|
|
135
|
-
});
|
|
131
|
+
return this.#join('InnerJoin', args);
|
|
136
132
|
}
|
|
137
133
|
leftJoin(...args) {
|
|
138
|
-
return
|
|
139
|
-
...this.#props,
|
|
140
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('LeftJoin', args)),
|
|
141
|
-
});
|
|
134
|
+
return this.#join('LeftJoin', args);
|
|
142
135
|
}
|
|
143
136
|
rightJoin(...args) {
|
|
144
|
-
return
|
|
145
|
-
...this.#props,
|
|
146
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('RightJoin', args)),
|
|
147
|
-
});
|
|
137
|
+
return this.#join('RightJoin', args);
|
|
148
138
|
}
|
|
149
139
|
fullJoin(...args) {
|
|
150
|
-
return
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
140
|
+
return this.#join('FullJoin', args);
|
|
141
|
+
}
|
|
142
|
+
crossJoin(...args) {
|
|
143
|
+
return this.#join('CrossJoin', args);
|
|
154
144
|
}
|
|
155
145
|
innerJoinLateral(...args) {
|
|
156
|
-
return
|
|
157
|
-
...this.#props,
|
|
158
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('LateralInnerJoin', args)),
|
|
159
|
-
});
|
|
146
|
+
return this.#join('LateralInnerJoin', args);
|
|
160
147
|
}
|
|
161
148
|
leftJoinLateral(...args) {
|
|
149
|
+
return this.#join('LateralLeftJoin', args);
|
|
150
|
+
}
|
|
151
|
+
crossJoinLateral(...args) {
|
|
152
|
+
return this.#join('LateralCrossJoin', args);
|
|
153
|
+
}
|
|
154
|
+
crossApply(...args) {
|
|
155
|
+
return this.#join('CrossApply', args);
|
|
156
|
+
}
|
|
157
|
+
outerApply(...args) {
|
|
158
|
+
return this.#join('OuterApply', args);
|
|
159
|
+
}
|
|
160
|
+
#join(joinType, args) {
|
|
162
161
|
return new SelectQueryBuilderImpl({
|
|
163
162
|
...this.#props,
|
|
164
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(
|
|
163
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),
|
|
165
164
|
});
|
|
166
165
|
}
|
|
167
166
|
orderBy(...args) {
|
|
168
167
|
return new SelectQueryBuilderImpl({
|
|
169
168
|
...this.#props,
|
|
170
|
-
queryNode:
|
|
169
|
+
queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),
|
|
171
170
|
});
|
|
172
171
|
}
|
|
173
172
|
groupBy(groupBy) {
|
|
@@ -266,7 +265,7 @@ class SelectQueryBuilderImpl {
|
|
|
266
265
|
clearOrderBy() {
|
|
267
266
|
return new SelectQueryBuilderImpl({
|
|
268
267
|
...this.#props,
|
|
269
|
-
queryNode:
|
|
268
|
+
queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode),
|
|
270
269
|
});
|
|
271
270
|
}
|
|
272
271
|
clearGroupBy() {
|
|
@@ -298,6 +297,9 @@ class SelectQueryBuilderImpl {
|
|
|
298
297
|
$asTuple() {
|
|
299
298
|
return new ExpressionWrapper(this.toOperationNode());
|
|
300
299
|
}
|
|
300
|
+
$asScalar() {
|
|
301
|
+
return new ExpressionWrapper(this.toOperationNode());
|
|
302
|
+
}
|
|
301
303
|
withPlugin(plugin) {
|
|
302
304
|
return new SelectQueryBuilderImpl({
|
|
303
305
|
...this.#props,
|
|
@@ -344,7 +346,6 @@ class SelectQueryBuilderImpl {
|
|
|
344
346
|
return await builder.execute();
|
|
345
347
|
}
|
|
346
348
|
}
|
|
347
|
-
preventAwait(SelectQueryBuilderImpl, "don't await SelectQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
|
|
348
349
|
export function createSelectQueryBuilder(props) {
|
|
349
350
|
return new SelectQueryBuilderImpl(props);
|
|
350
351
|
}
|
|
@@ -371,4 +372,3 @@ class AliasedSelectQueryBuilderImpl {
|
|
|
371
372
|
return AliasNode.create(this.#queryBuilder.toOperationNode(), IdentifierNode.create(this.#alias));
|
|
372
373
|
}
|
|
373
374
|
}
|
|
374
|
-
preventAwait(AliasedSelectQueryBuilderImpl, "don't await AliasedSelectQueryBuilder instances directly. AliasedSelectQueryBuilder should never be executed directly since it's always a part of another query.");
|
|
@@ -15,7 +15,7 @@ import { QueryId } from '../util/query-id.js';
|
|
|
15
15
|
import { UpdateResult } from './update-result.js';
|
|
16
16
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
17
17
|
import { WhereInterface } from './where-interface.js';
|
|
18
|
-
import {
|
|
18
|
+
import { MultiTableReturningInterface } from './returning-interface.js';
|
|
19
19
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
20
20
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
21
21
|
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
@@ -25,7 +25,9 @@ import { Streamable } from '../util/streamable.js';
|
|
|
25
25
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
26
26
|
import { ValueExpression } from '../parser/value-parser.js';
|
|
27
27
|
import { OutputCallback, OutputExpression, OutputInterface, OutputPrefix, SelectExpressionFromOutputCallback, SelectExpressionFromOutputExpression } from './output-interface.js';
|
|
28
|
-
|
|
28
|
+
import { OrderByInterface } from './order-by-interface.js';
|
|
29
|
+
import { DirectedOrderByStringReference, OrderByExpression, OrderByModifiers } from '../parser/order-by-parser.js';
|
|
30
|
+
export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, MultiTableReturningInterface<DB, TB, O>, OutputInterface<DB, TB, O>, OrderByInterface<DB, TB, never>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
|
|
29
31
|
#private;
|
|
30
32
|
constructor(props: UpdateQueryBuilderProps);
|
|
31
33
|
/**
|
|
@@ -599,6 +601,50 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
599
601
|
*/
|
|
600
602
|
fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): UpdateQueryBuilderWithFullJoin<DB, UT, TB, O, TE>;
|
|
601
603
|
fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): UpdateQueryBuilderWithFullJoin<DB, UT, TB, O, TE>;
|
|
604
|
+
/**
|
|
605
|
+
* @description This is only supported by some dialects like MySQL or SQLite with `SQLITE_ENABLE_UPDATE_DELETE_LIMIT`.
|
|
606
|
+
*/
|
|
607
|
+
orderBy<OE extends OrderByExpression<DB, TB, {}>>(expr: OE, modifiers?: OrderByModifiers): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
608
|
+
/**
|
|
609
|
+
* @description This is only supported by some dialects like MySQL or SQLite with `SQLITE_ENABLE_UPDATE_DELETE_LIMIT`.
|
|
610
|
+
* @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.
|
|
611
|
+
*/
|
|
612
|
+
orderBy<OE extends OrderByExpression<DB, TB, {}> | DirectedOrderByStringReference<DB, TB, {}>>(exprs: ReadonlyArray<OE>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
613
|
+
/**
|
|
614
|
+
* @description This is only supported by some dialects like MySQL or SQLite with `SQLITE_ENABLE_UPDATE_DELETE_LIMIT`.
|
|
615
|
+
* @deprecated It does ~2.9x more compile-time instantiations compared to a `orderBy(expr, direction)` call.
|
|
616
|
+
*/
|
|
617
|
+
orderBy<OE extends DirectedOrderByStringReference<DB, TB, {}>>(expr: OE): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
618
|
+
/**
|
|
619
|
+
* @description This is only supported by some dialects like MySQL or SQLite with `SQLITE_ENABLE_UPDATE_DELETE_LIMIT`.
|
|
620
|
+
* @deprecated Use `orderBy(expr, (ob) => ...)` instead.
|
|
621
|
+
*/
|
|
622
|
+
orderBy<OE extends OrderByExpression<DB, TB, {}>>(expr: OE, modifiers: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
623
|
+
/**
|
|
624
|
+
* Clears the `order by` clause from the query.
|
|
625
|
+
*
|
|
626
|
+
* See {@link orderBy} for adding an `order by` clause or item to a query.
|
|
627
|
+
*
|
|
628
|
+
* ### Examples
|
|
629
|
+
*
|
|
630
|
+
* ```ts
|
|
631
|
+
* const query = db
|
|
632
|
+
* .selectFrom('person')
|
|
633
|
+
* .selectAll()
|
|
634
|
+
* .orderBy('id', 'desc')
|
|
635
|
+
*
|
|
636
|
+
* const results = await query
|
|
637
|
+
* .clearOrderBy()
|
|
638
|
+
* .execute()
|
|
639
|
+
* ```
|
|
640
|
+
*
|
|
641
|
+
* The generated SQL (PostgreSQL):
|
|
642
|
+
*
|
|
643
|
+
* ```sql
|
|
644
|
+
* select * from "person"
|
|
645
|
+
* ```
|
|
646
|
+
*/
|
|
647
|
+
clearOrderBy(): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
602
648
|
/**
|
|
603
649
|
* Adds a limit clause to the update query for supported databases, such as MySQL.
|
|
604
650
|
*
|
|
@@ -651,8 +697,6 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
651
697
|
* })
|
|
652
698
|
* .where('id', '=', 1)
|
|
653
699
|
* .executeTakeFirst()
|
|
654
|
-
*
|
|
655
|
-
* console.log(result.numUpdatedRows)
|
|
656
700
|
* ```
|
|
657
701
|
*
|
|
658
702
|
* The generated SQL (PostgreSQL):
|
|
@@ -676,8 +720,6 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
676
720
|
* }))
|
|
677
721
|
* .where('id', '=', 1)
|
|
678
722
|
* .executeTakeFirst()
|
|
679
|
-
*
|
|
680
|
-
* console.log(result.numUpdatedRows)
|
|
681
723
|
* ```
|
|
682
724
|
*
|
|
683
725
|
* The generated SQL (PostgreSQL):
|
|
@@ -762,6 +804,43 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
762
804
|
* "last_name" = $3 || $4
|
|
763
805
|
* where "id" = $5
|
|
764
806
|
* ```
|
|
807
|
+
*
|
|
808
|
+
* <!-- siteExample("update", "MySQL joins", 30) -->
|
|
809
|
+
*
|
|
810
|
+
* MySQL allows you to join tables directly to the "main" table and update
|
|
811
|
+
* rows of all joined tables. This is possible by passing all tables to the
|
|
812
|
+
* `updateTable` method as a list and adding the `ON` conditions as `WHERE`
|
|
813
|
+
* statements. You can then use the `set(column, value)` variant to update
|
|
814
|
+
* columns using table qualified names.
|
|
815
|
+
*
|
|
816
|
+
* The `UpdateQueryBuilder` also has `innerJoin` etc. join methods, but those
|
|
817
|
+
* can only be used as part of a PostgreSQL `update set from join` query.
|
|
818
|
+
* Due to type complexity issues, we unfortunately can't make the same
|
|
819
|
+
* methods work in both cases.
|
|
820
|
+
*
|
|
821
|
+
* ```ts
|
|
822
|
+
* const result = await db
|
|
823
|
+
* .updateTable(['person', 'pet'])
|
|
824
|
+
* .set('person.first_name', 'Updated person')
|
|
825
|
+
* .set('pet.name', 'Updated doggo')
|
|
826
|
+
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
827
|
+
* .where('person.id', '=', 1)
|
|
828
|
+
* .executeTakeFirst()
|
|
829
|
+
* ```
|
|
830
|
+
*
|
|
831
|
+
* The generated SQL (MySQL):
|
|
832
|
+
*
|
|
833
|
+
* ```sql
|
|
834
|
+
* update
|
|
835
|
+
* `person`,
|
|
836
|
+
* `pet`
|
|
837
|
+
* set
|
|
838
|
+
* `person`.`first_name` = ?,
|
|
839
|
+
* `pet`.`name` = ?
|
|
840
|
+
* where
|
|
841
|
+
* `person`.`id` = `pet`.`owner_id`
|
|
842
|
+
* and `person`.`id` = ?
|
|
843
|
+
* ```
|
|
765
844
|
*/
|
|
766
845
|
set(update: UpdateObjectExpression<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
767
846
|
set<RE extends ReferenceExpression<DB, UT>>(key: RE, value: ValueExpression<DB, TB, ExtractUpdateTypeFromReferenceExpression<DB, UT, RE>>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
@@ -769,7 +848,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
769
848
|
* Allows you to return data from modified rows.
|
|
770
849
|
*
|
|
771
850
|
* On supported databases like PostgreSQL, this method can be chained to
|
|
772
|
-
* `insert`, `update` and `
|
|
851
|
+
* `insert`, `update`, `delete` and `merge` queries to return data.
|
|
773
852
|
*
|
|
774
853
|
* Note that on SQLite you need to give aliases for the expressions to avoid
|
|
775
854
|
* [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
|
|
@@ -828,8 +907,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
828
907
|
returning<CB extends SelectCallback<DB, TB>>(callback: CB): UpdateQueryBuilder<DB, UT, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
829
908
|
returning<SE extends SelectExpression<DB, TB>>(selection: SE): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
|
|
830
909
|
/**
|
|
831
|
-
* Adds a `returning *` to an insert/update/delete
|
|
832
|
-
* that support `returning` such as PostgreSQL.
|
|
910
|
+
* Adds a `returning *` or `returning table.*` to an insert/update/delete/merge
|
|
911
|
+
* query on databases that support `returning` such as PostgreSQL.
|
|
833
912
|
*
|
|
834
913
|
* Also see the {@link returning} method.
|
|
835
914
|
*/
|
|
@@ -5,7 +5,6 @@ import { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';
|
|
|
5
5
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
6
6
|
import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|
7
7
|
import { parseUpdate, } from '../parser/update-set-parser.js';
|
|
8
|
-
import { preventAwait } from '../util/prevent-await.js';
|
|
9
8
|
import { freeze } from '../util/object-utils.js';
|
|
10
9
|
import { UpdateResult } from './update-result.js';
|
|
11
10
|
import { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';
|
|
@@ -13,6 +12,7 @@ import { parseReferentialBinaryOperation, parseValueBinaryOperationOrExpression,
|
|
|
13
12
|
import { parseValueExpression, } from '../parser/value-parser.js';
|
|
14
13
|
import { LimitNode } from '../operation-node/limit-node.js';
|
|
15
14
|
import { parseTop } from '../parser/top-parser.js';
|
|
15
|
+
import { parseOrderBy, } from '../parser/order-by-parser.js';
|
|
16
16
|
export class UpdateQueryBuilder {
|
|
17
17
|
#props;
|
|
18
18
|
constructor(props) {
|
|
@@ -88,27 +88,33 @@ export class UpdateQueryBuilder {
|
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
90
|
innerJoin(...args) {
|
|
91
|
-
return
|
|
92
|
-
...this.#props,
|
|
93
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('InnerJoin', args)),
|
|
94
|
-
});
|
|
91
|
+
return this.#join('InnerJoin', args);
|
|
95
92
|
}
|
|
96
93
|
leftJoin(...args) {
|
|
94
|
+
return this.#join('LeftJoin', args);
|
|
95
|
+
}
|
|
96
|
+
rightJoin(...args) {
|
|
97
|
+
return this.#join('RightJoin', args);
|
|
98
|
+
}
|
|
99
|
+
fullJoin(...args) {
|
|
100
|
+
return this.#join('FullJoin', args);
|
|
101
|
+
}
|
|
102
|
+
#join(joinType, args) {
|
|
97
103
|
return new UpdateQueryBuilder({
|
|
98
104
|
...this.#props,
|
|
99
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(
|
|
105
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),
|
|
100
106
|
});
|
|
101
107
|
}
|
|
102
|
-
|
|
108
|
+
orderBy(...args) {
|
|
103
109
|
return new UpdateQueryBuilder({
|
|
104
110
|
...this.#props,
|
|
105
|
-
queryNode: QueryNode.
|
|
111
|
+
queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),
|
|
106
112
|
});
|
|
107
113
|
}
|
|
108
|
-
|
|
114
|
+
clearOrderBy() {
|
|
109
115
|
return new UpdateQueryBuilder({
|
|
110
116
|
...this.#props,
|
|
111
|
-
queryNode: QueryNode.
|
|
117
|
+
queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode),
|
|
112
118
|
});
|
|
113
119
|
}
|
|
114
120
|
/**
|
|
@@ -458,10 +464,7 @@ export class UpdateQueryBuilder {
|
|
|
458
464
|
return result.rows;
|
|
459
465
|
}
|
|
460
466
|
return [
|
|
461
|
-
new UpdateResult(
|
|
462
|
-
// TODO: remove numUpdatedOrDeletedRows.
|
|
463
|
-
// TODO: https://github.com/kysely-org/kysely/pull/431#discussion_r1172330899
|
|
464
|
-
result.numAffectedRows ?? result.numUpdatedOrDeletedRows ?? BigInt(0), result.numChangedRows),
|
|
467
|
+
new UpdateResult(result.numAffectedRows ?? BigInt(0), result.numChangedRows),
|
|
465
468
|
];
|
|
466
469
|
}
|
|
467
470
|
/**
|
|
@@ -505,4 +508,3 @@ export class UpdateQueryBuilder {
|
|
|
505
508
|
return await builder.execute();
|
|
506
509
|
}
|
|
507
510
|
}
|
|
508
|
-
preventAwait(UpdateQueryBuilder, "don't await UpdateQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { QueryId } from '../util/query-id.js';
|
|
1
2
|
import { RootOperationNode } from './query-compiler.js';
|
|
2
3
|
export interface CompiledQuery<O = unknown> {
|
|
3
4
|
readonly query: RootOperationNode;
|
|
5
|
+
readonly queryId: QueryId;
|
|
4
6
|
readonly sql: string;
|
|
5
7
|
readonly parameters: ReadonlyArray<unknown>;
|
|
6
8
|
}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/// <reference types="./compiled-query.d.ts" />
|
|
2
2
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
3
3
|
import { freeze } from '../util/object-utils.js';
|
|
4
|
+
import { createQueryId } from '../util/query-id.js';
|
|
4
5
|
export const CompiledQuery = freeze({
|
|
5
6
|
raw(sql, parameters = []) {
|
|
6
7
|
return freeze({
|
|
7
8
|
sql,
|
|
8
9
|
query: RawNode.createWithSql(sql),
|
|
9
10
|
parameters: freeze(parameters),
|
|
11
|
+
queryId: createQueryId(),
|
|
10
12
|
});
|
|
11
13
|
},
|
|
12
14
|
});
|
|
@@ -35,7 +35,7 @@ import { SelectAllNode } from '../operation-node/select-all-node.js';
|
|
|
35
35
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
36
36
|
import { SelectionNode } from '../operation-node/selection-node.js';
|
|
37
37
|
import { TableNode } from '../operation-node/table-node.js';
|
|
38
|
-
import { PrimaryKeyConstraintNode } from '../operation-node/primary-constraint-node.js';
|
|
38
|
+
import { PrimaryKeyConstraintNode } from '../operation-node/primary-key-constraint-node.js';
|
|
39
39
|
import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.js';
|
|
40
40
|
import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|
41
41
|
import { ValueListNode } from '../operation-node/value-list-node.js';
|
|
@@ -95,10 +95,15 @@ import { CastNode } from '../operation-node/cast-node.js';
|
|
|
95
95
|
import { FetchNode } from '../operation-node/fetch-node.js';
|
|
96
96
|
import { TopNode } from '../operation-node/top-node.js';
|
|
97
97
|
import { OutputNode } from '../operation-node/output-node.js';
|
|
98
|
+
import { RefreshMaterializedViewNode } from '../operation-node/refresh-materialized-view-node.js';
|
|
99
|
+
import { OrActionNode } from '../operation-node/or-action-node.js';
|
|
100
|
+
import { CollateNode } from '../operation-node/collate-node.js';
|
|
101
|
+
import { QueryId } from '../util/query-id.js';
|
|
102
|
+
import { RenameConstraintNode } from '../operation-node/rename-constraint-node.js';
|
|
98
103
|
export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
|
|
99
104
|
#private;
|
|
100
105
|
protected get numParameters(): number;
|
|
101
|
-
compileQuery(node: RootOperationNode): CompiledQuery;
|
|
106
|
+
compileQuery(node: RootOperationNode, queryId: QueryId): CompiledQuery;
|
|
102
107
|
protected getSql(): string;
|
|
103
108
|
protected visitSelectQuery(node: SelectQueryNode): void;
|
|
104
109
|
protected visitFrom(node: FromNode): void;
|
|
@@ -151,6 +156,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
151
156
|
protected visitCreateSchema(node: CreateSchemaNode): void;
|
|
152
157
|
protected visitDropSchema(node: DropSchemaNode): void;
|
|
153
158
|
protected visitPrimaryKeyConstraint(node: PrimaryKeyConstraintNode): void;
|
|
159
|
+
protected buildDeferrable(node: {
|
|
160
|
+
deferrable?: boolean;
|
|
161
|
+
initiallyDeferred?: boolean;
|
|
162
|
+
}): void;
|
|
154
163
|
protected visitUniqueConstraint(node: UniqueConstraintNode): void;
|
|
155
164
|
protected visitCheckConstraint(node: CheckConstraintNode): void;
|
|
156
165
|
protected visitForeignKeyConstraint(node: ForeignKeyConstraintNode): void;
|
|
@@ -166,8 +175,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
166
175
|
protected visitModifyColumn(node: ModifyColumnNode): void;
|
|
167
176
|
protected visitAddConstraint(node: AddConstraintNode): void;
|
|
168
177
|
protected visitDropConstraint(node: DropConstraintNode): void;
|
|
178
|
+
protected visitRenameConstraint(node: RenameConstraintNode): void;
|
|
169
179
|
protected visitSetOperation(node: SetOperationNode): void;
|
|
170
180
|
protected visitCreateView(node: CreateViewNode): void;
|
|
181
|
+
protected visitRefreshMaterializedView(node: RefreshMaterializedViewNode): void;
|
|
171
182
|
protected visitDropView(node: DropViewNode): void;
|
|
172
183
|
protected visitGenerated(node: GeneratedNode): void;
|
|
173
184
|
protected visitDefaultValue(node: DefaultValueNode): void;
|
|
@@ -198,6 +209,8 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
198
209
|
protected visitFetch(node: FetchNode): void;
|
|
199
210
|
protected visitOutput(node: OutputNode): void;
|
|
200
211
|
protected visitTop(node: TopNode): void;
|
|
212
|
+
protected visitOrAction(node: OrActionNode): void;
|
|
213
|
+
protected visitCollate(node: CollateNode): void;
|
|
201
214
|
protected append(str: string): void;
|
|
202
215
|
protected appendValue(parameter: unknown): void;
|
|
203
216
|
protected getLeftIdentifierWrapper(): string;
|
|
@@ -208,8 +221,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
208
221
|
protected getExplainOptionsDelimiter(): string;
|
|
209
222
|
protected getRightExplainOptionsWrapper(): string;
|
|
210
223
|
protected sanitizeIdentifier(identifier: string): string;
|
|
224
|
+
protected sanitizeStringLiteral(value: string): string;
|
|
211
225
|
protected addParameter(parameter: unknown): void;
|
|
212
226
|
protected appendImmediateValue(value: unknown): void;
|
|
227
|
+
protected appendStringLiteral(value: string): void;
|
|
213
228
|
protected sortSelectModifiers(arr: SelectModifierNode[]): ReadonlyArray<SelectModifierNode>;
|
|
214
229
|
protected compileColumnAlterations(columnAlterations: readonly AlterTableColumnAlterationNode[]): void;
|
|
215
230
|
/**
|
|
@@ -9,19 +9,22 @@ import { freeze, isString, isNumber, isBoolean, isNull, isDate, isBigInt, } from
|
|
|
9
9
|
import { CreateViewNode } from '../operation-node/create-view-node.js';
|
|
10
10
|
import { SetOperationNode } from '../operation-node/set-operation-node.js';
|
|
11
11
|
import { MergeQueryNode } from '../operation-node/merge-query-node.js';
|
|
12
|
+
import { logOnce } from '../util/log-once.js';
|
|
13
|
+
const LIT_WRAP_REGEX = /'/g;
|
|
12
14
|
export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
13
15
|
#sql = '';
|
|
14
16
|
#parameters = [];
|
|
15
17
|
get numParameters() {
|
|
16
18
|
return this.#parameters.length;
|
|
17
19
|
}
|
|
18
|
-
compileQuery(node) {
|
|
20
|
+
compileQuery(node, queryId) {
|
|
19
21
|
this.#sql = '';
|
|
20
22
|
this.#parameters = [];
|
|
21
23
|
this.nodeStack.splice(0, this.nodeStack.length);
|
|
22
24
|
this.visitNode(node);
|
|
23
25
|
return freeze({
|
|
24
26
|
query: node,
|
|
27
|
+
queryId,
|
|
25
28
|
sql: this.getSql(),
|
|
26
29
|
parameters: [...this.#parameters],
|
|
27
30
|
});
|
|
@@ -159,9 +162,15 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
159
162
|
this.append(' ');
|
|
160
163
|
}
|
|
161
164
|
this.append(node.replace ? 'replace' : 'insert');
|
|
165
|
+
// TODO: remove in 0.29.
|
|
162
166
|
if (node.ignore) {
|
|
167
|
+
logOnce('`InsertQueryNode.ignore` is deprecated. Use `InsertQueryNode.orAction` instead.');
|
|
163
168
|
this.append(' ignore');
|
|
164
169
|
}
|
|
170
|
+
if (node.orAction) {
|
|
171
|
+
this.append(' ');
|
|
172
|
+
this.visitNode(node.orAction);
|
|
173
|
+
}
|
|
165
174
|
if (node.top) {
|
|
166
175
|
this.append(' ');
|
|
167
176
|
this.visitNode(node.top);
|
|
@@ -498,10 +507,18 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
498
507
|
}
|
|
499
508
|
visitOrderByItem(node) {
|
|
500
509
|
this.visitNode(node.orderBy);
|
|
510
|
+
if (node.collation) {
|
|
511
|
+
this.append(' ');
|
|
512
|
+
this.visitNode(node.collation);
|
|
513
|
+
}
|
|
501
514
|
if (node.direction) {
|
|
502
515
|
this.append(' ');
|
|
503
516
|
this.visitNode(node.direction);
|
|
504
517
|
}
|
|
518
|
+
if (node.nulls) {
|
|
519
|
+
this.append(' nulls ');
|
|
520
|
+
this.append(node.nulls);
|
|
521
|
+
}
|
|
505
522
|
}
|
|
506
523
|
visitGroupBy(node) {
|
|
507
524
|
this.append('group by ');
|
|
@@ -546,6 +563,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
546
563
|
this.visitNode(node.from);
|
|
547
564
|
}
|
|
548
565
|
if (node.joins) {
|
|
566
|
+
if (!node.from) {
|
|
567
|
+
throw new Error("Joins in an update query are only supported as a part of a PostgreSQL 'update set from join' query. If you want to create a MySQL 'update join set' query, see https://kysely.dev/docs/examples/update/my-sql-joins");
|
|
568
|
+
}
|
|
549
569
|
this.append(' ');
|
|
550
570
|
this.compileList(node.joins, ' ');
|
|
551
571
|
}
|
|
@@ -553,6 +573,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
553
573
|
this.append(' ');
|
|
554
574
|
this.visitNode(node.where);
|
|
555
575
|
}
|
|
576
|
+
if (node.orderBy) {
|
|
577
|
+
this.append(' ');
|
|
578
|
+
this.visitNode(node.orderBy);
|
|
579
|
+
}
|
|
556
580
|
if (node.limit) {
|
|
557
581
|
this.append(' ');
|
|
558
582
|
this.visitNode(node.limit);
|
|
@@ -689,6 +713,25 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
689
713
|
this.append('primary key (');
|
|
690
714
|
this.compileList(node.columns);
|
|
691
715
|
this.append(')');
|
|
716
|
+
this.buildDeferrable(node);
|
|
717
|
+
}
|
|
718
|
+
buildDeferrable(node) {
|
|
719
|
+
if (node.deferrable !== undefined) {
|
|
720
|
+
if (node.deferrable) {
|
|
721
|
+
this.append(' deferrable');
|
|
722
|
+
}
|
|
723
|
+
else {
|
|
724
|
+
this.append(' not deferrable');
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
if (node.initiallyDeferred !== undefined) {
|
|
728
|
+
if (node.initiallyDeferred) {
|
|
729
|
+
this.append(' initially deferred');
|
|
730
|
+
}
|
|
731
|
+
else {
|
|
732
|
+
this.append(' initially immediate');
|
|
733
|
+
}
|
|
734
|
+
}
|
|
692
735
|
}
|
|
693
736
|
visitUniqueConstraint(node) {
|
|
694
737
|
if (node.name) {
|
|
@@ -703,6 +746,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
703
746
|
this.append(' (');
|
|
704
747
|
this.compileList(node.columns);
|
|
705
748
|
this.append(')');
|
|
749
|
+
this.buildDeferrable(node);
|
|
706
750
|
}
|
|
707
751
|
visitCheckConstraint(node) {
|
|
708
752
|
if (node.name) {
|
|
@@ -732,6 +776,7 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
732
776
|
this.append(' on update ');
|
|
733
777
|
this.append(node.onUpdate);
|
|
734
778
|
}
|
|
779
|
+
this.buildDeferrable(node);
|
|
735
780
|
}
|
|
736
781
|
visitList(node) {
|
|
737
782
|
this.compileList(node.items);
|
|
@@ -780,6 +825,9 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
780
825
|
if (node.dropConstraint) {
|
|
781
826
|
this.visitNode(node.dropConstraint);
|
|
782
827
|
}
|
|
828
|
+
if (node.renameConstraint) {
|
|
829
|
+
this.visitNode(node.renameConstraint);
|
|
830
|
+
}
|
|
783
831
|
if (node.columnAlterations) {
|
|
784
832
|
this.compileColumnAlterations(node.columnAlterations);
|
|
785
833
|
}
|
|
@@ -853,6 +901,12 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
853
901
|
this.append(' restrict');
|
|
854
902
|
}
|
|
855
903
|
}
|
|
904
|
+
visitRenameConstraint(node) {
|
|
905
|
+
this.append('rename constraint ');
|
|
906
|
+
this.visitNode(node.oldName);
|
|
907
|
+
this.append(' to ');
|
|
908
|
+
this.visitNode(node.newName);
|
|
909
|
+
}
|
|
856
910
|
visitSetOperation(node) {
|
|
857
911
|
this.append(node.operator);
|
|
858
912
|
this.append(' ');
|
|
@@ -888,6 +942,19 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
888
942
|
this.visitNode(node.as);
|
|
889
943
|
}
|
|
890
944
|
}
|
|
945
|
+
visitRefreshMaterializedView(node) {
|
|
946
|
+
this.append('refresh materialized view ');
|
|
947
|
+
if (node.concurrently) {
|
|
948
|
+
this.append('concurrently ');
|
|
949
|
+
}
|
|
950
|
+
this.visitNode(node.name);
|
|
951
|
+
if (node.withNoData) {
|
|
952
|
+
this.append(' with no data');
|
|
953
|
+
}
|
|
954
|
+
else {
|
|
955
|
+
this.append(' with data');
|
|
956
|
+
}
|
|
957
|
+
}
|
|
891
958
|
visitDropView(node) {
|
|
892
959
|
this.append('drop ');
|
|
893
960
|
if (node.materialized) {
|
|
@@ -988,6 +1055,11 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
988
1055
|
this.visitNode(node.orderBy);
|
|
989
1056
|
}
|
|
990
1057
|
this.append(')');
|
|
1058
|
+
if (node.withinGroup) {
|
|
1059
|
+
this.append(' within group (');
|
|
1060
|
+
this.visitNode(node.withinGroup);
|
|
1061
|
+
this.append(')');
|
|
1062
|
+
}
|
|
991
1063
|
if (node.filter) {
|
|
992
1064
|
this.append(' filter(');
|
|
993
1065
|
this.visitNode(node.filter);
|
|
@@ -1125,6 +1197,10 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
1125
1197
|
this.append(' ');
|
|
1126
1198
|
this.compileList(node.whens, ' ');
|
|
1127
1199
|
}
|
|
1200
|
+
if (node.returning) {
|
|
1201
|
+
this.append(' ');
|
|
1202
|
+
this.visitNode(node.returning);
|
|
1203
|
+
}
|
|
1128
1204
|
if (node.output) {
|
|
1129
1205
|
this.append(' ');
|
|
1130
1206
|
this.visitNode(node.output);
|
|
@@ -1182,6 +1258,13 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
1182
1258
|
this.append(` ${node.modifiers}`);
|
|
1183
1259
|
}
|
|
1184
1260
|
}
|
|
1261
|
+
visitOrAction(node) {
|
|
1262
|
+
this.append(node.action);
|
|
1263
|
+
}
|
|
1264
|
+
visitCollate(node) {
|
|
1265
|
+
this.append('collate ');
|
|
1266
|
+
this.visitNode(node.collation);
|
|
1267
|
+
}
|
|
1185
1268
|
append(str) {
|
|
1186
1269
|
this.#sql += str;
|
|
1187
1270
|
}
|
|
@@ -1225,12 +1308,15 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
1225
1308
|
}
|
|
1226
1309
|
return sanitized;
|
|
1227
1310
|
}
|
|
1311
|
+
sanitizeStringLiteral(value) {
|
|
1312
|
+
return value.replace(LIT_WRAP_REGEX, "''");
|
|
1313
|
+
}
|
|
1228
1314
|
addParameter(parameter) {
|
|
1229
1315
|
this.#parameters.push(parameter);
|
|
1230
1316
|
}
|
|
1231
1317
|
appendImmediateValue(value) {
|
|
1232
1318
|
if (isString(value)) {
|
|
1233
|
-
this.
|
|
1319
|
+
this.appendStringLiteral(value);
|
|
1234
1320
|
}
|
|
1235
1321
|
else if (isNumber(value) || isBoolean(value)) {
|
|
1236
1322
|
this.append(value.toString());
|
|
@@ -1248,6 +1334,11 @@ export class DefaultQueryCompiler extends OperationNodeVisitor {
|
|
|
1248
1334
|
throw new Error(`invalid immediate value ${value}`);
|
|
1249
1335
|
}
|
|
1250
1336
|
}
|
|
1337
|
+
appendStringLiteral(value) {
|
|
1338
|
+
this.append("'");
|
|
1339
|
+
this.append(this.sanitizeStringLiteral(value));
|
|
1340
|
+
this.append("'");
|
|
1341
|
+
}
|
|
1251
1342
|
sortSelectModifiers(arr) {
|
|
1252
1343
|
arr.sort((left, right) => left.modifier && right.modifier
|
|
1253
1344
|
? SELECT_MODIFIER_PRIORITY[left.modifier] -
|
|
@@ -1289,7 +1380,11 @@ const JOIN_TYPE_SQL = freeze({
|
|
|
1289
1380
|
LeftJoin: 'left join',
|
|
1290
1381
|
RightJoin: 'right join',
|
|
1291
1382
|
FullJoin: 'full join',
|
|
1383
|
+
CrossJoin: 'cross join',
|
|
1292
1384
|
LateralInnerJoin: 'inner join lateral',
|
|
1293
1385
|
LateralLeftJoin: 'left join lateral',
|
|
1386
|
+
LateralCrossJoin: 'cross join lateral',
|
|
1387
|
+
OuterApply: 'outer apply',
|
|
1388
|
+
CrossApply: 'cross apply',
|
|
1294
1389
|
Using: 'using',
|
|
1295
1390
|
});
|