kysely 0.27.5 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CODE_OF_CONDUCT.md +183 -0
- package/FUNDING.md +25 -0
- package/README.md +182 -3
- package/deno.check.d.ts +7 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
- package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +66 -44
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/cjs/driver/database-connection.d.ts +0 -4
- package/dist/cjs/driver/driver.d.ts +17 -0
- package/dist/cjs/driver/driver.js +13 -1
- package/dist/cjs/driver/dummy-driver.d.ts +3 -0
- package/dist/cjs/driver/dummy-driver.js +9 -0
- package/dist/cjs/driver/runtime-driver.d.ts +4 -0
- package/dist/cjs/driver/runtime-driver.js +43 -3
- package/dist/cjs/expression/expression-builder.d.ts +9 -10
- package/dist/cjs/helpers/postgres.d.ts +48 -0
- package/dist/cjs/helpers/postgres.js +50 -0
- package/dist/cjs/index.d.ts +13 -2
- package/dist/cjs/index.js +13 -2
- package/dist/cjs/kysely.d.ts +339 -2
- package/dist/cjs/kysely.js +465 -11
- package/dist/cjs/migration/migrator.d.ts +16 -1
- package/dist/cjs/migration/migrator.js +14 -4
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
- package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
- package/dist/cjs/operation-node/collate-node.d.ts +13 -0
- package/dist/cjs/operation-node/collate-node.js +19 -0
- package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/delete-query-node.js +11 -15
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
- package/dist/cjs/operation-node/or-action-node.js +18 -0
- package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/cjs/operation-node/order-by-item-node.js +6 -0
- package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/cjs/operation-node/query-node.d.ts +7 -0
- package/dist/cjs/operation-node/query-node.js +15 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
- package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/select-query-node.js +11 -15
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/update-query-node.js +5 -2
- package/dist/cjs/parser/collate-parser.d.ts +1 -0
- package/dist/cjs/parser/collate-parser.js +2 -0
- package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
- package/dist/cjs/parser/delete-from-parser.js +2 -0
- package/dist/cjs/parser/insert-values-parser.js +3 -1
- package/dist/cjs/parser/join-parser.d.ts +1 -1
- package/dist/cjs/parser/join-parser.js +7 -1
- package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
- package/dist/cjs/parser/merge-into-parser.js +2 -0
- package/dist/cjs/parser/order-by-parser.d.ts +18 -5
- package/dist/cjs/parser/order-by-parser.js +24 -14
- package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
- package/dist/cjs/parser/savepoint-parser.js +11 -0
- package/dist/cjs/parser/select-from-parser.d.ts +4 -0
- package/dist/cjs/parser/select-from-parser.js +2 -0
- package/dist/cjs/parser/table-parser.d.ts +2 -5
- package/dist/cjs/parser/update-parser.d.ts +5 -0
- package/dist/cjs/parser/update-parser.js +2 -0
- package/dist/cjs/parser/update-set-parser.d.ts +7 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/cjs/plugin/camel-case/camel-case.js +4 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +8 -3
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +45 -14
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
- package/dist/cjs/query-builder/cte-builder.js +0 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/cjs/query-builder/delete-query-builder.js +12 -78
- package/dist/cjs/query-builder/function-module.d.ts +31 -4
- package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/cjs/query-builder/insert-query-builder.js +197 -10
- package/dist/cjs/query-builder/join-builder.js +0 -2
- package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/cjs/query-builder/merge-query-builder.js +28 -7
- package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
- package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
- package/dist/cjs/query-builder/order-by-interface.js +2 -0
- package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
- package/dist/cjs/query-builder/over-builder.d.ts +43 -6
- package/dist/cjs/query-builder/over-builder.js +8 -25
- package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
- package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
- package/dist/cjs/query-builder/select-query-builder.js +26 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
- package/dist/cjs/query-builder/update-query-builder.js +17 -15
- package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
- package/dist/cjs/query-compiler/compiled-query.js +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
- package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
- package/dist/cjs/query-creator.d.ts +23 -25
- package/dist/cjs/query-creator.js +280 -8
- package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
- package/dist/cjs/query-executor/default-query-executor.js +2 -2
- package/dist/cjs/query-executor/query-executor-base.js +7 -25
- package/dist/cjs/raw-builder/raw-builder.js +0 -3
- package/dist/cjs/raw-builder/sql.d.ts +4 -4
- package/dist/cjs/raw-builder/sql.js +1 -1
- package/dist/cjs/schema/alter-column-builder.js +0 -3
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
- package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
- package/dist/cjs/schema/alter-table-builder.js +21 -10
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/cjs/schema/alter-table-executor.js +0 -2
- package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
- package/dist/cjs/schema/check-constraint-builder.js +20 -0
- package/dist/cjs/schema/column-definition-builder.js +0 -2
- package/dist/cjs/schema/create-index-builder.js +1 -3
- package/dist/cjs/schema/create-schema-builder.js +0 -2
- package/dist/cjs/schema/create-table-builder.d.ts +5 -4
- package/dist/cjs/schema/create-table-builder.js +9 -7
- package/dist/cjs/schema/create-type-builder.d.ts +1 -1
- package/dist/cjs/schema/create-type-builder.js +0 -2
- package/dist/cjs/schema/create-view-builder.js +0 -2
- package/dist/cjs/schema/drop-index-builder.js +0 -2
- package/dist/cjs/schema/drop-schema-builder.js +0 -2
- package/dist/cjs/schema/drop-table-builder.js +0 -2
- package/dist/cjs/schema/drop-type-builder.js +0 -2
- package/dist/cjs/schema/drop-view-builder.js +0 -2
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
- package/dist/cjs/schema/schema.d.ts +14 -0
- package/dist/cjs/schema/schema.js +21 -0
- package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/cjs/schema/unique-constraint-builder.js +26 -5
- package/dist/cjs/util/infer-result.d.ts +1 -1
- package/dist/cjs/util/log.d.ts +1 -0
- package/dist/cjs/util/log.js +3 -2
- package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
- package/dist/cjs/util/provide-controlled-connection.js +24 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
- package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +66 -44
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/esm/driver/database-connection.d.ts +0 -4
- package/dist/esm/driver/driver.d.ts +17 -0
- package/dist/esm/driver/driver.js +11 -0
- package/dist/esm/driver/dummy-driver.d.ts +3 -0
- package/dist/esm/driver/dummy-driver.js +9 -0
- package/dist/esm/driver/runtime-driver.d.ts +4 -0
- package/dist/esm/driver/runtime-driver.js +43 -3
- package/dist/esm/expression/expression-builder.d.ts +9 -10
- package/dist/esm/helpers/postgres.d.ts +48 -0
- package/dist/esm/helpers/postgres.js +49 -0
- package/dist/esm/index.d.ts +13 -2
- package/dist/esm/index.js +11 -1
- package/dist/esm/kysely.d.ts +339 -2
- package/dist/esm/kysely.js +461 -10
- package/dist/esm/migration/migrator.d.ts +16 -1
- package/dist/esm/migration/migrator.js +14 -4
- package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/esm/operation-node/aggregate-function-node.js +4 -3
- package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
- package/dist/esm/operation-node/collate-node.d.ts +13 -0
- package/dist/esm/operation-node/collate-node.js +17 -0
- package/dist/esm/operation-node/constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
- package/dist/esm/operation-node/delete-query-node.js +11 -15
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/esm/operation-node/operation-node-transformer.js +352 -312
- package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/esm/operation-node/operation-node-visitor.js +4 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/or-action-node.d.ts +12 -0
- package/dist/esm/operation-node/or-action-node.js +16 -0
- package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/esm/operation-node/order-by-item-node.js +6 -0
- package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/esm/operation-node/query-node.d.ts +7 -0
- package/dist/esm/operation-node/query-node.js +15 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
- package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/esm/operation-node/rename-constraint-node.js +18 -0
- package/dist/esm/operation-node/select-query-node.d.ts +8 -2
- package/dist/esm/operation-node/select-query-node.js +11 -15
- package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/update-query-node.js +5 -2
- package/dist/esm/parser/collate-parser.d.ts +1 -0
- package/dist/esm/parser/collate-parser.js +2 -0
- package/dist/esm/parser/delete-from-parser.d.ts +5 -0
- package/dist/esm/parser/delete-from-parser.js +2 -0
- package/dist/esm/parser/insert-values-parser.js +3 -1
- package/dist/esm/parser/join-parser.d.ts +1 -1
- package/dist/esm/parser/join-parser.js +7 -1
- package/dist/esm/parser/merge-into-parser.d.ts +5 -0
- package/dist/esm/parser/merge-into-parser.js +2 -0
- package/dist/esm/parser/order-by-parser.d.ts +18 -5
- package/dist/esm/parser/order-by-parser.js +27 -17
- package/dist/esm/parser/savepoint-parser.d.ts +4 -0
- package/dist/esm/parser/savepoint-parser.js +9 -0
- package/dist/esm/parser/select-from-parser.d.ts +4 -0
- package/dist/esm/parser/select-from-parser.js +2 -0
- package/dist/esm/parser/table-parser.d.ts +2 -5
- package/dist/esm/parser/update-parser.d.ts +5 -0
- package/dist/esm/parser/update-parser.js +2 -0
- package/dist/esm/parser/update-set-parser.d.ts +7 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/esm/plugin/camel-case/camel-case.js +4 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +8 -3
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +45 -14
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
- package/dist/esm/query-builder/cte-builder.js +0 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/esm/query-builder/delete-query-builder.js +12 -78
- package/dist/esm/query-builder/function-module.d.ts +31 -4
- package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/esm/query-builder/insert-query-builder.js +197 -10
- package/dist/esm/query-builder/join-builder.js +0 -2
- package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/esm/query-builder/merge-query-builder.js +29 -8
- package/dist/esm/query-builder/on-conflict-builder.js +0 -4
- package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
- package/dist/esm/query-builder/order-by-interface.js +2 -0
- package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/esm/query-builder/order-by-item-builder.js +72 -0
- package/dist/esm/query-builder/over-builder.d.ts +43 -6
- package/dist/esm/query-builder/over-builder.js +8 -25
- package/dist/esm/query-builder/returning-interface.d.ts +20 -3
- package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
- package/dist/esm/query-builder/select-query-builder.js +26 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
- package/dist/esm/query-builder/update-query-builder.js +17 -15
- package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
- package/dist/esm/query-compiler/compiled-query.js +2 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/esm/query-compiler/default-query-compiler.js +97 -2
- package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
- package/dist/esm/query-creator.d.ts +23 -25
- package/dist/esm/query-creator.js +281 -9
- package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
- package/dist/esm/query-executor/default-query-executor.js +2 -2
- package/dist/esm/query-executor/query-executor-base.js +7 -25
- package/dist/esm/raw-builder/raw-builder.js +0 -3
- package/dist/esm/raw-builder/sql.d.ts +4 -4
- package/dist/esm/raw-builder/sql.js +1 -1
- package/dist/esm/schema/alter-column-builder.js +0 -3
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
- package/dist/esm/schema/alter-table-builder.d.ts +7 -3
- package/dist/esm/schema/alter-table-builder.js +22 -11
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/esm/schema/alter-table-executor.js +0 -2
- package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
- package/dist/esm/schema/check-constraint-builder.js +17 -0
- package/dist/esm/schema/column-definition-builder.js +0 -2
- package/dist/esm/schema/create-index-builder.js +1 -3
- package/dist/esm/schema/create-schema-builder.js +0 -2
- package/dist/esm/schema/create-table-builder.d.ts +5 -4
- package/dist/esm/schema/create-table-builder.js +10 -8
- package/dist/esm/schema/create-type-builder.d.ts +1 -1
- package/dist/esm/schema/create-type-builder.js +0 -2
- package/dist/esm/schema/create-view-builder.js +0 -2
- package/dist/esm/schema/drop-index-builder.js +0 -2
- package/dist/esm/schema/drop-schema-builder.js +0 -2
- package/dist/esm/schema/drop-table-builder.js +0 -2
- package/dist/esm/schema/drop-type-builder.js +0 -2
- package/dist/esm/schema/drop-view-builder.js +0 -2
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
- package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
- package/dist/esm/schema/schema.d.ts +14 -0
- package/dist/esm/schema/schema.js +21 -0
- package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/esm/schema/unique-constraint-builder.js +26 -5
- package/dist/esm/util/infer-result.d.ts +1 -1
- package/dist/esm/util/log.d.ts +1 -0
- package/dist/esm/util/log.js +3 -2
- package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
- package/dist/esm/util/provide-controlled-connection.js +22 -0
- package/outdated-typescript.d.ts +5 -0
- package/package.json +16 -2
- package/CONTRIBUTING.md +0 -70
- package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/cjs/util/prevent-await.d.ts +0 -1
- package/dist/cjs/util/prevent-await.js +0 -13
- package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/esm/util/prevent-await.d.ts +0 -1
- package/dist/esm/util/prevent-await.js +0 -11
|
@@ -152,3 +152,52 @@ export function jsonObjectFrom(expr) {
|
|
|
152
152
|
export function jsonBuildObject(obj) {
|
|
153
153
|
return sql `json_build_object(${sql.join(Object.keys(obj).flatMap((k) => [sql.lit(k), obj[k]]))})`;
|
|
154
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* The PostgreSQL `merge_action` function.
|
|
157
|
+
*
|
|
158
|
+
* This function can be used in a `returning` clause to get the action that was
|
|
159
|
+
* performed in a `mergeInto` query. The function returns one of the following
|
|
160
|
+
* strings: `'INSERT'`, `'UPDATE'`, or `'DELETE'`.
|
|
161
|
+
*
|
|
162
|
+
* ### Examples
|
|
163
|
+
*
|
|
164
|
+
* ```ts
|
|
165
|
+
* import { mergeAction } from 'kysely/helpers/postgres'
|
|
166
|
+
*
|
|
167
|
+
* const result = await db
|
|
168
|
+
* .mergeInto('person as p')
|
|
169
|
+
* .using('person_backup as pb', 'p.id', 'pb.id')
|
|
170
|
+
* .whenMatched()
|
|
171
|
+
* .thenUpdateSet(({ ref }) => ({
|
|
172
|
+
* first_name: ref('pb.first_name'),
|
|
173
|
+
* updated_at: ref('pb.updated_at').$castTo<string | null>(),
|
|
174
|
+
* }))
|
|
175
|
+
* .whenNotMatched()
|
|
176
|
+
* .thenInsertValues(({ ref}) => ({
|
|
177
|
+
* id: ref('pb.id'),
|
|
178
|
+
* first_name: ref('pb.first_name'),
|
|
179
|
+
* created_at: ref('pb.updated_at'),
|
|
180
|
+
* updated_at: ref('pb.updated_at').$castTo<string | null>(),
|
|
181
|
+
* }))
|
|
182
|
+
* .returning([mergeAction().as('action'), 'p.id', 'p.updated_at'])
|
|
183
|
+
* .execute()
|
|
184
|
+
*
|
|
185
|
+
* result[0].action
|
|
186
|
+
* ```
|
|
187
|
+
*
|
|
188
|
+
* The generated SQL (PostgreSQL):
|
|
189
|
+
*
|
|
190
|
+
* ```sql
|
|
191
|
+
* merge into "person" as "p"
|
|
192
|
+
* using "person_backup" as "pb" on "p"."id" = "pb"."id"
|
|
193
|
+
* when matched then update set
|
|
194
|
+
* "first_name" = "pb"."first_name",
|
|
195
|
+
* "updated_at" = "pb"."updated_at"::text
|
|
196
|
+
* when not matched then insert values ("id", "first_name", "created_at", "updated_at")
|
|
197
|
+
* values ("pb"."id", "pb"."first_name", "pb"."updated_at", "pb"."updated_at")
|
|
198
|
+
* returning merge_action() as "action", "p"."id", "p"."updated_at"
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
export function mergeAction() {
|
|
202
|
+
return sql `merge_action()`;
|
|
203
|
+
}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export * from './query-builder/where-interface.js';
|
|
|
7
7
|
export * from './query-builder/returning-interface.js';
|
|
8
8
|
export * from './query-builder/output-interface.js';
|
|
9
9
|
export * from './query-builder/having-interface.js';
|
|
10
|
+
export * from './query-builder/order-by-interface.js';
|
|
10
11
|
export * from './query-builder/select-query-builder.js';
|
|
11
12
|
export * from './query-builder/insert-query-builder.js';
|
|
12
13
|
export * from './query-builder/update-query-builder.js';
|
|
@@ -23,6 +24,7 @@ export * from './query-builder/case-builder.js';
|
|
|
23
24
|
export * from './query-builder/json-path-builder.js';
|
|
24
25
|
export * from './query-builder/merge-query-builder.js';
|
|
25
26
|
export * from './query-builder/merge-result.js';
|
|
27
|
+
export * from './query-builder/order-by-item-builder.js';
|
|
26
28
|
export * from './raw-builder/raw-builder.js';
|
|
27
29
|
export * from './raw-builder/sql.js';
|
|
28
30
|
export * from './query-executor/query-executor.js';
|
|
@@ -44,6 +46,7 @@ export * from './schema/column-definition-builder.js';
|
|
|
44
46
|
export * from './schema/foreign-key-constraint-builder.js';
|
|
45
47
|
export * from './schema/alter-table-builder.js';
|
|
46
48
|
export * from './schema/create-view-builder.js';
|
|
49
|
+
export * from './schema/refresh-materialized-view-builder.js';
|
|
47
50
|
export * from './schema/drop-view-builder.js';
|
|
48
51
|
export * from './schema/alter-column-builder.js';
|
|
49
52
|
export * from './dynamic/dynamic.js';
|
|
@@ -90,6 +93,8 @@ export * from './plugin/camel-case/camel-case-plugin.js';
|
|
|
90
93
|
export * from './plugin/deduplicate-joins/deduplicate-joins-plugin.js';
|
|
91
94
|
export * from './plugin/with-schema/with-schema-plugin.js';
|
|
92
95
|
export * from './plugin/parse-json-results/parse-json-results-plugin.js';
|
|
96
|
+
export * from './plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js';
|
|
97
|
+
export * from './plugin/handle-empty-in-lists/handle-empty-in-lists.js';
|
|
93
98
|
export * from './operation-node/add-column-node.js';
|
|
94
99
|
export * from './operation-node/add-constraint-node.js';
|
|
95
100
|
export * from './operation-node/add-index-node.js';
|
|
@@ -102,6 +107,7 @@ export * from './operation-node/binary-operation-node.js';
|
|
|
102
107
|
export * from './operation-node/case-node.js';
|
|
103
108
|
export * from './operation-node/cast-node.js';
|
|
104
109
|
export * from './operation-node/check-constraint-node.js';
|
|
110
|
+
export * from './operation-node/collate-node.js';
|
|
105
111
|
export * from './operation-node/column-definition-node.js';
|
|
106
112
|
export * from './operation-node/column-node.js';
|
|
107
113
|
export * from './operation-node/column-update-node.js';
|
|
@@ -113,6 +119,7 @@ export * from './operation-node/create-schema-node.js';
|
|
|
113
119
|
export * from './operation-node/create-table-node.js';
|
|
114
120
|
export * from './operation-node/create-type-node.js';
|
|
115
121
|
export * from './operation-node/create-view-node.js';
|
|
122
|
+
export * from './operation-node/refresh-materialized-view-node.js';
|
|
116
123
|
export * from './operation-node/data-type-node.js';
|
|
117
124
|
export * from './operation-node/default-insert-value-node.js';
|
|
118
125
|
export * from './operation-node/default-value-node.js';
|
|
@@ -154,6 +161,7 @@ export * from './operation-node/operation-node-transformer.js';
|
|
|
154
161
|
export * from './operation-node/operation-node-visitor.js';
|
|
155
162
|
export * from './operation-node/operation-node.js';
|
|
156
163
|
export * from './operation-node/operator-node.js';
|
|
164
|
+
export * from './operation-node/or-action-node.js';
|
|
157
165
|
export * from './operation-node/or-node.js';
|
|
158
166
|
export * from './operation-node/order-by-item-node.js';
|
|
159
167
|
export * from './operation-node/order-by-node.js';
|
|
@@ -162,13 +170,14 @@ export * from './operation-node/over-node.js';
|
|
|
162
170
|
export * from './operation-node/parens-node.js';
|
|
163
171
|
export * from './operation-node/partition-by-item-node.js';
|
|
164
172
|
export * from './operation-node/partition-by-node.js';
|
|
165
|
-
export * from './operation-node/primary-constraint-node.js';
|
|
173
|
+
export * from './operation-node/primary-key-constraint-node.js';
|
|
166
174
|
export * from './operation-node/primitive-value-list-node.js';
|
|
167
175
|
export * from './operation-node/query-node.js';
|
|
168
176
|
export * from './operation-node/raw-node.js';
|
|
169
177
|
export * from './operation-node/reference-node.js';
|
|
170
178
|
export * from './operation-node/references-node.js';
|
|
171
179
|
export * from './operation-node/rename-column-node.js';
|
|
180
|
+
export * from './operation-node/rename-constraint-node.js';
|
|
172
181
|
export * from './operation-node/returning-node.js';
|
|
173
182
|
export * from './operation-node/schemable-identifier-node.js';
|
|
174
183
|
export * from './operation-node/select-all-node.js';
|
|
@@ -198,6 +207,7 @@ export * from './util/log.js';
|
|
|
198
207
|
export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, Equals, UnknownRow, Simplify, SqlBool, Nullable, NotNull, } from './util/type-utils.js';
|
|
199
208
|
export * from './util/infer-result.js';
|
|
200
209
|
export { logOnce } from './util/log-once.js';
|
|
210
|
+
export { createQueryId, QueryId } from './util/query-id.js';
|
|
201
211
|
export { SelectExpression, SelectCallback, SelectArg, Selection, CallbackSelection, } from './parser/select-parser.js';
|
|
202
212
|
export { ReferenceExpression, ReferenceExpressionOrList, SimpleReferenceExpression, StringReference, ExtractTypeFromStringReference, ExtractTypeFromReferenceExpression, } from './parser/reference-parser.js';
|
|
203
213
|
export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
|
|
@@ -205,7 +215,8 @@ export { SimpleTableReference, TableExpression, TableExpressionOrList, } from '.
|
|
|
205
215
|
export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-parser.js';
|
|
206
216
|
export { InsertObject } from './parser/insert-values-parser.js';
|
|
207
217
|
export { UpdateObject } from './parser/update-set-parser.js';
|
|
208
|
-
export { OrderByExpression, OrderByDirectionExpression, } from './parser/order-by-parser.js';
|
|
218
|
+
export { OrderByExpression, OrderByDirectionExpression, OrderByModifiers, OrderByDirection, OrderByModifiersCallbackExpression, } from './parser/order-by-parser.js';
|
|
209
219
|
export { ComparisonOperatorExpression, OperandValueExpression, OperandValueExpressionOrList, FilterObject, } from './parser/binary-operation-parser.js';
|
|
210
220
|
export { ExistsExpression } from './parser/unary-operation-parser.js';
|
|
211
221
|
export { OperandExpression, ExpressionOrFactory, } from './parser/expression-parser.js';
|
|
222
|
+
export { Collation } from './parser/collate-parser.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -8,6 +8,7 @@ export * from './query-builder/where-interface.js';
|
|
|
8
8
|
export * from './query-builder/returning-interface.js';
|
|
9
9
|
export * from './query-builder/output-interface.js';
|
|
10
10
|
export * from './query-builder/having-interface.js';
|
|
11
|
+
export * from './query-builder/order-by-interface.js';
|
|
11
12
|
export * from './query-builder/select-query-builder.js';
|
|
12
13
|
export * from './query-builder/insert-query-builder.js';
|
|
13
14
|
export * from './query-builder/update-query-builder.js';
|
|
@@ -24,6 +25,7 @@ export * from './query-builder/case-builder.js';
|
|
|
24
25
|
export * from './query-builder/json-path-builder.js';
|
|
25
26
|
export * from './query-builder/merge-query-builder.js';
|
|
26
27
|
export * from './query-builder/merge-result.js';
|
|
28
|
+
export * from './query-builder/order-by-item-builder.js';
|
|
27
29
|
export * from './raw-builder/raw-builder.js';
|
|
28
30
|
export * from './raw-builder/sql.js';
|
|
29
31
|
export * from './query-executor/query-executor.js';
|
|
@@ -45,6 +47,7 @@ export * from './schema/column-definition-builder.js';
|
|
|
45
47
|
export * from './schema/foreign-key-constraint-builder.js';
|
|
46
48
|
export * from './schema/alter-table-builder.js';
|
|
47
49
|
export * from './schema/create-view-builder.js';
|
|
50
|
+
export * from './schema/refresh-materialized-view-builder.js';
|
|
48
51
|
export * from './schema/drop-view-builder.js';
|
|
49
52
|
export * from './schema/alter-column-builder.js';
|
|
50
53
|
export * from './dynamic/dynamic.js';
|
|
@@ -91,6 +94,8 @@ export * from './plugin/camel-case/camel-case-plugin.js';
|
|
|
91
94
|
export * from './plugin/deduplicate-joins/deduplicate-joins-plugin.js';
|
|
92
95
|
export * from './plugin/with-schema/with-schema-plugin.js';
|
|
93
96
|
export * from './plugin/parse-json-results/parse-json-results-plugin.js';
|
|
97
|
+
export * from './plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js';
|
|
98
|
+
export * from './plugin/handle-empty-in-lists/handle-empty-in-lists.js';
|
|
94
99
|
export * from './operation-node/add-column-node.js';
|
|
95
100
|
export * from './operation-node/add-constraint-node.js';
|
|
96
101
|
export * from './operation-node/add-index-node.js';
|
|
@@ -103,6 +108,7 @@ export * from './operation-node/binary-operation-node.js';
|
|
|
103
108
|
export * from './operation-node/case-node.js';
|
|
104
109
|
export * from './operation-node/cast-node.js';
|
|
105
110
|
export * from './operation-node/check-constraint-node.js';
|
|
111
|
+
export * from './operation-node/collate-node.js';
|
|
106
112
|
export * from './operation-node/column-definition-node.js';
|
|
107
113
|
export * from './operation-node/column-node.js';
|
|
108
114
|
export * from './operation-node/column-update-node.js';
|
|
@@ -114,6 +120,7 @@ export * from './operation-node/create-schema-node.js';
|
|
|
114
120
|
export * from './operation-node/create-table-node.js';
|
|
115
121
|
export * from './operation-node/create-type-node.js';
|
|
116
122
|
export * from './operation-node/create-view-node.js';
|
|
123
|
+
export * from './operation-node/refresh-materialized-view-node.js';
|
|
117
124
|
export * from './operation-node/data-type-node.js';
|
|
118
125
|
export * from './operation-node/default-insert-value-node.js';
|
|
119
126
|
export * from './operation-node/default-value-node.js';
|
|
@@ -155,6 +162,7 @@ export * from './operation-node/operation-node-transformer.js';
|
|
|
155
162
|
export * from './operation-node/operation-node-visitor.js';
|
|
156
163
|
export * from './operation-node/operation-node.js';
|
|
157
164
|
export * from './operation-node/operator-node.js';
|
|
165
|
+
export * from './operation-node/or-action-node.js';
|
|
158
166
|
export * from './operation-node/or-node.js';
|
|
159
167
|
export * from './operation-node/order-by-item-node.js';
|
|
160
168
|
export * from './operation-node/order-by-node.js';
|
|
@@ -163,13 +171,14 @@ export * from './operation-node/over-node.js';
|
|
|
163
171
|
export * from './operation-node/parens-node.js';
|
|
164
172
|
export * from './operation-node/partition-by-item-node.js';
|
|
165
173
|
export * from './operation-node/partition-by-node.js';
|
|
166
|
-
export * from './operation-node/primary-constraint-node.js';
|
|
174
|
+
export * from './operation-node/primary-key-constraint-node.js';
|
|
167
175
|
export * from './operation-node/primitive-value-list-node.js';
|
|
168
176
|
export * from './operation-node/query-node.js';
|
|
169
177
|
export * from './operation-node/raw-node.js';
|
|
170
178
|
export * from './operation-node/reference-node.js';
|
|
171
179
|
export * from './operation-node/references-node.js';
|
|
172
180
|
export * from './operation-node/rename-column-node.js';
|
|
181
|
+
export * from './operation-node/rename-constraint-node.js';
|
|
173
182
|
export * from './operation-node/returning-node.js';
|
|
174
183
|
export * from './operation-node/schemable-identifier-node.js';
|
|
175
184
|
export * from './operation-node/select-all-node.js';
|
|
@@ -198,3 +207,4 @@ export * from './util/streamable.js';
|
|
|
198
207
|
export * from './util/log.js';
|
|
199
208
|
export * from './util/infer-result.js';
|
|
200
209
|
export { logOnce } from './util/log-once.js';
|
|
210
|
+
export { createQueryId } from './util/query-id.js';
|
package/dist/esm/kysely.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { QueryExecutor } from './query-executor/query-executor.js';
|
|
|
5
5
|
import { QueryCreator } from './query-creator.js';
|
|
6
6
|
import { KyselyPlugin } from './plugin/kysely-plugin.js';
|
|
7
7
|
import { DatabaseIntrospector } from './dialect/database-introspector.js';
|
|
8
|
-
import { Driver, IsolationLevel } from './driver/driver.js';
|
|
8
|
+
import { Driver, IsolationLevel, AccessMode } from './driver/driver.js';
|
|
9
9
|
import { FunctionModule } from './query-builder/function-module.js';
|
|
10
10
|
import { LogConfig } from './util/log.js';
|
|
11
11
|
import { QueryExecutorProvider } from './query-executor/query-executor-provider.js';
|
|
@@ -16,6 +16,8 @@ import { Compilable } from './util/compilable.js';
|
|
|
16
16
|
import { CaseBuilder } from './query-builder/case-builder.js';
|
|
17
17
|
import { Expression } from './expression/expression.js';
|
|
18
18
|
import { DrainOuterGeneric } from './util/type-utils.js';
|
|
19
|
+
import { ReleaseSavepoint, RollbackToSavepoint } from './parser/savepoint-parser.js';
|
|
20
|
+
import { ControlledConnection } from './util/provide-controlled-connection.js';
|
|
19
21
|
/**
|
|
20
22
|
* The main Kysely class.
|
|
21
23
|
*
|
|
@@ -49,7 +51,7 @@ import { DrainOuterGeneric } from './util/type-utils.js';
|
|
|
49
51
|
* in the database and values must be interfaces that describe the rows in those
|
|
50
52
|
* tables. See the examples above.
|
|
51
53
|
*/
|
|
52
|
-
export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecutorProvider {
|
|
54
|
+
export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecutorProvider, AsyncDisposable {
|
|
53
55
|
#private;
|
|
54
56
|
constructor(args: KyselyConfig);
|
|
55
57
|
constructor(args: KyselyProps);
|
|
@@ -141,6 +143,9 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
|
|
|
141
143
|
* of type {@link Transaction} which inherits {@link Kysely}. Any query
|
|
142
144
|
* started through the transaction object is executed inside the transaction.
|
|
143
145
|
*
|
|
146
|
+
* To run a controlled transaction, allowing you to commit and rollback manually,
|
|
147
|
+
* use {@link startTransaction} instead.
|
|
148
|
+
*
|
|
144
149
|
* ### Examples
|
|
145
150
|
*
|
|
146
151
|
* <!-- siteExample("transactions", "Simple transaction", 10) -->
|
|
@@ -193,6 +198,118 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
|
|
|
193
198
|
* ```
|
|
194
199
|
*/
|
|
195
200
|
transaction(): TransactionBuilder<DB>;
|
|
201
|
+
/**
|
|
202
|
+
* Creates a {@link ControlledTransactionBuilder} that can be used to run queries inside a controlled transaction.
|
|
203
|
+
*
|
|
204
|
+
* The returned {@link ControlledTransactionBuilder} can be used to configure the transaction.
|
|
205
|
+
* The {@link ControlledTransactionBuilder.execute} method can then be called
|
|
206
|
+
* to start the transaction and return a {@link ControlledTransaction}.
|
|
207
|
+
*
|
|
208
|
+
* A {@link ControlledTransaction} allows you to commit and rollback manually,
|
|
209
|
+
* execute savepoint commands. It extends {@link Transaction} which extends {@link Kysely},
|
|
210
|
+
* so you can run queries inside the transaction. Once the transaction is committed,
|
|
211
|
+
* or rolled back, it can't be used anymore - all queries will throw an error.
|
|
212
|
+
* This is to prevent accidentally running queries outside the transaction - where
|
|
213
|
+
* atomicity is not guaranteed anymore.
|
|
214
|
+
*
|
|
215
|
+
* ### Examples
|
|
216
|
+
*
|
|
217
|
+
* <!-- siteExample("transactions", "Controlled transaction", 11) -->
|
|
218
|
+
*
|
|
219
|
+
* A controlled transaction allows you to commit and rollback manually, execute
|
|
220
|
+
* savepoint commands, and queries in general.
|
|
221
|
+
*
|
|
222
|
+
* In this example we start a transaction, use it to insert two rows and then commit
|
|
223
|
+
* the transaction. If an error is thrown, we catch it and rollback the transaction.
|
|
224
|
+
*
|
|
225
|
+
* ```ts
|
|
226
|
+
* const trx = await db.startTransaction().execute()
|
|
227
|
+
*
|
|
228
|
+
* try {
|
|
229
|
+
* const jennifer = await trx.insertInto('person')
|
|
230
|
+
* .values({
|
|
231
|
+
* first_name: 'Jennifer',
|
|
232
|
+
* last_name: 'Aniston',
|
|
233
|
+
* age: 40,
|
|
234
|
+
* })
|
|
235
|
+
* .returning('id')
|
|
236
|
+
* .executeTakeFirstOrThrow()
|
|
237
|
+
*
|
|
238
|
+
* const catto = await trx.insertInto('pet')
|
|
239
|
+
* .values({
|
|
240
|
+
* owner_id: jennifer.id,
|
|
241
|
+
* name: 'Catto',
|
|
242
|
+
* species: 'cat',
|
|
243
|
+
* is_favorite: false,
|
|
244
|
+
* })
|
|
245
|
+
* .returningAll()
|
|
246
|
+
* .executeTakeFirstOrThrow()
|
|
247
|
+
*
|
|
248
|
+
* await trx.commit().execute()
|
|
249
|
+
*
|
|
250
|
+
* // ...
|
|
251
|
+
* } catch (error) {
|
|
252
|
+
* await trx.rollback().execute()
|
|
253
|
+
* }
|
|
254
|
+
* ```
|
|
255
|
+
*
|
|
256
|
+
* <!-- siteExample("transactions", "Controlled transaction /w savepoints", 12) -->
|
|
257
|
+
*
|
|
258
|
+
* A controlled transaction allows you to commit and rollback manually, execute
|
|
259
|
+
* savepoint commands, and queries in general.
|
|
260
|
+
*
|
|
261
|
+
* In this example we start a transaction, insert a person, create a savepoint,
|
|
262
|
+
* try inserting a toy and a pet, and if an error is thrown, we rollback to the
|
|
263
|
+
* savepoint. Eventually we release the savepoint, insert an audit record and
|
|
264
|
+
* commit the transaction. If an error is thrown, we catch it and rollback the
|
|
265
|
+
* transaction.
|
|
266
|
+
*
|
|
267
|
+
* ```ts
|
|
268
|
+
* const trx = await db.startTransaction().execute()
|
|
269
|
+
*
|
|
270
|
+
* try {
|
|
271
|
+
* const jennifer = await trx
|
|
272
|
+
* .insertInto('person')
|
|
273
|
+
* .values({
|
|
274
|
+
* first_name: 'Jennifer',
|
|
275
|
+
* last_name: 'Aniston',
|
|
276
|
+
* age: 40,
|
|
277
|
+
* })
|
|
278
|
+
* .returning('id')
|
|
279
|
+
* .executeTakeFirstOrThrow()
|
|
280
|
+
*
|
|
281
|
+
* const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()
|
|
282
|
+
*
|
|
283
|
+
* try {
|
|
284
|
+
* const catto = await trxAfterJennifer
|
|
285
|
+
* .insertInto('pet')
|
|
286
|
+
* .values({
|
|
287
|
+
* owner_id: jennifer.id,
|
|
288
|
+
* name: 'Catto',
|
|
289
|
+
* species: 'cat',
|
|
290
|
+
* })
|
|
291
|
+
* .returning('id')
|
|
292
|
+
* .executeTakeFirstOrThrow()
|
|
293
|
+
*
|
|
294
|
+
* await trxAfterJennifer
|
|
295
|
+
* .insertInto('toy')
|
|
296
|
+
* .values({ name: 'Bone', price: 1.99, pet_id: catto.id })
|
|
297
|
+
* .execute()
|
|
298
|
+
* } catch (error) {
|
|
299
|
+
* await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()
|
|
300
|
+
* }
|
|
301
|
+
*
|
|
302
|
+
* await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()
|
|
303
|
+
*
|
|
304
|
+
* await trx.insertInto('audit').values({ action: 'added Jennifer' }).execute()
|
|
305
|
+
*
|
|
306
|
+
* await trx.commit().execute()
|
|
307
|
+
* } catch (error) {
|
|
308
|
+
* await trx.rollback().execute()
|
|
309
|
+
* }
|
|
310
|
+
* ```
|
|
311
|
+
*/
|
|
312
|
+
startTransaction(): ControlledTransactionBuilder<DB>;
|
|
196
313
|
/**
|
|
197
314
|
* Provides a kysely instance bound to a single database connection.
|
|
198
315
|
*
|
|
@@ -280,6 +397,7 @@ export declare class Kysely<DB> extends QueryCreator<DB> implements QueryExecuto
|
|
|
280
397
|
* See {@link https://github.com/kysely-org/kysely/blob/master/site/docs/recipes/0004-splitting-query-building-and-execution.md#execute-compiled-queries splitting build, compile and execute code recipe} for more information.
|
|
281
398
|
*/
|
|
282
399
|
executeQuery<R>(query: CompiledQuery<R> | Compilable<R>, queryId?: QueryId): Promise<QueryResult<R>>;
|
|
400
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
283
401
|
}
|
|
284
402
|
export declare class Transaction<DB> extends Kysely<DB> {
|
|
285
403
|
#private;
|
|
@@ -307,6 +425,9 @@ export declare class Transaction<DB> extends Kysely<DB> {
|
|
|
307
425
|
* of type {@link Transaction} which inherits {@link Kysely}. Any query
|
|
308
426
|
* started through the transaction object is executed inside the transaction.
|
|
309
427
|
*
|
|
428
|
+
* To run a controlled transaction, allowing you to commit and rollback manually,
|
|
429
|
+
* use {@link startTransaction} instead.
|
|
430
|
+
*
|
|
310
431
|
* ### Examples
|
|
311
432
|
*
|
|
312
433
|
* <!-- siteExample("transactions", "Simple transaction", 10) -->
|
|
@@ -495,10 +616,226 @@ interface ConnectionBuilderProps extends KyselyProps {
|
|
|
495
616
|
export declare class TransactionBuilder<DB> {
|
|
496
617
|
#private;
|
|
497
618
|
constructor(props: TransactionBuilderProps);
|
|
619
|
+
setAccessMode(accessMode: AccessMode): TransactionBuilder<DB>;
|
|
498
620
|
setIsolationLevel(isolationLevel: IsolationLevel): TransactionBuilder<DB>;
|
|
499
621
|
execute<T>(callback: (trx: Transaction<DB>) => Promise<T>): Promise<T>;
|
|
500
622
|
}
|
|
501
623
|
interface TransactionBuilderProps extends KyselyProps {
|
|
624
|
+
readonly accessMode?: AccessMode;
|
|
502
625
|
readonly isolationLevel?: IsolationLevel;
|
|
503
626
|
}
|
|
627
|
+
export declare class ControlledTransactionBuilder<DB> {
|
|
628
|
+
#private;
|
|
629
|
+
constructor(props: TransactionBuilderProps);
|
|
630
|
+
setAccessMode(accessMode: AccessMode): ControlledTransactionBuilder<DB>;
|
|
631
|
+
setIsolationLevel(isolationLevel: IsolationLevel): ControlledTransactionBuilder<DB>;
|
|
632
|
+
execute(): Promise<ControlledTransaction<DB>>;
|
|
633
|
+
}
|
|
634
|
+
export declare class ControlledTransaction<DB, S extends string[] = []> extends Transaction<DB> {
|
|
635
|
+
#private;
|
|
636
|
+
constructor(props: ControlledTransactionProps);
|
|
637
|
+
get isCommitted(): boolean;
|
|
638
|
+
get isRolledBack(): boolean;
|
|
639
|
+
/**
|
|
640
|
+
* Commits the transaction.
|
|
641
|
+
*
|
|
642
|
+
* See {@link rollback}.
|
|
643
|
+
*
|
|
644
|
+
* ### Examples
|
|
645
|
+
*
|
|
646
|
+
* ```ts
|
|
647
|
+
* import type { Kysely } from 'kysely'
|
|
648
|
+
* import type { Database } from 'type-editor' // imaginary module
|
|
649
|
+
*
|
|
650
|
+
* const trx = await db.startTransaction().execute()
|
|
651
|
+
*
|
|
652
|
+
* try {
|
|
653
|
+
* await doSomething(trx)
|
|
654
|
+
*
|
|
655
|
+
* await trx.commit().execute()
|
|
656
|
+
* } catch (error) {
|
|
657
|
+
* await trx.rollback().execute()
|
|
658
|
+
* }
|
|
659
|
+
*
|
|
660
|
+
* async function doSomething(kysely: Kysely<Database>) {}
|
|
661
|
+
* ```
|
|
662
|
+
*/
|
|
663
|
+
commit(): Command<void>;
|
|
664
|
+
/**
|
|
665
|
+
* Rolls back the transaction.
|
|
666
|
+
*
|
|
667
|
+
* See {@link commit} and {@link rollbackToSavepoint}.
|
|
668
|
+
*
|
|
669
|
+
* ### Examples
|
|
670
|
+
*
|
|
671
|
+
* ```ts
|
|
672
|
+
* import type { Kysely } from 'kysely'
|
|
673
|
+
* import type { Database } from 'type-editor' // imaginary module
|
|
674
|
+
*
|
|
675
|
+
* const trx = await db.startTransaction().execute()
|
|
676
|
+
*
|
|
677
|
+
* try {
|
|
678
|
+
* await doSomething(trx)
|
|
679
|
+
*
|
|
680
|
+
* await trx.commit().execute()
|
|
681
|
+
* } catch (error) {
|
|
682
|
+
* await trx.rollback().execute()
|
|
683
|
+
* }
|
|
684
|
+
*
|
|
685
|
+
* async function doSomething(kysely: Kysely<Database>) {}
|
|
686
|
+
* ```
|
|
687
|
+
*/
|
|
688
|
+
rollback(): Command<void>;
|
|
689
|
+
/**
|
|
690
|
+
* Creates a savepoint with a given name.
|
|
691
|
+
*
|
|
692
|
+
* See {@link rollbackToSavepoint} and {@link releaseSavepoint}.
|
|
693
|
+
*
|
|
694
|
+
* For a type-safe experience, you should use the returned instance from now on.
|
|
695
|
+
*
|
|
696
|
+
* ### Examples
|
|
697
|
+
*
|
|
698
|
+
* ```ts
|
|
699
|
+
* import type { Kysely } from 'kysely'
|
|
700
|
+
* import type { Database } from 'type-editor' // imaginary module
|
|
701
|
+
*
|
|
702
|
+
* const trx = await db.startTransaction().execute()
|
|
703
|
+
*
|
|
704
|
+
* await insertJennifer(trx)
|
|
705
|
+
*
|
|
706
|
+
* const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()
|
|
707
|
+
*
|
|
708
|
+
* try {
|
|
709
|
+
* await doSomething(trxAfterJennifer)
|
|
710
|
+
* } catch (error) {
|
|
711
|
+
* await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()
|
|
712
|
+
* }
|
|
713
|
+
*
|
|
714
|
+
* async function insertJennifer(kysely: Kysely<Database>) {}
|
|
715
|
+
* async function doSomething(kysely: Kysely<Database>) {}
|
|
716
|
+
* ```
|
|
717
|
+
*/
|
|
718
|
+
savepoint<SN extends string>(savepointName: SN extends S ? never : SN): Command<ControlledTransaction<DB, [...S, SN]>>;
|
|
719
|
+
/**
|
|
720
|
+
* Rolls back to a savepoint with a given name.
|
|
721
|
+
*
|
|
722
|
+
* See {@link savepoint} and {@link releaseSavepoint}.
|
|
723
|
+
*
|
|
724
|
+
* You must use the same instance returned by {@link savepoint}, or
|
|
725
|
+
* escape the type-check by using `as any`.
|
|
726
|
+
*
|
|
727
|
+
* ### Examples
|
|
728
|
+
*
|
|
729
|
+
* ```ts
|
|
730
|
+
* import type { Kysely } from 'kysely'
|
|
731
|
+
* import type { Database } from 'type-editor' // imaginary module
|
|
732
|
+
*
|
|
733
|
+
* const trx = await db.startTransaction().execute()
|
|
734
|
+
*
|
|
735
|
+
* await insertJennifer(trx)
|
|
736
|
+
*
|
|
737
|
+
* const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()
|
|
738
|
+
*
|
|
739
|
+
* try {
|
|
740
|
+
* await doSomething(trxAfterJennifer)
|
|
741
|
+
* } catch (error) {
|
|
742
|
+
* await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()
|
|
743
|
+
* }
|
|
744
|
+
*
|
|
745
|
+
* async function insertJennifer(kysely: Kysely<Database>) {}
|
|
746
|
+
* async function doSomething(kysely: Kysely<Database>) {}
|
|
747
|
+
* ```
|
|
748
|
+
*/
|
|
749
|
+
rollbackToSavepoint<SN extends S[number]>(savepointName: SN): RollbackToSavepoint<S, SN> extends string[] ? Command<ControlledTransaction<DB, RollbackToSavepoint<S, SN>>> : never;
|
|
750
|
+
/**
|
|
751
|
+
* Releases a savepoint with a given name.
|
|
752
|
+
*
|
|
753
|
+
* See {@link savepoint} and {@link rollbackToSavepoint}.
|
|
754
|
+
*
|
|
755
|
+
* You must use the same instance returned by {@link savepoint}, or
|
|
756
|
+
* escape the type-check by using `as any`.
|
|
757
|
+
*
|
|
758
|
+
* ### Examples
|
|
759
|
+
*
|
|
760
|
+
* ```ts
|
|
761
|
+
* import type { Kysely } from 'kysely'
|
|
762
|
+
* import type { Database } from 'type-editor' // imaginary module
|
|
763
|
+
*
|
|
764
|
+
* const trx = await db.startTransaction().execute()
|
|
765
|
+
*
|
|
766
|
+
* await insertJennifer(trx)
|
|
767
|
+
*
|
|
768
|
+
* const trxAfterJennifer = await trx.savepoint('after_jennifer').execute()
|
|
769
|
+
*
|
|
770
|
+
* try {
|
|
771
|
+
* await doSomething(trxAfterJennifer)
|
|
772
|
+
* } catch (error) {
|
|
773
|
+
* await trxAfterJennifer.rollbackToSavepoint('after_jennifer').execute()
|
|
774
|
+
* }
|
|
775
|
+
*
|
|
776
|
+
* await trxAfterJennifer.releaseSavepoint('after_jennifer').execute()
|
|
777
|
+
*
|
|
778
|
+
* await doSomethingElse(trx)
|
|
779
|
+
*
|
|
780
|
+
* async function insertJennifer(kysely: Kysely<Database>) {}
|
|
781
|
+
* async function doSomething(kysely: Kysely<Database>) {}
|
|
782
|
+
* async function doSomethingElse(kysely: Kysely<Database>) {}
|
|
783
|
+
* ```
|
|
784
|
+
*/
|
|
785
|
+
releaseSavepoint<SN extends S[number]>(savepointName: SN): ReleaseSavepoint<S, SN> extends string[] ? Command<ControlledTransaction<DB, ReleaseSavepoint<S, SN>>> : never;
|
|
786
|
+
/**
|
|
787
|
+
* Returns a copy of this Kysely instance with the given plugin installed.
|
|
788
|
+
*/
|
|
789
|
+
withPlugin(plugin: KyselyPlugin): ControlledTransaction<DB, S>;
|
|
790
|
+
/**
|
|
791
|
+
* Returns a copy of this Kysely instance without any plugins.
|
|
792
|
+
*/
|
|
793
|
+
withoutPlugins(): ControlledTransaction<DB, S>;
|
|
794
|
+
/**
|
|
795
|
+
* @override
|
|
796
|
+
*/
|
|
797
|
+
withSchema(schema: string): ControlledTransaction<DB, S>;
|
|
798
|
+
/**
|
|
799
|
+
* Returns a copy of this Kysely instance with tables added to its
|
|
800
|
+
* database type.
|
|
801
|
+
*
|
|
802
|
+
* This method only modifies the types and doesn't affect any of the
|
|
803
|
+
* executed queries in any way.
|
|
804
|
+
*
|
|
805
|
+
* ### Examples
|
|
806
|
+
*
|
|
807
|
+
* The following example adds and uses a temporary table:
|
|
808
|
+
*
|
|
809
|
+
* ```ts
|
|
810
|
+
* await db.schema
|
|
811
|
+
* .createTable('temp_table')
|
|
812
|
+
* .temporary()
|
|
813
|
+
* .addColumn('some_column', 'integer')
|
|
814
|
+
* .execute()
|
|
815
|
+
*
|
|
816
|
+
* const tempDb = db.withTables<{
|
|
817
|
+
* temp_table: {
|
|
818
|
+
* some_column: number
|
|
819
|
+
* }
|
|
820
|
+
* }>()
|
|
821
|
+
*
|
|
822
|
+
* await tempDb
|
|
823
|
+
* .insertInto('temp_table')
|
|
824
|
+
* .values({ some_column: 100 })
|
|
825
|
+
* .execute()
|
|
826
|
+
* ```
|
|
827
|
+
*/
|
|
828
|
+
withTables<T extends Record<string, Record<string, any>>>(): ControlledTransaction<DrainOuterGeneric<DB & T>, S>;
|
|
829
|
+
}
|
|
830
|
+
interface ControlledTransactionProps extends KyselyProps {
|
|
831
|
+
readonly connection: ControlledConnection;
|
|
832
|
+
}
|
|
833
|
+
export declare class Command<T> {
|
|
834
|
+
#private;
|
|
835
|
+
constructor(cb: () => Promise<T>);
|
|
836
|
+
/**
|
|
837
|
+
* Executes the command.
|
|
838
|
+
*/
|
|
839
|
+
execute(): Promise<T>;
|
|
840
|
+
}
|
|
504
841
|
export {};
|