kysely 0.27.6 → 0.28.1
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
|
@@ -6,7 +6,6 @@ const insert_values_parser_js_1 = require("../parser/insert-values-parser.js");
|
|
|
6
6
|
const insert_query_node_js_1 = require("../operation-node/insert-query-node.js");
|
|
7
7
|
const query_node_js_1 = require("../operation-node/query-node.js");
|
|
8
8
|
const update_set_parser_js_1 = require("../parser/update-set-parser.js");
|
|
9
|
-
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
10
9
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
11
10
|
const on_duplicate_key_node_js_1 = require("../operation-node/on-duplicate-key-node.js");
|
|
12
11
|
const insert_result_js_1 = require("./insert-result.js");
|
|
@@ -16,6 +15,7 @@ const column_node_js_1 = require("../operation-node/column-node.js");
|
|
|
16
15
|
const on_conflict_builder_js_1 = require("./on-conflict-builder.js");
|
|
17
16
|
const on_conflict_node_js_1 = require("../operation-node/on-conflict-node.js");
|
|
18
17
|
const top_parser_js_1 = require("../parser/top-parser.js");
|
|
18
|
+
const or_action_node_js_1 = require("../operation-node/or-action-node.js");
|
|
19
19
|
class InsertQueryBuilder {
|
|
20
20
|
#props;
|
|
21
21
|
constructor(props) {
|
|
@@ -338,15 +338,18 @@ class InsertQueryBuilder {
|
|
|
338
338
|
/**
|
|
339
339
|
* Changes an `insert into` query to an `insert ignore into` query.
|
|
340
340
|
*
|
|
341
|
+
* This is only supported by some dialects like MySQL.
|
|
342
|
+
*
|
|
343
|
+
* To avoid a footgun, when invoked with the SQLite dialect, this method will
|
|
344
|
+
* be handled like {@link orIgnore}. See also, {@link orAbort}, {@link orFail},
|
|
345
|
+
* {@link orReplace}, and {@link orRollback}.
|
|
346
|
+
*
|
|
341
347
|
* If you use the ignore modifier, ignorable errors that occur while executing the
|
|
342
348
|
* insert statement are ignored. For example, without ignore, a row that duplicates
|
|
343
349
|
* an existing unique index or primary key value in the table causes a duplicate-key
|
|
344
350
|
* error and the statement is aborted. With ignore, the row is discarded and no error
|
|
345
351
|
* occurs.
|
|
346
352
|
*
|
|
347
|
-
* This is only supported on some dialects like MySQL. On most dialects you should
|
|
348
|
-
* use the {@link onConflict} method.
|
|
349
|
-
*
|
|
350
353
|
* ### Examples
|
|
351
354
|
*
|
|
352
355
|
* ```ts
|
|
@@ -363,14 +366,201 @@ class InsertQueryBuilder {
|
|
|
363
366
|
* The generated SQL (MySQL):
|
|
364
367
|
*
|
|
365
368
|
* ```sql
|
|
366
|
-
* insert ignore into `person` (
|
|
369
|
+
* insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)
|
|
370
|
+
* ```
|
|
371
|
+
*
|
|
372
|
+
* The generated SQL (SQLite):
|
|
373
|
+
*
|
|
374
|
+
* ```sql
|
|
375
|
+
* insert or ignore into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
367
376
|
* ```
|
|
368
377
|
*/
|
|
369
378
|
ignore() {
|
|
370
379
|
return new InsertQueryBuilder({
|
|
371
380
|
...this.#props,
|
|
372
381
|
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
373
|
-
|
|
382
|
+
orAction: or_action_node_js_1.OrActionNode.create('ignore'),
|
|
383
|
+
}),
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
/**
|
|
387
|
+
* Changes an `insert into` query to an `insert or ignore into` query.
|
|
388
|
+
*
|
|
389
|
+
* This is only supported by some dialects like SQLite.
|
|
390
|
+
*
|
|
391
|
+
* To avoid a footgun, when invoked with the MySQL dialect, this method will
|
|
392
|
+
* be handled like {@link ignore}.
|
|
393
|
+
*
|
|
394
|
+
* See also, {@link orAbort}, {@link orFail}, {@link orReplace}, and {@link orRollback}.
|
|
395
|
+
*
|
|
396
|
+
* ### Examples
|
|
397
|
+
*
|
|
398
|
+
* ```ts
|
|
399
|
+
* await db.insertInto('person')
|
|
400
|
+
* .orIgnore()
|
|
401
|
+
* .values({
|
|
402
|
+
* first_name: 'John',
|
|
403
|
+
* last_name: 'Doe',
|
|
404
|
+
* gender: 'female',
|
|
405
|
+
* })
|
|
406
|
+
* .execute()
|
|
407
|
+
* ```
|
|
408
|
+
*
|
|
409
|
+
* The generated SQL (SQLite):
|
|
410
|
+
*
|
|
411
|
+
* ```sql
|
|
412
|
+
* insert or ignore into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
413
|
+
* ```
|
|
414
|
+
*
|
|
415
|
+
* The generated SQL (MySQL):
|
|
416
|
+
*
|
|
417
|
+
* ```sql
|
|
418
|
+
* insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)
|
|
419
|
+
* ```
|
|
420
|
+
*/
|
|
421
|
+
orIgnore() {
|
|
422
|
+
return new InsertQueryBuilder({
|
|
423
|
+
...this.#props,
|
|
424
|
+
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
425
|
+
orAction: or_action_node_js_1.OrActionNode.create('ignore'),
|
|
426
|
+
}),
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Changes an `insert into` query to an `insert or abort into` query.
|
|
431
|
+
*
|
|
432
|
+
* This is only supported by some dialects like SQLite.
|
|
433
|
+
*
|
|
434
|
+
* See also, {@link orIgnore}, {@link orFail}, {@link orReplace}, and {@link orRollback}.
|
|
435
|
+
*
|
|
436
|
+
* ### Examples
|
|
437
|
+
*
|
|
438
|
+
* ```ts
|
|
439
|
+
* await db.insertInto('person')
|
|
440
|
+
* .orAbort()
|
|
441
|
+
* .values({
|
|
442
|
+
* first_name: 'John',
|
|
443
|
+
* last_name: 'Doe',
|
|
444
|
+
* gender: 'female',
|
|
445
|
+
* })
|
|
446
|
+
* .execute()
|
|
447
|
+
* ```
|
|
448
|
+
*
|
|
449
|
+
* The generated SQL (SQLite):
|
|
450
|
+
*
|
|
451
|
+
* ```sql
|
|
452
|
+
* insert or abort into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
453
|
+
* ```
|
|
454
|
+
*/
|
|
455
|
+
orAbort() {
|
|
456
|
+
return new InsertQueryBuilder({
|
|
457
|
+
...this.#props,
|
|
458
|
+
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
459
|
+
orAction: or_action_node_js_1.OrActionNode.create('abort'),
|
|
460
|
+
}),
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Changes an `insert into` query to an `insert or fail into` query.
|
|
465
|
+
*
|
|
466
|
+
* This is only supported by some dialects like SQLite.
|
|
467
|
+
*
|
|
468
|
+
* See also, {@link orIgnore}, {@link orAbort}, {@link orReplace}, and {@link orRollback}.
|
|
469
|
+
*
|
|
470
|
+
* ### Examples
|
|
471
|
+
*
|
|
472
|
+
* ```ts
|
|
473
|
+
* await db.insertInto('person')
|
|
474
|
+
* .orFail()
|
|
475
|
+
* .values({
|
|
476
|
+
* first_name: 'John',
|
|
477
|
+
* last_name: 'Doe',
|
|
478
|
+
* gender: 'female',
|
|
479
|
+
* })
|
|
480
|
+
* .execute()
|
|
481
|
+
* ```
|
|
482
|
+
*
|
|
483
|
+
* The generated SQL (SQLite):
|
|
484
|
+
*
|
|
485
|
+
* ```sql
|
|
486
|
+
* insert or fail into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
487
|
+
* ```
|
|
488
|
+
*/
|
|
489
|
+
orFail() {
|
|
490
|
+
return new InsertQueryBuilder({
|
|
491
|
+
...this.#props,
|
|
492
|
+
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
493
|
+
orAction: or_action_node_js_1.OrActionNode.create('fail'),
|
|
494
|
+
}),
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* Changes an `insert into` query to an `insert or replace into` query.
|
|
499
|
+
*
|
|
500
|
+
* This is only supported by some dialects like SQLite.
|
|
501
|
+
*
|
|
502
|
+
* You can also use {@link Kysely.replaceInto} to achieve the same result.
|
|
503
|
+
*
|
|
504
|
+
* See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orRollback}.
|
|
505
|
+
*
|
|
506
|
+
* ### Examples
|
|
507
|
+
*
|
|
508
|
+
* ```ts
|
|
509
|
+
* await db.insertInto('person')
|
|
510
|
+
* .orReplace()
|
|
511
|
+
* .values({
|
|
512
|
+
* first_name: 'John',
|
|
513
|
+
* last_name: 'Doe',
|
|
514
|
+
* gender: 'female',
|
|
515
|
+
* })
|
|
516
|
+
* .execute()
|
|
517
|
+
* ```
|
|
518
|
+
*
|
|
519
|
+
* The generated SQL (SQLite):
|
|
520
|
+
*
|
|
521
|
+
* ```sql
|
|
522
|
+
* insert or replace into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
523
|
+
* ```
|
|
524
|
+
*/
|
|
525
|
+
orReplace() {
|
|
526
|
+
return new InsertQueryBuilder({
|
|
527
|
+
...this.#props,
|
|
528
|
+
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
529
|
+
orAction: or_action_node_js_1.OrActionNode.create('replace'),
|
|
530
|
+
}),
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Changes an `insert into` query to an `insert or rollback into` query.
|
|
535
|
+
*
|
|
536
|
+
* This is only supported by some dialects like SQLite.
|
|
537
|
+
*
|
|
538
|
+
* See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orReplace}.
|
|
539
|
+
*
|
|
540
|
+
* ### Examples
|
|
541
|
+
*
|
|
542
|
+
* ```ts
|
|
543
|
+
* await db.insertInto('person')
|
|
544
|
+
* .orRollback()
|
|
545
|
+
* .values({
|
|
546
|
+
* first_name: 'John',
|
|
547
|
+
* last_name: 'Doe',
|
|
548
|
+
* gender: 'female',
|
|
549
|
+
* })
|
|
550
|
+
* .execute()
|
|
551
|
+
* ```
|
|
552
|
+
*
|
|
553
|
+
* The generated SQL (SQLite):
|
|
554
|
+
*
|
|
555
|
+
* ```sql
|
|
556
|
+
* insert or rollback into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
557
|
+
* ```
|
|
558
|
+
*/
|
|
559
|
+
orRollback() {
|
|
560
|
+
return new InsertQueryBuilder({
|
|
561
|
+
...this.#props,
|
|
562
|
+
queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
563
|
+
orAction: or_action_node_js_1.OrActionNode.create('rollback'),
|
|
374
564
|
}),
|
|
375
565
|
});
|
|
376
566
|
}
|
|
@@ -923,9 +1113,7 @@ class InsertQueryBuilder {
|
|
|
923
1113
|
return result.rows;
|
|
924
1114
|
}
|
|
925
1115
|
return [
|
|
926
|
-
new insert_result_js_1.InsertResult(result.insertId,
|
|
927
|
-
// TODO: remove numUpdatedOrDeletedRows.
|
|
928
|
-
result.numAffectedRows ?? result.numUpdatedOrDeletedRows),
|
|
1116
|
+
new insert_result_js_1.InsertResult(result.insertId, result.numAffectedRows ?? BigInt(0)),
|
|
929
1117
|
];
|
|
930
1118
|
}
|
|
931
1119
|
/**
|
|
@@ -970,4 +1158,3 @@ class InsertQueryBuilder {
|
|
|
970
1158
|
}
|
|
971
1159
|
}
|
|
972
1160
|
exports.InsertQueryBuilder = InsertQueryBuilder;
|
|
973
|
-
(0, prevent_await_js_1.preventAwait)(InsertQueryBuilder, "don't await InsertQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
|
|
@@ -5,7 +5,6 @@ const join_node_js_1 = require("../operation-node/join-node.js");
|
|
|
5
5
|
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
6
6
|
const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
|
|
7
7
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
8
|
-
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
9
8
|
class JoinBuilder {
|
|
10
9
|
#props;
|
|
11
10
|
constructor(props) {
|
|
@@ -50,4 +49,3 @@ class JoinBuilder {
|
|
|
50
49
|
}
|
|
51
50
|
}
|
|
52
51
|
exports.JoinBuilder = JoinBuilder;
|
|
53
|
-
(0, prevent_await_js_1.preventAwait)(JoinBuilder, "don't await JoinBuilder instances. They are never executed directly and are always just a part of a query.");
|
|
@@ -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
|
*
|
|
@@ -12,7 +12,6 @@ const select_parser_js_1 = require("../parser/select-parser.js");
|
|
|
12
12
|
const top_parser_js_1 = require("../parser/top-parser.js");
|
|
13
13
|
const noop_query_executor_js_1 = require("../query-executor/noop-query-executor.js");
|
|
14
14
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
15
|
-
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
16
15
|
const merge_result_js_1 = require("./merge-result.js");
|
|
17
16
|
const no_result_error_js_1 = require("./no-result-error.js");
|
|
18
17
|
const update_query_builder_js_1 = require("./update-query-builder.js");
|
|
@@ -109,6 +108,18 @@ class MergeQueryBuilder {
|
|
|
109
108
|
queryNode: merge_query_node_js_1.MergeQueryNode.cloneWithUsing(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('Using', args)),
|
|
110
109
|
});
|
|
111
110
|
}
|
|
111
|
+
returning(args) {
|
|
112
|
+
return new MergeQueryBuilder({
|
|
113
|
+
...this.#props,
|
|
114
|
+
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectArg)(args)),
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
returningAll(table) {
|
|
118
|
+
return new MergeQueryBuilder({
|
|
119
|
+
...this.#props,
|
|
120
|
+
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
|
|
121
|
+
});
|
|
122
|
+
}
|
|
112
123
|
output(args) {
|
|
113
124
|
return new MergeQueryBuilder({
|
|
114
125
|
...this.#props,
|
|
@@ -123,7 +134,6 @@ class MergeQueryBuilder {
|
|
|
123
134
|
}
|
|
124
135
|
}
|
|
125
136
|
exports.MergeQueryBuilder = MergeQueryBuilder;
|
|
126
|
-
(0, prevent_await_js_1.preventAwait)(MergeQueryBuilder, "don't await MergeQueryBuilder instances directly. To execute the query you need to call `execute` when available.");
|
|
127
137
|
class WheneableMergeQueryBuilder {
|
|
128
138
|
#props;
|
|
129
139
|
constructor(props) {
|
|
@@ -288,6 +298,18 @@ class WheneableMergeQueryBuilder {
|
|
|
288
298
|
whenNotMatchedBySourceAndRef(lhs, op, rhs) {
|
|
289
299
|
return this.#whenNotMatched([lhs, op, rhs], true, true);
|
|
290
300
|
}
|
|
301
|
+
returning(args) {
|
|
302
|
+
return new WheneableMergeQueryBuilder({
|
|
303
|
+
...this.#props,
|
|
304
|
+
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectArg)(args)),
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
returningAll(table) {
|
|
308
|
+
return new WheneableMergeQueryBuilder({
|
|
309
|
+
...this.#props,
|
|
310
|
+
queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
|
|
311
|
+
});
|
|
312
|
+
}
|
|
291
313
|
output(args) {
|
|
292
314
|
return new WheneableMergeQueryBuilder({
|
|
293
315
|
...this.#props,
|
|
@@ -398,8 +420,10 @@ class WheneableMergeQueryBuilder {
|
|
|
398
420
|
async execute() {
|
|
399
421
|
const compiledQuery = this.compile();
|
|
400
422
|
const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
|
|
401
|
-
|
|
402
|
-
|
|
423
|
+
const { adapter } = this.#props.executor;
|
|
424
|
+
const query = compiledQuery.query;
|
|
425
|
+
if ((query.returning && adapter.supportsReturning) ||
|
|
426
|
+
(query.output && adapter.supportsOutput)) {
|
|
403
427
|
return result.rows;
|
|
404
428
|
}
|
|
405
429
|
return [new merge_result_js_1.MergeResult(result.numAffectedRows)];
|
|
@@ -432,7 +456,6 @@ class WheneableMergeQueryBuilder {
|
|
|
432
456
|
}
|
|
433
457
|
}
|
|
434
458
|
exports.WheneableMergeQueryBuilder = WheneableMergeQueryBuilder;
|
|
435
|
-
(0, prevent_await_js_1.preventAwait)(WheneableMergeQueryBuilder, "don't await WheneableMergeQueryBuilder instances directly. To execute the query you need to call `execute`.");
|
|
436
459
|
class MatchedThenableMergeQueryBuilder {
|
|
437
460
|
#props;
|
|
438
461
|
constructor(props) {
|
|
@@ -556,7 +579,6 @@ class MatchedThenableMergeQueryBuilder {
|
|
|
556
579
|
}
|
|
557
580
|
}
|
|
558
581
|
exports.MatchedThenableMergeQueryBuilder = MatchedThenableMergeQueryBuilder;
|
|
559
|
-
(0, prevent_await_js_1.preventAwait)(MatchedThenableMergeQueryBuilder, "don't await MatchedThenableMergeQueryBuilder instances directly. To execute the query you need to call `execute` when available.");
|
|
560
582
|
class NotMatchedThenableMergeQueryBuilder {
|
|
561
583
|
#props;
|
|
562
584
|
constructor(props) {
|
|
@@ -606,4 +628,3 @@ class NotMatchedThenableMergeQueryBuilder {
|
|
|
606
628
|
}
|
|
607
629
|
}
|
|
608
630
|
exports.NotMatchedThenableMergeQueryBuilder = NotMatchedThenableMergeQueryBuilder;
|
|
609
|
-
(0, prevent_await_js_1.preventAwait)(NotMatchedThenableMergeQueryBuilder, "don't await NotMatchedThenableMergeQueryBuilder instances directly. To execute the query you need to call `execute` when available.");
|
|
@@ -7,7 +7,6 @@ const on_conflict_node_js_1 = require("../operation-node/on-conflict-node.js");
|
|
|
7
7
|
const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
|
|
8
8
|
const update_set_parser_js_1 = require("../parser/update-set-parser.js");
|
|
9
9
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
10
|
-
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
11
10
|
class OnConflictBuilder {
|
|
12
11
|
#props;
|
|
13
12
|
constructor(props) {
|
|
@@ -208,7 +207,6 @@ class OnConflictBuilder {
|
|
|
208
207
|
}
|
|
209
208
|
}
|
|
210
209
|
exports.OnConflictBuilder = OnConflictBuilder;
|
|
211
|
-
(0, prevent_await_js_1.preventAwait)(OnConflictBuilder, "don't await OnConflictBuilder instances.");
|
|
212
210
|
class OnConflictDoNothingBuilder {
|
|
213
211
|
#props;
|
|
214
212
|
constructor(props) {
|
|
@@ -219,7 +217,6 @@ class OnConflictDoNothingBuilder {
|
|
|
219
217
|
}
|
|
220
218
|
}
|
|
221
219
|
exports.OnConflictDoNothingBuilder = OnConflictDoNothingBuilder;
|
|
222
|
-
(0, prevent_await_js_1.preventAwait)(OnConflictDoNothingBuilder, "don't await OnConflictDoNothingBuilder instances.");
|
|
223
220
|
class OnConflictUpdateBuilder {
|
|
224
221
|
#props;
|
|
225
222
|
constructor(props) {
|
|
@@ -260,4 +257,3 @@ class OnConflictUpdateBuilder {
|
|
|
260
257
|
}
|
|
261
258
|
}
|
|
262
259
|
exports.OnConflictUpdateBuilder = OnConflictUpdateBuilder;
|
|
263
|
-
(0, prevent_await_js_1.preventAwait)(OnConflictUpdateBuilder, "don't await OnConflictUpdateBuilder instances.");
|