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
|
@@ -3,7 +3,6 @@ import { parseJoin, } from '../parser/join-parser.js';
|
|
|
3
3
|
import { parseTableExpressionOrList, } from '../parser/table-parser.js';
|
|
4
4
|
import { parseSelectArg, parseSelectAll, } from '../parser/select-parser.js';
|
|
5
5
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
6
|
-
import { preventAwait } from '../util/prevent-await.js';
|
|
7
6
|
import { freeze } from '../util/object-utils.js';
|
|
8
7
|
import { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';
|
|
9
8
|
import { DeleteResult } from './delete-result.js';
|
|
@@ -88,27 +87,21 @@ export class DeleteQueryBuilder {
|
|
|
88
87
|
});
|
|
89
88
|
}
|
|
90
89
|
innerJoin(...args) {
|
|
91
|
-
return
|
|
92
|
-
...this.#props,
|
|
93
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('InnerJoin', args)),
|
|
94
|
-
});
|
|
90
|
+
return this.#join('InnerJoin', args);
|
|
95
91
|
}
|
|
96
92
|
leftJoin(...args) {
|
|
97
|
-
return
|
|
98
|
-
...this.#props,
|
|
99
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('LeftJoin', args)),
|
|
100
|
-
});
|
|
93
|
+
return this.#join('LeftJoin', args);
|
|
101
94
|
}
|
|
102
95
|
rightJoin(...args) {
|
|
103
|
-
return
|
|
104
|
-
...this.#props,
|
|
105
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('RightJoin', args)),
|
|
106
|
-
});
|
|
96
|
+
return this.#join('RightJoin', args);
|
|
107
97
|
}
|
|
108
98
|
fullJoin(...args) {
|
|
99
|
+
return this.#join('FullJoin', args);
|
|
100
|
+
}
|
|
101
|
+
#join(joinType, args) {
|
|
109
102
|
return new DeleteQueryBuilder({
|
|
110
103
|
...this.#props,
|
|
111
|
-
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(
|
|
104
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin(joinType, args)),
|
|
112
105
|
});
|
|
113
106
|
}
|
|
114
107
|
returning(selection) {
|
|
@@ -186,70 +179,16 @@ export class DeleteQueryBuilder {
|
|
|
186
179
|
queryNode: DeleteQueryNode.cloneWithoutLimit(this.#props.queryNode),
|
|
187
180
|
});
|
|
188
181
|
}
|
|
189
|
-
|
|
190
|
-
* Clears the `order by` clause from the query.
|
|
191
|
-
*
|
|
192
|
-
* ### Examples
|
|
193
|
-
*
|
|
194
|
-
* ```ts
|
|
195
|
-
* await db.deleteFrom('pet')
|
|
196
|
-
* .returningAll()
|
|
197
|
-
* .where('name', '=', 'Max')
|
|
198
|
-
* .orderBy('id')
|
|
199
|
-
* .clearOrderBy()
|
|
200
|
-
* .execute()
|
|
201
|
-
* ```
|
|
202
|
-
*
|
|
203
|
-
* The generated SQL(PostgreSQL):
|
|
204
|
-
*
|
|
205
|
-
* ```sql
|
|
206
|
-
* delete from "pet" where "name" = "Max" returning *
|
|
207
|
-
* ```
|
|
208
|
-
*/
|
|
209
|
-
clearOrderBy() {
|
|
182
|
+
orderBy(...args) {
|
|
210
183
|
return new DeleteQueryBuilder({
|
|
211
184
|
...this.#props,
|
|
212
|
-
queryNode:
|
|
185
|
+
queryNode: QueryNode.cloneWithOrderByItems(this.#props.queryNode, parseOrderBy(args)),
|
|
213
186
|
});
|
|
214
187
|
}
|
|
215
|
-
|
|
216
|
-
* Adds an `order by` clause to the query.
|
|
217
|
-
*
|
|
218
|
-
* `orderBy` calls are additive. To order by multiple columns, call `orderBy`
|
|
219
|
-
* multiple times.
|
|
220
|
-
*
|
|
221
|
-
* The first argument is the expression to order by and the second is the
|
|
222
|
-
* order (`asc` or `desc`).
|
|
223
|
-
*
|
|
224
|
-
* An `order by` clause in a delete query is only supported by some dialects
|
|
225
|
-
* like MySQL.
|
|
226
|
-
*
|
|
227
|
-
* See {@link SelectQueryBuilder.orderBy} for more examples.
|
|
228
|
-
*
|
|
229
|
-
* ### Examples
|
|
230
|
-
*
|
|
231
|
-
* Delete 5 oldest items in a table:
|
|
232
|
-
*
|
|
233
|
-
* ```ts
|
|
234
|
-
* await db
|
|
235
|
-
* .deleteFrom('pet')
|
|
236
|
-
* .orderBy('created_at')
|
|
237
|
-
* .limit(5)
|
|
238
|
-
* .execute()
|
|
239
|
-
* ```
|
|
240
|
-
*
|
|
241
|
-
* The generated SQL (MySQL):
|
|
242
|
-
*
|
|
243
|
-
* ```sql
|
|
244
|
-
* delete from `pet`
|
|
245
|
-
* order by `created_at`
|
|
246
|
-
* limit ?
|
|
247
|
-
* ```
|
|
248
|
-
*/
|
|
249
|
-
orderBy(orderBy, direction) {
|
|
188
|
+
clearOrderBy() {
|
|
250
189
|
return new DeleteQueryBuilder({
|
|
251
190
|
...this.#props,
|
|
252
|
-
queryNode:
|
|
191
|
+
queryNode: QueryNode.cloneWithoutOrderBy(this.#props.queryNode),
|
|
253
192
|
});
|
|
254
193
|
}
|
|
255
194
|
/**
|
|
@@ -517,11 +456,7 @@ export class DeleteQueryBuilder {
|
|
|
517
456
|
(query.output && adapter.supportsOutput)) {
|
|
518
457
|
return result.rows;
|
|
519
458
|
}
|
|
520
|
-
return [
|
|
521
|
-
new DeleteResult(
|
|
522
|
-
// TODO: remove numUpdatedOrDeletedRows.
|
|
523
|
-
result.numAffectedRows ?? result.numUpdatedOrDeletedRows ?? BigInt(0)),
|
|
524
|
-
];
|
|
459
|
+
return [new DeleteResult(result.numAffectedRows ?? BigInt(0))];
|
|
525
460
|
}
|
|
526
461
|
/**
|
|
527
462
|
* Executes the query and returns the first result or undefined if
|
|
@@ -564,4 +499,3 @@ export class DeleteQueryBuilder {
|
|
|
564
499
|
return await builder.execute();
|
|
565
500
|
}
|
|
566
501
|
}
|
|
567
|
-
preventAwait(DeleteQueryBuilder, "don't await DeleteQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
|
|
@@ -393,7 +393,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
393
393
|
* .execute()
|
|
394
394
|
* ```
|
|
395
395
|
*/
|
|
396
|
-
max<O extends number | string | bigint | null = never, RE extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(expr: RE): AggregateFunctionBuilder<DB, TB, IsNever<O> extends true ? ExtractTypeFromReferenceExpression<DB, TB, RE, number | string | bigint> : O>;
|
|
396
|
+
max<O extends number | string | Date | bigint | null = never, RE extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(expr: RE): AggregateFunctionBuilder<DB, TB, IsNever<O> extends true ? ExtractTypeFromReferenceExpression<DB, TB, RE, number | string | Date | bigint> : O>;
|
|
397
397
|
/**
|
|
398
398
|
* Calls the `min` function for the column or expression given as the argument.
|
|
399
399
|
*
|
|
@@ -432,7 +432,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
432
432
|
* .execute()
|
|
433
433
|
* ```
|
|
434
434
|
*/
|
|
435
|
-
min<O extends number | string | bigint | null = never, RE extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(expr: RE): AggregateFunctionBuilder<DB, TB, IsNever<O> extends true ? ExtractTypeFromReferenceExpression<DB, TB, RE, number | string | bigint> : O>;
|
|
435
|
+
min<O extends number | string | Date | bigint | null = never, RE extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(expr: RE): AggregateFunctionBuilder<DB, TB, IsNever<O> extends true ? ExtractTypeFromReferenceExpression<DB, TB, RE, number | string | Date | bigint> : O>;
|
|
436
436
|
/**
|
|
437
437
|
* Calls the `sum` function for the column or expression given as the argument.
|
|
438
438
|
*
|
|
@@ -518,9 +518,13 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
518
518
|
any<T>(subquery: SelectQueryBuilderExpression<Record<string, T>>): ExpressionWrapper<DB, TB, T>;
|
|
519
519
|
any<T>(expr: Expression<ReadonlyArray<T>>): ExpressionWrapper<DB, TB, T>;
|
|
520
520
|
/**
|
|
521
|
-
* Creates a json_agg function call.
|
|
521
|
+
* Creates a `json_agg` function call.
|
|
522
522
|
*
|
|
523
|
-
* This
|
|
523
|
+
* This is only supported by some dialects like PostgreSQL.
|
|
524
|
+
*
|
|
525
|
+
* ### Examples
|
|
526
|
+
*
|
|
527
|
+
* You can use it on table expressions:
|
|
524
528
|
*
|
|
525
529
|
* ```ts
|
|
526
530
|
* await db.selectFrom('person')
|
|
@@ -538,8 +542,31 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
538
542
|
* inner join "pet" on "pet"."owner_id" = "person"."id"
|
|
539
543
|
* group by "person"."first_name"
|
|
540
544
|
* ```
|
|
545
|
+
*
|
|
546
|
+
* or on columns:
|
|
547
|
+
*
|
|
548
|
+
* ```ts
|
|
549
|
+
* await db.selectFrom('person')
|
|
550
|
+
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
551
|
+
* .select((eb) => [
|
|
552
|
+
* 'first_name',
|
|
553
|
+
* eb.fn.jsonAgg('pet.name').as('pet_names'),
|
|
554
|
+
* ])
|
|
555
|
+
* .groupBy('person.first_name')
|
|
556
|
+
* .execute()
|
|
557
|
+
* ```
|
|
558
|
+
*
|
|
559
|
+
* The generated SQL (PostgreSQL):
|
|
560
|
+
*
|
|
561
|
+
* ```sql
|
|
562
|
+
* select "first_name", json_agg("pet"."name") AS "pet_names"
|
|
563
|
+
* from "person"
|
|
564
|
+
* inner join "pet" ON "pet"."owner_id" = "person"."id"
|
|
565
|
+
* group by "person"."first_name"
|
|
566
|
+
* ```
|
|
541
567
|
*/
|
|
542
568
|
jsonAgg<T extends (TB & string) | Expression<unknown>>(table: T): AggregateFunctionBuilder<DB, TB, T extends TB ? Selectable<DB[T]>[] : T extends Expression<infer O> ? O[] : never>;
|
|
569
|
+
jsonAgg<RE extends StringReference<DB, TB>>(column: RE): AggregateFunctionBuilder<DB, TB, ExtractTypeFromStringReference<DB, TB, RE>[] | null>;
|
|
543
570
|
/**
|
|
544
571
|
* Creates a to_json function call.
|
|
545
572
|
*
|
|
@@ -307,15 +307,18 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
307
307
|
/**
|
|
308
308
|
* Changes an `insert into` query to an `insert ignore into` query.
|
|
309
309
|
*
|
|
310
|
+
* This is only supported by some dialects like MySQL.
|
|
311
|
+
*
|
|
312
|
+
* To avoid a footgun, when invoked with the SQLite dialect, this method will
|
|
313
|
+
* be handled like {@link orIgnore}. See also, {@link orAbort}, {@link orFail},
|
|
314
|
+
* {@link orReplace}, and {@link orRollback}.
|
|
315
|
+
*
|
|
310
316
|
* If you use the ignore modifier, ignorable errors that occur while executing the
|
|
311
317
|
* insert statement are ignored. For example, without ignore, a row that duplicates
|
|
312
318
|
* an existing unique index or primary key value in the table causes a duplicate-key
|
|
313
319
|
* error and the statement is aborted. With ignore, the row is discarded and no error
|
|
314
320
|
* occurs.
|
|
315
321
|
*
|
|
316
|
-
* This is only supported on some dialects like MySQL. On most dialects you should
|
|
317
|
-
* use the {@link onConflict} method.
|
|
318
|
-
*
|
|
319
322
|
* ### Examples
|
|
320
323
|
*
|
|
321
324
|
* ```ts
|
|
@@ -332,10 +335,162 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
332
335
|
* The generated SQL (MySQL):
|
|
333
336
|
*
|
|
334
337
|
* ```sql
|
|
335
|
-
* insert ignore into `person` (
|
|
338
|
+
* insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)
|
|
339
|
+
* ```
|
|
340
|
+
*
|
|
341
|
+
* The generated SQL (SQLite):
|
|
342
|
+
*
|
|
343
|
+
* ```sql
|
|
344
|
+
* insert or ignore into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
336
345
|
* ```
|
|
337
346
|
*/
|
|
338
347
|
ignore(): InsertQueryBuilder<DB, TB, O>;
|
|
348
|
+
/**
|
|
349
|
+
* Changes an `insert into` query to an `insert or ignore into` query.
|
|
350
|
+
*
|
|
351
|
+
* This is only supported by some dialects like SQLite.
|
|
352
|
+
*
|
|
353
|
+
* To avoid a footgun, when invoked with the MySQL dialect, this method will
|
|
354
|
+
* be handled like {@link ignore}.
|
|
355
|
+
*
|
|
356
|
+
* See also, {@link orAbort}, {@link orFail}, {@link orReplace}, and {@link orRollback}.
|
|
357
|
+
*
|
|
358
|
+
* ### Examples
|
|
359
|
+
*
|
|
360
|
+
* ```ts
|
|
361
|
+
* await db.insertInto('person')
|
|
362
|
+
* .orIgnore()
|
|
363
|
+
* .values({
|
|
364
|
+
* first_name: 'John',
|
|
365
|
+
* last_name: 'Doe',
|
|
366
|
+
* gender: 'female',
|
|
367
|
+
* })
|
|
368
|
+
* .execute()
|
|
369
|
+
* ```
|
|
370
|
+
*
|
|
371
|
+
* The generated SQL (SQLite):
|
|
372
|
+
*
|
|
373
|
+
* ```sql
|
|
374
|
+
* insert or ignore into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
375
|
+
* ```
|
|
376
|
+
*
|
|
377
|
+
* The generated SQL (MySQL):
|
|
378
|
+
*
|
|
379
|
+
* ```sql
|
|
380
|
+
* insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)
|
|
381
|
+
* ```
|
|
382
|
+
*/
|
|
383
|
+
orIgnore(): InsertQueryBuilder<DB, TB, O>;
|
|
384
|
+
/**
|
|
385
|
+
* Changes an `insert into` query to an `insert or abort into` query.
|
|
386
|
+
*
|
|
387
|
+
* This is only supported by some dialects like SQLite.
|
|
388
|
+
*
|
|
389
|
+
* See also, {@link orIgnore}, {@link orFail}, {@link orReplace}, and {@link orRollback}.
|
|
390
|
+
*
|
|
391
|
+
* ### Examples
|
|
392
|
+
*
|
|
393
|
+
* ```ts
|
|
394
|
+
* await db.insertInto('person')
|
|
395
|
+
* .orAbort()
|
|
396
|
+
* .values({
|
|
397
|
+
* first_name: 'John',
|
|
398
|
+
* last_name: 'Doe',
|
|
399
|
+
* gender: 'female',
|
|
400
|
+
* })
|
|
401
|
+
* .execute()
|
|
402
|
+
* ```
|
|
403
|
+
*
|
|
404
|
+
* The generated SQL (SQLite):
|
|
405
|
+
*
|
|
406
|
+
* ```sql
|
|
407
|
+
* insert or abort into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
408
|
+
* ```
|
|
409
|
+
*/
|
|
410
|
+
orAbort(): InsertQueryBuilder<DB, TB, O>;
|
|
411
|
+
/**
|
|
412
|
+
* Changes an `insert into` query to an `insert or fail into` query.
|
|
413
|
+
*
|
|
414
|
+
* This is only supported by some dialects like SQLite.
|
|
415
|
+
*
|
|
416
|
+
* See also, {@link orIgnore}, {@link orAbort}, {@link orReplace}, and {@link orRollback}.
|
|
417
|
+
*
|
|
418
|
+
* ### Examples
|
|
419
|
+
*
|
|
420
|
+
* ```ts
|
|
421
|
+
* await db.insertInto('person')
|
|
422
|
+
* .orFail()
|
|
423
|
+
* .values({
|
|
424
|
+
* first_name: 'John',
|
|
425
|
+
* last_name: 'Doe',
|
|
426
|
+
* gender: 'female',
|
|
427
|
+
* })
|
|
428
|
+
* .execute()
|
|
429
|
+
* ```
|
|
430
|
+
*
|
|
431
|
+
* The generated SQL (SQLite):
|
|
432
|
+
*
|
|
433
|
+
* ```sql
|
|
434
|
+
* insert or fail into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
435
|
+
* ```
|
|
436
|
+
*/
|
|
437
|
+
orFail(): InsertQueryBuilder<DB, TB, O>;
|
|
438
|
+
/**
|
|
439
|
+
* Changes an `insert into` query to an `insert or replace into` query.
|
|
440
|
+
*
|
|
441
|
+
* This is only supported by some dialects like SQLite.
|
|
442
|
+
*
|
|
443
|
+
* You can also use {@link Kysely.replaceInto} to achieve the same result.
|
|
444
|
+
*
|
|
445
|
+
* See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orRollback}.
|
|
446
|
+
*
|
|
447
|
+
* ### Examples
|
|
448
|
+
*
|
|
449
|
+
* ```ts
|
|
450
|
+
* await db.insertInto('person')
|
|
451
|
+
* .orReplace()
|
|
452
|
+
* .values({
|
|
453
|
+
* first_name: 'John',
|
|
454
|
+
* last_name: 'Doe',
|
|
455
|
+
* gender: 'female',
|
|
456
|
+
* })
|
|
457
|
+
* .execute()
|
|
458
|
+
* ```
|
|
459
|
+
*
|
|
460
|
+
* The generated SQL (SQLite):
|
|
461
|
+
*
|
|
462
|
+
* ```sql
|
|
463
|
+
* insert or replace into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
464
|
+
* ```
|
|
465
|
+
*/
|
|
466
|
+
orReplace(): InsertQueryBuilder<DB, TB, O>;
|
|
467
|
+
/**
|
|
468
|
+
* Changes an `insert into` query to an `insert or rollback into` query.
|
|
469
|
+
*
|
|
470
|
+
* This is only supported by some dialects like SQLite.
|
|
471
|
+
*
|
|
472
|
+
* See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orReplace}.
|
|
473
|
+
*
|
|
474
|
+
* ### Examples
|
|
475
|
+
*
|
|
476
|
+
* ```ts
|
|
477
|
+
* await db.insertInto('person')
|
|
478
|
+
* .orRollback()
|
|
479
|
+
* .values({
|
|
480
|
+
* first_name: 'John',
|
|
481
|
+
* last_name: 'Doe',
|
|
482
|
+
* gender: 'female',
|
|
483
|
+
* })
|
|
484
|
+
* .execute()
|
|
485
|
+
* ```
|
|
486
|
+
*
|
|
487
|
+
* The generated SQL (SQLite):
|
|
488
|
+
*
|
|
489
|
+
* ```sql
|
|
490
|
+
* insert or rollback into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
491
|
+
* ```
|
|
492
|
+
*/
|
|
493
|
+
orRollback(): InsertQueryBuilder<DB, TB, O>;
|
|
339
494
|
/**
|
|
340
495
|
* Changes an `insert into` query to an `insert top into` query.
|
|
341
496
|
*
|
|
@@ -595,7 +750,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
595
750
|
* Allows you to return data from modified rows.
|
|
596
751
|
*
|
|
597
752
|
* On supported databases like PostgreSQL, this method can be chained to
|
|
598
|
-
* `insert`, `update` and `
|
|
753
|
+
* `insert`, `update`, `delete` and `merge` queries to return data.
|
|
599
754
|
*
|
|
600
755
|
* Note that on SQLite you need to give aliases for the expressions to avoid
|
|
601
756
|
* [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
|
|
@@ -654,7 +809,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
654
809
|
returning<CB extends SelectCallback<DB, TB>>(callback: CB): InsertQueryBuilder<DB, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
655
810
|
returning<SE extends SelectExpression<DB, TB>>(selection: SE): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
656
811
|
/**
|
|
657
|
-
* Adds a `returning *` to an insert/update/delete query on databases
|
|
812
|
+
* Adds a `returning *` to an insert/update/delete/merge query on databases
|
|
658
813
|
* that support `returning` such as PostgreSQL.
|
|
659
814
|
*
|
|
660
815
|
* Also see the {@link returning} method.
|
|
@@ -4,7 +4,6 @@ import { parseInsertExpression, } from '../parser/insert-values-parser.js';
|
|
|
4
4
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|
5
5
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
6
6
|
import { parseUpdateObjectExpression, } from '../parser/update-set-parser.js';
|
|
7
|
-
import { preventAwait } from '../util/prevent-await.js';
|
|
8
7
|
import { freeze } from '../util/object-utils.js';
|
|
9
8
|
import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
|
|
10
9
|
import { InsertResult } from './insert-result.js';
|
|
@@ -14,6 +13,7 @@ import { ColumnNode } from '../operation-node/column-node.js';
|
|
|
14
13
|
import { OnConflictBuilder, } from './on-conflict-builder.js';
|
|
15
14
|
import { OnConflictNode } from '../operation-node/on-conflict-node.js';
|
|
16
15
|
import { parseTop } from '../parser/top-parser.js';
|
|
16
|
+
import { OrActionNode } from '../operation-node/or-action-node.js';
|
|
17
17
|
export class InsertQueryBuilder {
|
|
18
18
|
#props;
|
|
19
19
|
constructor(props) {
|
|
@@ -336,15 +336,18 @@ export class InsertQueryBuilder {
|
|
|
336
336
|
/**
|
|
337
337
|
* Changes an `insert into` query to an `insert ignore into` query.
|
|
338
338
|
*
|
|
339
|
+
* This is only supported by some dialects like MySQL.
|
|
340
|
+
*
|
|
341
|
+
* To avoid a footgun, when invoked with the SQLite dialect, this method will
|
|
342
|
+
* be handled like {@link orIgnore}. See also, {@link orAbort}, {@link orFail},
|
|
343
|
+
* {@link orReplace}, and {@link orRollback}.
|
|
344
|
+
*
|
|
339
345
|
* If you use the ignore modifier, ignorable errors that occur while executing the
|
|
340
346
|
* insert statement are ignored. For example, without ignore, a row that duplicates
|
|
341
347
|
* an existing unique index or primary key value in the table causes a duplicate-key
|
|
342
348
|
* error and the statement is aborted. With ignore, the row is discarded and no error
|
|
343
349
|
* occurs.
|
|
344
350
|
*
|
|
345
|
-
* This is only supported on some dialects like MySQL. On most dialects you should
|
|
346
|
-
* use the {@link onConflict} method.
|
|
347
|
-
*
|
|
348
351
|
* ### Examples
|
|
349
352
|
*
|
|
350
353
|
* ```ts
|
|
@@ -361,14 +364,201 @@ export class InsertQueryBuilder {
|
|
|
361
364
|
* The generated SQL (MySQL):
|
|
362
365
|
*
|
|
363
366
|
* ```sql
|
|
364
|
-
* insert ignore into `person` (
|
|
367
|
+
* insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)
|
|
368
|
+
* ```
|
|
369
|
+
*
|
|
370
|
+
* The generated SQL (SQLite):
|
|
371
|
+
*
|
|
372
|
+
* ```sql
|
|
373
|
+
* insert or ignore into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
365
374
|
* ```
|
|
366
375
|
*/
|
|
367
376
|
ignore() {
|
|
368
377
|
return new InsertQueryBuilder({
|
|
369
378
|
...this.#props,
|
|
370
379
|
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
371
|
-
|
|
380
|
+
orAction: OrActionNode.create('ignore'),
|
|
381
|
+
}),
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
/**
|
|
385
|
+
* Changes an `insert into` query to an `insert or ignore into` query.
|
|
386
|
+
*
|
|
387
|
+
* This is only supported by some dialects like SQLite.
|
|
388
|
+
*
|
|
389
|
+
* To avoid a footgun, when invoked with the MySQL dialect, this method will
|
|
390
|
+
* be handled like {@link ignore}.
|
|
391
|
+
*
|
|
392
|
+
* See also, {@link orAbort}, {@link orFail}, {@link orReplace}, and {@link orRollback}.
|
|
393
|
+
*
|
|
394
|
+
* ### Examples
|
|
395
|
+
*
|
|
396
|
+
* ```ts
|
|
397
|
+
* await db.insertInto('person')
|
|
398
|
+
* .orIgnore()
|
|
399
|
+
* .values({
|
|
400
|
+
* first_name: 'John',
|
|
401
|
+
* last_name: 'Doe',
|
|
402
|
+
* gender: 'female',
|
|
403
|
+
* })
|
|
404
|
+
* .execute()
|
|
405
|
+
* ```
|
|
406
|
+
*
|
|
407
|
+
* The generated SQL (SQLite):
|
|
408
|
+
*
|
|
409
|
+
* ```sql
|
|
410
|
+
* insert or ignore into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
411
|
+
* ```
|
|
412
|
+
*
|
|
413
|
+
* The generated SQL (MySQL):
|
|
414
|
+
*
|
|
415
|
+
* ```sql
|
|
416
|
+
* insert ignore into `person` (`first_name`, `last_name`, `gender`) values (?, ?, ?)
|
|
417
|
+
* ```
|
|
418
|
+
*/
|
|
419
|
+
orIgnore() {
|
|
420
|
+
return new InsertQueryBuilder({
|
|
421
|
+
...this.#props,
|
|
422
|
+
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
423
|
+
orAction: OrActionNode.create('ignore'),
|
|
424
|
+
}),
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Changes an `insert into` query to an `insert or abort into` query.
|
|
429
|
+
*
|
|
430
|
+
* This is only supported by some dialects like SQLite.
|
|
431
|
+
*
|
|
432
|
+
* See also, {@link orIgnore}, {@link orFail}, {@link orReplace}, and {@link orRollback}.
|
|
433
|
+
*
|
|
434
|
+
* ### Examples
|
|
435
|
+
*
|
|
436
|
+
* ```ts
|
|
437
|
+
* await db.insertInto('person')
|
|
438
|
+
* .orAbort()
|
|
439
|
+
* .values({
|
|
440
|
+
* first_name: 'John',
|
|
441
|
+
* last_name: 'Doe',
|
|
442
|
+
* gender: 'female',
|
|
443
|
+
* })
|
|
444
|
+
* .execute()
|
|
445
|
+
* ```
|
|
446
|
+
*
|
|
447
|
+
* The generated SQL (SQLite):
|
|
448
|
+
*
|
|
449
|
+
* ```sql
|
|
450
|
+
* insert or abort into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
451
|
+
* ```
|
|
452
|
+
*/
|
|
453
|
+
orAbort() {
|
|
454
|
+
return new InsertQueryBuilder({
|
|
455
|
+
...this.#props,
|
|
456
|
+
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
457
|
+
orAction: OrActionNode.create('abort'),
|
|
458
|
+
}),
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
/**
|
|
462
|
+
* Changes an `insert into` query to an `insert or fail into` query.
|
|
463
|
+
*
|
|
464
|
+
* This is only supported by some dialects like SQLite.
|
|
465
|
+
*
|
|
466
|
+
* See also, {@link orIgnore}, {@link orAbort}, {@link orReplace}, and {@link orRollback}.
|
|
467
|
+
*
|
|
468
|
+
* ### Examples
|
|
469
|
+
*
|
|
470
|
+
* ```ts
|
|
471
|
+
* await db.insertInto('person')
|
|
472
|
+
* .orFail()
|
|
473
|
+
* .values({
|
|
474
|
+
* first_name: 'John',
|
|
475
|
+
* last_name: 'Doe',
|
|
476
|
+
* gender: 'female',
|
|
477
|
+
* })
|
|
478
|
+
* .execute()
|
|
479
|
+
* ```
|
|
480
|
+
*
|
|
481
|
+
* The generated SQL (SQLite):
|
|
482
|
+
*
|
|
483
|
+
* ```sql
|
|
484
|
+
* insert or fail into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
485
|
+
* ```
|
|
486
|
+
*/
|
|
487
|
+
orFail() {
|
|
488
|
+
return new InsertQueryBuilder({
|
|
489
|
+
...this.#props,
|
|
490
|
+
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
491
|
+
orAction: OrActionNode.create('fail'),
|
|
492
|
+
}),
|
|
493
|
+
});
|
|
494
|
+
}
|
|
495
|
+
/**
|
|
496
|
+
* Changes an `insert into` query to an `insert or replace into` query.
|
|
497
|
+
*
|
|
498
|
+
* This is only supported by some dialects like SQLite.
|
|
499
|
+
*
|
|
500
|
+
* You can also use {@link Kysely.replaceInto} to achieve the same result.
|
|
501
|
+
*
|
|
502
|
+
* See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orRollback}.
|
|
503
|
+
*
|
|
504
|
+
* ### Examples
|
|
505
|
+
*
|
|
506
|
+
* ```ts
|
|
507
|
+
* await db.insertInto('person')
|
|
508
|
+
* .orReplace()
|
|
509
|
+
* .values({
|
|
510
|
+
* first_name: 'John',
|
|
511
|
+
* last_name: 'Doe',
|
|
512
|
+
* gender: 'female',
|
|
513
|
+
* })
|
|
514
|
+
* .execute()
|
|
515
|
+
* ```
|
|
516
|
+
*
|
|
517
|
+
* The generated SQL (SQLite):
|
|
518
|
+
*
|
|
519
|
+
* ```sql
|
|
520
|
+
* insert or replace into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
521
|
+
* ```
|
|
522
|
+
*/
|
|
523
|
+
orReplace() {
|
|
524
|
+
return new InsertQueryBuilder({
|
|
525
|
+
...this.#props,
|
|
526
|
+
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
527
|
+
orAction: OrActionNode.create('replace'),
|
|
528
|
+
}),
|
|
529
|
+
});
|
|
530
|
+
}
|
|
531
|
+
/**
|
|
532
|
+
* Changes an `insert into` query to an `insert or rollback into` query.
|
|
533
|
+
*
|
|
534
|
+
* This is only supported by some dialects like SQLite.
|
|
535
|
+
*
|
|
536
|
+
* See also, {@link orIgnore}, {@link orAbort}, {@link orFail}, and {@link orReplace}.
|
|
537
|
+
*
|
|
538
|
+
* ### Examples
|
|
539
|
+
*
|
|
540
|
+
* ```ts
|
|
541
|
+
* await db.insertInto('person')
|
|
542
|
+
* .orRollback()
|
|
543
|
+
* .values({
|
|
544
|
+
* first_name: 'John',
|
|
545
|
+
* last_name: 'Doe',
|
|
546
|
+
* gender: 'female',
|
|
547
|
+
* })
|
|
548
|
+
* .execute()
|
|
549
|
+
* ```
|
|
550
|
+
*
|
|
551
|
+
* The generated SQL (SQLite):
|
|
552
|
+
*
|
|
553
|
+
* ```sql
|
|
554
|
+
* insert or rollback into "person" ("first_name", "last_name", "gender") values (?, ?, ?)
|
|
555
|
+
* ```
|
|
556
|
+
*/
|
|
557
|
+
orRollback() {
|
|
558
|
+
return new InsertQueryBuilder({
|
|
559
|
+
...this.#props,
|
|
560
|
+
queryNode: InsertQueryNode.cloneWith(this.#props.queryNode, {
|
|
561
|
+
orAction: OrActionNode.create('rollback'),
|
|
372
562
|
}),
|
|
373
563
|
});
|
|
374
564
|
}
|
|
@@ -921,9 +1111,7 @@ export class InsertQueryBuilder {
|
|
|
921
1111
|
return result.rows;
|
|
922
1112
|
}
|
|
923
1113
|
return [
|
|
924
|
-
new InsertResult(result.insertId,
|
|
925
|
-
// TODO: remove numUpdatedOrDeletedRows.
|
|
926
|
-
result.numAffectedRows ?? result.numUpdatedOrDeletedRows),
|
|
1114
|
+
new InsertResult(result.insertId, result.numAffectedRows ?? BigInt(0)),
|
|
927
1115
|
];
|
|
928
1116
|
}
|
|
929
1117
|
/**
|
|
@@ -967,4 +1155,3 @@ export class InsertQueryBuilder {
|
|
|
967
1155
|
return await builder.execute();
|
|
968
1156
|
}
|
|
969
1157
|
}
|
|
970
|
-
preventAwait(InsertQueryBuilder, "don't await InsertQueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
|
|
@@ -3,7 +3,6 @@ import { JoinNode } from '../operation-node/join-node.js';
|
|
|
3
3
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
4
4
|
import { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';
|
|
5
5
|
import { freeze } from '../util/object-utils.js';
|
|
6
|
-
import { preventAwait } from '../util/prevent-await.js';
|
|
7
6
|
export class JoinBuilder {
|
|
8
7
|
#props;
|
|
9
8
|
constructor(props) {
|
|
@@ -47,4 +46,3 @@ export class JoinBuilder {
|
|
|
47
46
|
return this.#props.joinNode;
|
|
48
47
|
}
|
|
49
48
|
}
|
|
50
|
-
preventAwait(JoinBuilder, "don't await JoinBuilder instances. They are never executed directly and are always just a part of a query.");
|