kysely 0.27.6 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -1
- package/deno.check.d.ts +7 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
- package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/cjs/driver/database-connection.d.ts +0 -4
- package/dist/cjs/driver/driver.d.ts +17 -0
- package/dist/cjs/driver/driver.js +13 -1
- package/dist/cjs/driver/dummy-driver.d.ts +3 -0
- package/dist/cjs/driver/dummy-driver.js +9 -0
- package/dist/cjs/driver/runtime-driver.d.ts +4 -0
- package/dist/cjs/driver/runtime-driver.js +43 -3
- package/dist/cjs/expression/expression-builder.d.ts +7 -10
- package/dist/cjs/helpers/postgres.d.ts +48 -0
- package/dist/cjs/helpers/postgres.js +50 -0
- package/dist/cjs/index.d.ts +13 -2
- package/dist/cjs/index.js +13 -2
- package/dist/cjs/kysely.d.ts +339 -2
- package/dist/cjs/kysely.js +465 -11
- package/dist/cjs/migration/migrator.d.ts +8 -0
- package/dist/cjs/migration/migrator.js +1 -1
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
- package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
- package/dist/cjs/operation-node/collate-node.d.ts +13 -0
- package/dist/cjs/operation-node/collate-node.js +19 -0
- package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/delete-query-node.js +11 -15
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
- package/dist/cjs/operation-node/or-action-node.js +18 -0
- package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/cjs/operation-node/order-by-item-node.js +6 -0
- package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/cjs/operation-node/query-node.d.ts +7 -0
- package/dist/cjs/operation-node/query-node.js +15 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
- package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/select-query-node.js +11 -15
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/update-query-node.js +5 -2
- package/dist/cjs/parser/collate-parser.d.ts +1 -0
- package/dist/cjs/parser/collate-parser.js +2 -0
- package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
- package/dist/cjs/parser/delete-from-parser.js +2 -0
- package/dist/cjs/parser/join-parser.d.ts +1 -1
- package/dist/cjs/parser/join-parser.js +7 -1
- package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
- package/dist/cjs/parser/merge-into-parser.js +2 -0
- package/dist/cjs/parser/order-by-parser.d.ts +18 -5
- package/dist/cjs/parser/order-by-parser.js +24 -14
- package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
- package/dist/cjs/parser/savepoint-parser.js +11 -0
- package/dist/cjs/parser/select-from-parser.d.ts +4 -0
- package/dist/cjs/parser/select-from-parser.js +2 -0
- package/dist/cjs/parser/table-parser.d.ts +2 -5
- package/dist/cjs/parser/update-parser.d.ts +5 -0
- package/dist/cjs/parser/update-parser.js +2 -0
- package/dist/cjs/parser/update-set-parser.d.ts +7 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +6 -5
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +29 -24
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
- package/dist/cjs/query-builder/cte-builder.js +0 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/cjs/query-builder/delete-query-builder.js +12 -78
- package/dist/cjs/query-builder/function-module.d.ts +31 -4
- package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/cjs/query-builder/insert-query-builder.js +197 -10
- package/dist/cjs/query-builder/join-builder.js +0 -2
- package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/cjs/query-builder/merge-query-builder.js +28 -7
- package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
- package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
- package/dist/cjs/query-builder/order-by-interface.js +2 -0
- package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
- package/dist/cjs/query-builder/over-builder.d.ts +43 -6
- package/dist/cjs/query-builder/over-builder.js +8 -25
- package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
- package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
- package/dist/cjs/query-builder/select-query-builder.js +26 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
- package/dist/cjs/query-builder/update-query-builder.js +17 -15
- package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
- package/dist/cjs/query-compiler/compiled-query.js +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
- package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
- package/dist/cjs/query-creator.d.ts +23 -25
- package/dist/cjs/query-creator.js +280 -8
- package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
- package/dist/cjs/query-executor/default-query-executor.js +2 -2
- package/dist/cjs/query-executor/query-executor-base.js +7 -25
- package/dist/cjs/raw-builder/raw-builder.js +0 -3
- package/dist/cjs/raw-builder/sql.d.ts +3 -3
- package/dist/cjs/raw-builder/sql.js +1 -1
- package/dist/cjs/schema/alter-column-builder.js +0 -3
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
- package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
- package/dist/cjs/schema/alter-table-builder.js +21 -10
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/cjs/schema/alter-table-executor.js +0 -2
- package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
- package/dist/cjs/schema/check-constraint-builder.js +20 -0
- package/dist/cjs/schema/column-definition-builder.js +0 -2
- package/dist/cjs/schema/create-index-builder.js +1 -3
- package/dist/cjs/schema/create-schema-builder.js +0 -2
- package/dist/cjs/schema/create-table-builder.d.ts +5 -4
- package/dist/cjs/schema/create-table-builder.js +9 -7
- package/dist/cjs/schema/create-type-builder.d.ts +1 -1
- package/dist/cjs/schema/create-type-builder.js +0 -2
- package/dist/cjs/schema/create-view-builder.js +0 -2
- package/dist/cjs/schema/drop-index-builder.js +0 -2
- package/dist/cjs/schema/drop-schema-builder.js +0 -2
- package/dist/cjs/schema/drop-table-builder.js +0 -2
- package/dist/cjs/schema/drop-type-builder.js +0 -2
- package/dist/cjs/schema/drop-view-builder.js +0 -2
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
- package/dist/cjs/schema/schema.d.ts +14 -0
- package/dist/cjs/schema/schema.js +21 -0
- package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/cjs/schema/unique-constraint-builder.js +26 -5
- package/dist/cjs/util/infer-result.d.ts +1 -1
- package/dist/cjs/util/log.d.ts +1 -0
- package/dist/cjs/util/log.js +3 -2
- package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
- package/dist/cjs/util/provide-controlled-connection.js +24 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
- package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/esm/driver/database-connection.d.ts +0 -4
- package/dist/esm/driver/driver.d.ts +17 -0
- package/dist/esm/driver/driver.js +11 -0
- package/dist/esm/driver/dummy-driver.d.ts +3 -0
- package/dist/esm/driver/dummy-driver.js +9 -0
- package/dist/esm/driver/runtime-driver.d.ts +4 -0
- package/dist/esm/driver/runtime-driver.js +43 -3
- package/dist/esm/expression/expression-builder.d.ts +7 -10
- package/dist/esm/helpers/postgres.d.ts +48 -0
- package/dist/esm/helpers/postgres.js +49 -0
- package/dist/esm/index.d.ts +13 -2
- package/dist/esm/index.js +11 -1
- package/dist/esm/kysely.d.ts +339 -2
- package/dist/esm/kysely.js +461 -10
- package/dist/esm/migration/migrator.d.ts +8 -0
- package/dist/esm/migration/migrator.js +1 -1
- package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/esm/operation-node/aggregate-function-node.js +4 -3
- package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
- package/dist/esm/operation-node/collate-node.d.ts +13 -0
- package/dist/esm/operation-node/collate-node.js +17 -0
- package/dist/esm/operation-node/constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
- package/dist/esm/operation-node/delete-query-node.js +11 -15
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/esm/operation-node/operation-node-transformer.js +352 -312
- package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/esm/operation-node/operation-node-visitor.js +4 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/or-action-node.d.ts +12 -0
- package/dist/esm/operation-node/or-action-node.js +16 -0
- package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/esm/operation-node/order-by-item-node.js +6 -0
- package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/esm/operation-node/query-node.d.ts +7 -0
- package/dist/esm/operation-node/query-node.js +15 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
- package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/esm/operation-node/rename-constraint-node.js +18 -0
- package/dist/esm/operation-node/select-query-node.d.ts +8 -2
- package/dist/esm/operation-node/select-query-node.js +11 -15
- package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/update-query-node.js +5 -2
- package/dist/esm/parser/collate-parser.d.ts +1 -0
- package/dist/esm/parser/collate-parser.js +2 -0
- package/dist/esm/parser/delete-from-parser.d.ts +5 -0
- package/dist/esm/parser/delete-from-parser.js +2 -0
- package/dist/esm/parser/join-parser.d.ts +1 -1
- package/dist/esm/parser/join-parser.js +7 -1
- package/dist/esm/parser/merge-into-parser.d.ts +5 -0
- package/dist/esm/parser/merge-into-parser.js +2 -0
- package/dist/esm/parser/order-by-parser.d.ts +18 -5
- package/dist/esm/parser/order-by-parser.js +27 -17
- package/dist/esm/parser/savepoint-parser.d.ts +4 -0
- package/dist/esm/parser/savepoint-parser.js +9 -0
- package/dist/esm/parser/select-from-parser.d.ts +4 -0
- package/dist/esm/parser/select-from-parser.js +2 -0
- package/dist/esm/parser/table-parser.d.ts +2 -5
- package/dist/esm/parser/update-parser.d.ts +5 -0
- package/dist/esm/parser/update-parser.js +2 -0
- package/dist/esm/parser/update-set-parser.d.ts +7 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +6 -5
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +29 -24
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
- package/dist/esm/query-builder/cte-builder.js +0 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/esm/query-builder/delete-query-builder.js +12 -78
- package/dist/esm/query-builder/function-module.d.ts +31 -4
- package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/esm/query-builder/insert-query-builder.js +197 -10
- package/dist/esm/query-builder/join-builder.js +0 -2
- package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/esm/query-builder/merge-query-builder.js +29 -8
- package/dist/esm/query-builder/on-conflict-builder.js +0 -4
- package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
- package/dist/esm/query-builder/order-by-interface.js +2 -0
- package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/esm/query-builder/order-by-item-builder.js +72 -0
- package/dist/esm/query-builder/over-builder.d.ts +43 -6
- package/dist/esm/query-builder/over-builder.js +8 -25
- package/dist/esm/query-builder/returning-interface.d.ts +20 -3
- package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
- package/dist/esm/query-builder/select-query-builder.js +26 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
- package/dist/esm/query-builder/update-query-builder.js +17 -15
- package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
- package/dist/esm/query-compiler/compiled-query.js +2 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/esm/query-compiler/default-query-compiler.js +97 -2
- package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
- package/dist/esm/query-creator.d.ts +23 -25
- package/dist/esm/query-creator.js +281 -9
- package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
- package/dist/esm/query-executor/default-query-executor.js +2 -2
- package/dist/esm/query-executor/query-executor-base.js +7 -25
- package/dist/esm/raw-builder/raw-builder.js +0 -3
- package/dist/esm/raw-builder/sql.d.ts +3 -3
- package/dist/esm/raw-builder/sql.js +1 -1
- package/dist/esm/schema/alter-column-builder.js +0 -3
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
- package/dist/esm/schema/alter-table-builder.d.ts +7 -3
- package/dist/esm/schema/alter-table-builder.js +22 -11
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/esm/schema/alter-table-executor.js +0 -2
- package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
- package/dist/esm/schema/check-constraint-builder.js +17 -0
- package/dist/esm/schema/column-definition-builder.js +0 -2
- package/dist/esm/schema/create-index-builder.js +1 -3
- package/dist/esm/schema/create-schema-builder.js +0 -2
- package/dist/esm/schema/create-table-builder.d.ts +5 -4
- package/dist/esm/schema/create-table-builder.js +10 -8
- package/dist/esm/schema/create-type-builder.d.ts +1 -1
- package/dist/esm/schema/create-type-builder.js +0 -2
- package/dist/esm/schema/create-view-builder.js +0 -2
- package/dist/esm/schema/drop-index-builder.js +0 -2
- package/dist/esm/schema/drop-schema-builder.js +0 -2
- package/dist/esm/schema/drop-table-builder.js +0 -2
- package/dist/esm/schema/drop-type-builder.js +0 -2
- package/dist/esm/schema/drop-view-builder.js +0 -2
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
- package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
- package/dist/esm/schema/schema.d.ts +14 -0
- package/dist/esm/schema/schema.js +21 -0
- package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/esm/schema/unique-constraint-builder.js +26 -5
- package/dist/esm/util/infer-result.d.ts +1 -1
- package/dist/esm/util/log.d.ts +1 -0
- package/dist/esm/util/log.js +3 -2
- package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
- package/dist/esm/util/provide-controlled-connection.js +22 -0
- package/outdated-typescript.d.ts +5 -0
- package/package.json +16 -2
- package/CONTRIBUTING.md +0 -168
- package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/cjs/util/prevent-await.d.ts +0 -1
- package/dist/cjs/util/prevent-await.js +0 -13
- package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/esm/util/prevent-await.d.ts +0 -1
- package/dist/esm/util/prevent-await.js +0 -11
package/README.md
CHANGED
|
@@ -54,7 +54,175 @@ Please visit our documentation site [kysely.dev](https://kysely.dev) to get star
|
|
|
54
54
|
API documentation hosted [here](https://kysely-org.github.io/kysely-apidoc/), but you can access the same
|
|
55
55
|
documentation in your IDE by hovering over a class/method/property/whatever.
|
|
56
56
|
|
|
57
|
-
#
|
|
57
|
+
# Core team
|
|
58
|
+
|
|
59
|
+
## Project leads
|
|
60
|
+
|
|
61
|
+
Responsible for project direction, API design, maintenance, code reviews, community support, documentation, and working on some of the most
|
|
62
|
+
impactful/challenging things.
|
|
63
|
+
|
|
64
|
+
<table>
|
|
65
|
+
<tbody>
|
|
66
|
+
<tr>
|
|
67
|
+
<td align="center">
|
|
68
|
+
<a href="https://github.com/koskimas">
|
|
69
|
+
<img src="https://avatars.githubusercontent.com/u/846508?v=4?s=100" width="100px;" alt=""/>
|
|
70
|
+
<br />
|
|
71
|
+
Sami Koskimäki
|
|
72
|
+
</a>
|
|
73
|
+
<br />
|
|
74
|
+
(the <a href="https://web.archive.org/web/20211203210043/https://www.jakso.me/blog/kysely-a-type-safe-sql-query-builder-for-typescript">author</a>)
|
|
75
|
+
</td>
|
|
76
|
+
<td align="center">
|
|
77
|
+
<a href="https://github.com/igalklebanov">
|
|
78
|
+
<img src="https://avatars.githubusercontent.com/u/14938291?v=4&s=100" width="100px;" alt=""/>
|
|
79
|
+
<br />
|
|
80
|
+
Igal Klebanov
|
|
81
|
+
</a>
|
|
82
|
+
<br />
|
|
83
|
+
(the <a href="https://github.com/kysely-org/kysely/pull/1414#issuecomment-2781281996">dynamo</a>)
|
|
84
|
+
</td>
|
|
85
|
+
</tr>
|
|
86
|
+
</tbody>
|
|
87
|
+
</table>
|
|
88
|
+
|
|
89
|
+
## Honorable mentions
|
|
90
|
+
|
|
91
|
+
People who had special impact on the project and its growth.
|
|
92
|
+
|
|
93
|
+
<table>
|
|
94
|
+
<tbody>
|
|
95
|
+
<tr>
|
|
96
|
+
<td align="center">
|
|
97
|
+
<a href="https://github.com/fhur">
|
|
98
|
+
<img src="https://avatars.githubusercontent.com/u/6452323?v=4&s=100" width="100px;" alt=""/>
|
|
99
|
+
<br />
|
|
100
|
+
Fernando Hurtado
|
|
101
|
+
</a>
|
|
102
|
+
<br />
|
|
103
|
+
(1st <a href="https://kysely.dev">docs</a>)
|
|
104
|
+
</td>
|
|
105
|
+
<td align="center">
|
|
106
|
+
<a href="https://github.com/wirekang">
|
|
107
|
+
<img src="https://avatars.githubusercontent.com/u/43294688?v=4&s=100" width="100px;" alt=""/>
|
|
108
|
+
<br />
|
|
109
|
+
Wirekang
|
|
110
|
+
</a>
|
|
111
|
+
<br />
|
|
112
|
+
(<a href="https://kyse.link">playground</a>)
|
|
113
|
+
</td>
|
|
114
|
+
<td align="center">
|
|
115
|
+
<a href="https://github.com/tgriesser">
|
|
116
|
+
<img src="https://avatars.githubusercontent.com/u/154748?v=4&s=100" width="100px;" alt=""/>
|
|
117
|
+
<br />
|
|
118
|
+
Tim Griesser
|
|
119
|
+
</a>
|
|
120
|
+
<br />
|
|
121
|
+
(<a href="https://knexjs.org/">Knex</a>)
|
|
122
|
+
</td>
|
|
123
|
+
</tr>
|
|
124
|
+
<tr>
|
|
125
|
+
<td align="center">
|
|
126
|
+
<a href="https://github.com/RobinBlomberg">
|
|
127
|
+
<img src="https://avatars.githubusercontent.com/u/20827397?v=4&s=100" width="100px;" alt=""/>
|
|
128
|
+
<br />
|
|
129
|
+
Robin Blomberg
|
|
130
|
+
</a>
|
|
131
|
+
<br />
|
|
132
|
+
(<a href="https://github.com/RobinBlomberg/kysely-codegen">codegen</a>)
|
|
133
|
+
</td>
|
|
134
|
+
<td align="center">
|
|
135
|
+
<a href="https://github.com/nexxeln">
|
|
136
|
+
<img src="https://avatars.githubusercontent.com/u/95541290?v=4&s=100" width="100px" alt="" />
|
|
137
|
+
<br />
|
|
138
|
+
Shoubhit Dash
|
|
139
|
+
</a>
|
|
140
|
+
<br />
|
|
141
|
+
(prisma <a href="https://www.nexxel.dev/blog/typesafe-database">idea</a>)
|
|
142
|
+
</td>
|
|
143
|
+
<td align="center">
|
|
144
|
+
<a href="https://github.com/nexxeln">
|
|
145
|
+
<img src="https://avatars.githubusercontent.com/u/3050355?v=4&s=100" width="100px" alt="" />
|
|
146
|
+
<br />
|
|
147
|
+
Valtýr Örn Kjartansson
|
|
148
|
+
</a>
|
|
149
|
+
<br />
|
|
150
|
+
(prisma <a href="https://github.com/valtyr/prisma-kysely">impl</a>)
|
|
151
|
+
</td>
|
|
152
|
+
</tr>
|
|
153
|
+
<tr>
|
|
154
|
+
<td align="center">
|
|
155
|
+
<a href="https://github.com/thdxr">
|
|
156
|
+
<img src="https://avatars.githubusercontent.com/u/826656?v=4&s=100" width="100px;" alt=""/>
|
|
157
|
+
<br />
|
|
158
|
+
Dax Raad
|
|
159
|
+
</a>
|
|
160
|
+
<br />
|
|
161
|
+
(early <a href="https://thdxr.com/post/serverless-relational-showdown">adopter</a>)
|
|
162
|
+
</td>
|
|
163
|
+
<td align="center">
|
|
164
|
+
<a href="https://github.com/t3dotgg">
|
|
165
|
+
<img src="https://avatars.githubusercontent.com/u/6751787?v=4&s=100" width="100px;" alt=""/>
|
|
166
|
+
<br />
|
|
167
|
+
Theo Browne
|
|
168
|
+
</a>
|
|
169
|
+
<br />
|
|
170
|
+
(early <a href="https://discord.com/channels/966627436387266600/988912020558602331/993220628154961930">promoter</a>)
|
|
171
|
+
</td>
|
|
172
|
+
<td align="center">
|
|
173
|
+
<a href="https://github.com/leerob">
|
|
174
|
+
<img src="https://avatars.githubusercontent.com/u/9113740?v=4&s=100" width="100px;" alt="" />
|
|
175
|
+
<br />
|
|
176
|
+
Lee Robinson
|
|
177
|
+
</a>
|
|
178
|
+
<br />
|
|
179
|
+
(early <a href="https://x.com/leerob/status/1576929372811849730">promoter</a>)
|
|
180
|
+
</td>
|
|
181
|
+
</tr>
|
|
182
|
+
<tr>
|
|
183
|
+
<td align="center">
|
|
184
|
+
<a href="https://github.com/ethanresnick">
|
|
185
|
+
<img src="https://avatars.githubusercontent.com/u/471894?v=4&s=100" width="100px" alt="" />
|
|
186
|
+
<br />
|
|
187
|
+
Ethan Resnick
|
|
188
|
+
</a>
|
|
189
|
+
<br />
|
|
190
|
+
(timely <a href="https://github.com/kysely-org/kysely/issues/494">feedback</a>)
|
|
191
|
+
</td>
|
|
192
|
+
<td align="center">
|
|
193
|
+
<a href="https://github.com/thetutlage">
|
|
194
|
+
<img src="https://avatars.githubusercontent.com/u/1706381?v=4&s=100" width="100px;" alt="" />
|
|
195
|
+
<br />
|
|
196
|
+
Harminder Virk
|
|
197
|
+
</a>
|
|
198
|
+
<br />
|
|
199
|
+
(dope <a href="https://github.com/thetutlage/meta/discussions/8">writeup</a>)
|
|
200
|
+
</td>
|
|
201
|
+
<td align="center">
|
|
202
|
+
<a href="https://github.com/elitan">
|
|
203
|
+
<img src="https://avatars.githubusercontent.com/u/331818?v=4&s=100" width="100px;" alt="" />
|
|
204
|
+
<br />
|
|
205
|
+
Johan Eliasson
|
|
206
|
+
</a>
|
|
207
|
+
<br />
|
|
208
|
+
(<a href="https://eliasson.me/articles/crafting-the-perfect-t3-stack-my-journey-with-kysely-atlas-and-clerk">promoter</a>/<a href="https://www.youtube.com/watch?v=u2s39dRIpCM">educator</a>)
|
|
209
|
+
</td>
|
|
210
|
+
</tr>
|
|
211
|
+
<!-- <tr>
|
|
212
|
+
<td align="center">
|
|
213
|
+
<a href="">
|
|
214
|
+
<img src="" width="100px;" alt="" />
|
|
215
|
+
<br />
|
|
216
|
+
Name
|
|
217
|
+
</a>
|
|
218
|
+
<br />
|
|
219
|
+
(contribution)
|
|
220
|
+
</td>
|
|
221
|
+
</tr> -->
|
|
222
|
+
</tbody>
|
|
223
|
+
</table>
|
|
224
|
+
|
|
225
|
+
## All contributors
|
|
58
226
|
|
|
59
227
|
<p align="center">
|
|
60
228
|
<a href="https://github.com/kysely-org/kysely/graphs/contributors">
|
package/deno.check.d.ts
CHANGED
|
@@ -10,13 +10,19 @@ import type {
|
|
|
10
10
|
} from './dist/esm'
|
|
11
11
|
|
|
12
12
|
export interface Database {
|
|
13
|
+
audit: AuditTable
|
|
13
14
|
person: PersonTable
|
|
15
|
+
person_backup: PersonTable
|
|
14
16
|
pet: PetTable
|
|
15
17
|
toy: ToyTable
|
|
16
18
|
wine: WineTable
|
|
17
19
|
wine_stock_change: WineStockChangeTable
|
|
18
20
|
}
|
|
19
21
|
|
|
22
|
+
interface AuditTable {
|
|
23
|
+
action: string
|
|
24
|
+
}
|
|
25
|
+
|
|
20
26
|
interface PersonTable {
|
|
21
27
|
id: Generated<number>
|
|
22
28
|
address: { city: string } | null
|
|
@@ -51,6 +57,7 @@ interface PetTable {
|
|
|
51
57
|
|
|
52
58
|
interface ToyTable {
|
|
53
59
|
id: Generated<number>
|
|
60
|
+
name: string
|
|
54
61
|
pet_id: number
|
|
55
62
|
price: number
|
|
56
63
|
}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
+
import { KyselyTypeError } from '../../util/type-error.js';
|
|
1
2
|
export interface MssqlDialectConfig {
|
|
3
|
+
/**
|
|
4
|
+
* When `true`, connections are reset to their initial states when released
|
|
5
|
+
* back to the pool, resulting in additional requests to the database.
|
|
6
|
+
*
|
|
7
|
+
* Defaults to `false`.
|
|
8
|
+
*/
|
|
9
|
+
resetConnectionsOnRelease?: boolean;
|
|
2
10
|
/**
|
|
3
11
|
* This dialect uses the `tarn` package to manage the connection pool to your
|
|
4
12
|
* database. To use it as a peer dependency and not bundle it with Kysely's code,
|
|
@@ -54,26 +62,30 @@ export interface MssqlDialectConfig {
|
|
|
54
62
|
* ```
|
|
55
63
|
*/
|
|
56
64
|
tedious: Tedious;
|
|
65
|
+
/**
|
|
66
|
+
* When `true`, connections are validated before being acquired from the pool,
|
|
67
|
+
* resulting in additional requests to the database.
|
|
68
|
+
*
|
|
69
|
+
* Defaults to `true`.
|
|
70
|
+
*/
|
|
71
|
+
validateConnections?: boolean;
|
|
57
72
|
}
|
|
58
73
|
export interface Tedious {
|
|
59
74
|
connectionFactory: () => TediousConnection | Promise<TediousConnection>;
|
|
60
75
|
ISOLATION_LEVEL: TediousIsolationLevel;
|
|
61
76
|
Request: TediousRequestClass;
|
|
62
|
-
TYPES: TediousTypes;
|
|
63
77
|
/**
|
|
64
|
-
*
|
|
65
|
-
* See {@link https://tediousjs.github.io/tedious/api-connection.html#function_reset | connection.reset}.
|
|
66
|
-
*
|
|
67
|
-
* Defaults to `true`.
|
|
78
|
+
* @deprecated use {@link MssqlDialectConfig.resetConnectionsOnRelease} instead.
|
|
68
79
|
*/
|
|
69
|
-
resetConnectionOnRelease?:
|
|
80
|
+
resetConnectionOnRelease?: KyselyTypeError<'deprecated: use `MssqlDialectConfig.resetConnectionsOnRelease` instead'>;
|
|
81
|
+
TYPES: TediousTypes;
|
|
70
82
|
}
|
|
71
83
|
export interface TediousConnection {
|
|
72
|
-
beginTransaction(callback: (
|
|
84
|
+
beginTransaction(callback: (err: Error | null | undefined, transactionDescriptor?: any) => void, name?: string | undefined, isolationLevel?: number | undefined): void;
|
|
73
85
|
cancel(): boolean;
|
|
74
86
|
close(): void;
|
|
75
|
-
commitTransaction(callback: (
|
|
76
|
-
connect(
|
|
87
|
+
commitTransaction(callback: (err: Error | null | undefined) => void, name?: string | undefined): void;
|
|
88
|
+
connect(connectListener: (err?: Error) => void): void;
|
|
77
89
|
execSql(request: TediousRequest): void;
|
|
78
90
|
off(event: 'error', listener: (error: unknown) => void): this;
|
|
79
91
|
off(event: string, listener: (...args: any[]) => void): this;
|
|
@@ -81,9 +93,9 @@ export interface TediousConnection {
|
|
|
81
93
|
on(event: string, listener: (...args: any[]) => void): this;
|
|
82
94
|
once(event: 'end', listener: () => void): this;
|
|
83
95
|
once(event: string, listener: (...args: any[]) => void): this;
|
|
84
|
-
reset(callback: (
|
|
85
|
-
rollbackTransaction(callback: (
|
|
86
|
-
saveTransaction(callback: (
|
|
96
|
+
reset(callback: (err: Error | null | undefined) => void): void;
|
|
97
|
+
rollbackTransaction(callback: (err: Error | null | undefined) => void, name?: string | undefined): void;
|
|
98
|
+
saveTransaction(callback: (err: Error | null | undefined) => void, name: string): void;
|
|
87
99
|
}
|
|
88
100
|
export type TediousIsolationLevel = Record<string, number>;
|
|
89
101
|
export interface TediousRequestClass {
|
|
@@ -132,11 +144,9 @@ export interface Tarn {
|
|
|
132
144
|
*/
|
|
133
145
|
options: Omit<TarnPoolOptions<any>, 'create' | 'destroy' | 'validate'> & {
|
|
134
146
|
/**
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
* Defaults to `true`.
|
|
147
|
+
* @deprecated use {@link MssqlDialectConfig.validateConnections} instead.
|
|
138
148
|
*/
|
|
139
|
-
validateConnections?:
|
|
149
|
+
validateConnections?: KyselyTypeError<'deprecated: use `MssqlDialectConfig.validateConnections` instead'>;
|
|
140
150
|
};
|
|
141
151
|
/**
|
|
142
152
|
* Tarn.js' Pool class.
|
|
@@ -2,7 +2,7 @@ import { DatabaseConnection, QueryResult } from '../../driver/database-connectio
|
|
|
2
2
|
import { Driver, TransactionSettings } from '../../driver/driver.js';
|
|
3
3
|
import { MssqlDialectConfig, Tedious, TediousConnection } from './mssql-dialect-config.js';
|
|
4
4
|
import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|
5
|
-
declare const
|
|
5
|
+
declare const PRIVATE_RESET_METHOD: unique symbol;
|
|
6
6
|
declare const PRIVATE_DESTROY_METHOD: unique symbol;
|
|
7
7
|
export declare class MssqlDriver implements Driver {
|
|
8
8
|
#private;
|
|
@@ -30,6 +30,8 @@ export declare class MssqlDriver implements Driver {
|
|
|
30
30
|
* Rolls back a transaction.
|
|
31
31
|
*/
|
|
32
32
|
rollbackTransaction(connection: MssqlConnection): Promise<void>;
|
|
33
|
+
savepoint(connection: MssqlConnection, savepointName: string): Promise<void>;
|
|
34
|
+
rollbackToSavepoint(connection: MssqlConnection, savepointName: string): Promise<void>;
|
|
33
35
|
/**
|
|
34
36
|
* Releases a connection back to the pool.
|
|
35
37
|
*/
|
|
@@ -46,10 +48,11 @@ declare class MssqlConnection implements DatabaseConnection {
|
|
|
46
48
|
commitTransaction(): Promise<void>;
|
|
47
49
|
connect(): Promise<this>;
|
|
48
50
|
executeQuery<O>(compiledQuery: CompiledQuery): Promise<QueryResult<O>>;
|
|
49
|
-
rollbackTransaction(): Promise<void>;
|
|
51
|
+
rollbackTransaction(savepointName?: string): Promise<void>;
|
|
52
|
+
savepoint(savepointName: string): Promise<void>;
|
|
50
53
|
streamQuery<O>(compiledQuery: CompiledQuery, chunkSize: number): AsyncIterableIterator<QueryResult<O>>;
|
|
51
54
|
validate(): Promise<boolean>;
|
|
52
|
-
[
|
|
55
|
+
[PRIVATE_RESET_METHOD](): Promise<void>;
|
|
53
56
|
[PRIVATE_DESTROY_METHOD](): Promise<void>;
|
|
54
57
|
}
|
|
55
58
|
export {};
|
|
@@ -6,15 +6,15 @@ const compiled_query_js_1 = require("../../query-compiler/compiled-query.js");
|
|
|
6
6
|
const stack_trace_utils_js_1 = require("../../util/stack-trace-utils.js");
|
|
7
7
|
const random_string_js_1 = require("../../util/random-string.js");
|
|
8
8
|
const deferred_js_1 = require("../../util/deferred.js");
|
|
9
|
-
const
|
|
9
|
+
const PRIVATE_RESET_METHOD = Symbol();
|
|
10
10
|
const PRIVATE_DESTROY_METHOD = Symbol();
|
|
11
11
|
class MssqlDriver {
|
|
12
12
|
#config;
|
|
13
13
|
#pool;
|
|
14
14
|
constructor(config) {
|
|
15
15
|
this.#config = (0, object_utils_js_1.freeze)({ ...config });
|
|
16
|
-
const { tarn, tedious } = this.#config;
|
|
17
|
-
const { validateConnections, ...poolOptions } = tarn.options;
|
|
16
|
+
const { tarn, tedious, validateConnections } = this.#config;
|
|
17
|
+
const { validateConnections: deprecatedValidateConnections, ...poolOptions } = tarn.options;
|
|
18
18
|
this.#pool = new tarn.Pool({
|
|
19
19
|
...poolOptions,
|
|
20
20
|
create: async () => {
|
|
@@ -26,7 +26,8 @@ class MssqlDriver {
|
|
|
26
26
|
},
|
|
27
27
|
// @ts-ignore `tarn` accepts a function that returns a promise here, but
|
|
28
28
|
// the types are not aligned and it type errors.
|
|
29
|
-
validate: validateConnections === false
|
|
29
|
+
validate: validateConnections === false ||
|
|
30
|
+
deprecatedValidateConnections === false
|
|
30
31
|
? undefined
|
|
31
32
|
: (connection) => connection.validate(),
|
|
32
33
|
});
|
|
@@ -46,8 +47,17 @@ class MssqlDriver {
|
|
|
46
47
|
async rollbackTransaction(connection) {
|
|
47
48
|
await connection.rollbackTransaction();
|
|
48
49
|
}
|
|
50
|
+
async savepoint(connection, savepointName) {
|
|
51
|
+
await connection.savepoint(savepointName);
|
|
52
|
+
}
|
|
53
|
+
async rollbackToSavepoint(connection, savepointName) {
|
|
54
|
+
await connection.rollbackTransaction(savepointName);
|
|
55
|
+
}
|
|
49
56
|
async releaseConnection(connection) {
|
|
50
|
-
|
|
57
|
+
if (this.#config.resetConnectionsOnRelease ||
|
|
58
|
+
this.#config.tedious.resetConnectionOnRelease) {
|
|
59
|
+
await connection[PRIVATE_RESET_METHOD]();
|
|
60
|
+
}
|
|
51
61
|
this.#pool.release(connection);
|
|
52
62
|
}
|
|
53
63
|
async destroy() {
|
|
@@ -118,13 +128,21 @@ class MssqlConnection {
|
|
|
118
128
|
throw (0, stack_trace_utils_js_1.extendStackTrace)(err, new Error());
|
|
119
129
|
}
|
|
120
130
|
}
|
|
121
|
-
async rollbackTransaction() {
|
|
131
|
+
async rollbackTransaction(savepointName) {
|
|
122
132
|
await new Promise((resolve, reject) => this.#connection.rollbackTransaction((error) => {
|
|
123
133
|
if (error)
|
|
124
134
|
reject(error);
|
|
125
135
|
else
|
|
126
136
|
resolve(undefined);
|
|
127
|
-
}));
|
|
137
|
+
}, savepointName));
|
|
138
|
+
}
|
|
139
|
+
async savepoint(savepointName) {
|
|
140
|
+
await new Promise((resolve, reject) => this.#connection.saveTransaction((error) => {
|
|
141
|
+
if (error)
|
|
142
|
+
reject(error);
|
|
143
|
+
else
|
|
144
|
+
resolve(undefined);
|
|
145
|
+
}, savepointName));
|
|
128
146
|
}
|
|
129
147
|
async *streamQuery(compiledQuery, chunkSize) {
|
|
130
148
|
if (!Number.isInteger(chunkSize) || chunkSize <= 0) {
|
|
@@ -193,18 +211,15 @@ class MssqlConnection {
|
|
|
193
211
|
}
|
|
194
212
|
});
|
|
195
213
|
}
|
|
196
|
-
async [
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
else
|
|
204
|
-
resolve(undefined);
|
|
205
|
-
});
|
|
214
|
+
async [PRIVATE_RESET_METHOD]() {
|
|
215
|
+
await new Promise((resolve, reject) => {
|
|
216
|
+
this.#connection.reset((error) => {
|
|
217
|
+
if (error)
|
|
218
|
+
reject(error);
|
|
219
|
+
else
|
|
220
|
+
resolve(undefined);
|
|
206
221
|
});
|
|
207
|
-
}
|
|
222
|
+
});
|
|
208
223
|
}
|
|
209
224
|
[PRIVATE_DESTROY_METHOD]() {
|
|
210
225
|
return new Promise((resolve) => {
|
|
@@ -221,7 +236,6 @@ class MssqlRequest {
|
|
|
221
236
|
#streamChunkSize;
|
|
222
237
|
#subscribers;
|
|
223
238
|
#tedious;
|
|
224
|
-
#error;
|
|
225
239
|
#rowCount;
|
|
226
240
|
constructor(props) {
|
|
227
241
|
const { compiledQuery, onDone, streamChunkSize, tedious } = props;
|
|
@@ -4,6 +4,7 @@ import { DropColumnNode } from '../../operation-node/drop-column-node.js';
|
|
|
4
4
|
import { OffsetNode } from '../../operation-node/offset-node.js';
|
|
5
5
|
import { MergeQueryNode } from '../../operation-node/merge-query-node.js';
|
|
6
6
|
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
7
|
+
import { CollateNode } from '../../operation-node/collate-node.js';
|
|
7
8
|
export declare class MssqlQueryCompiler extends DefaultQueryCompiler {
|
|
8
9
|
protected getCurrentParameterPlaceholder(): string;
|
|
9
10
|
protected visitOffset(node: OffsetNode): void;
|
|
@@ -11,5 +12,6 @@ export declare class MssqlQueryCompiler extends DefaultQueryCompiler {
|
|
|
11
12
|
protected visitAddColumn(node: AddColumnNode): void;
|
|
12
13
|
protected visitDropColumn(node: DropColumnNode): void;
|
|
13
14
|
protected visitMergeQuery(node: MergeQueryNode): void;
|
|
15
|
+
protected visitCollate(node: CollateNode): void;
|
|
14
16
|
protected announcesNewColumnDataType(): boolean;
|
|
15
17
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MssqlQueryCompiler = void 0;
|
|
4
4
|
const default_query_compiler_js_1 = require("../../query-compiler/default-query-compiler.js");
|
|
5
|
+
const COLLATION_CHAR_REGEX = /^[a-z0-9_]$/i;
|
|
5
6
|
class MssqlQueryCompiler extends default_query_compiler_js_1.DefaultQueryCompiler {
|
|
6
7
|
getCurrentParameterPlaceholder() {
|
|
7
8
|
return `@${this.numParameters}`;
|
|
@@ -65,6 +66,16 @@ class MssqlQueryCompiler extends default_query_compiler_js_1.DefaultQueryCompile
|
|
|
65
66
|
super.visitMergeQuery(node);
|
|
66
67
|
this.append(';');
|
|
67
68
|
}
|
|
69
|
+
visitCollate(node) {
|
|
70
|
+
this.append('collate ');
|
|
71
|
+
const { name } = node.collation;
|
|
72
|
+
for (const char of name) {
|
|
73
|
+
if (!COLLATION_CHAR_REGEX.test(char)) {
|
|
74
|
+
throw new Error(`Invalid collation: ${name}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
this.append(name);
|
|
78
|
+
}
|
|
68
79
|
announcesNewColumnDataType() {
|
|
69
80
|
return false;
|
|
70
81
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DatabaseConnection, QueryResult } from '../../driver/database-connection.js';
|
|
2
2
|
import { Driver, TransactionSettings } from '../../driver/driver.js';
|
|
3
3
|
import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|
4
|
+
import { QueryCompiler } from '../../query-compiler/query-compiler.js';
|
|
4
5
|
import { MysqlDialectConfig, MysqlPoolConnection } from './mysql-dialect-config.js';
|
|
5
6
|
declare const PRIVATE_RELEASE_METHOD: unique symbol;
|
|
6
7
|
export declare class MysqlDriver implements Driver {
|
|
@@ -29,6 +30,9 @@ export declare class MysqlDriver implements Driver {
|
|
|
29
30
|
* Rolls back a transaction.
|
|
30
31
|
*/
|
|
31
32
|
rollbackTransaction(connection: DatabaseConnection): Promise<void>;
|
|
33
|
+
savepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
34
|
+
rollbackToSavepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
35
|
+
releaseSavepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
32
36
|
/**
|
|
33
37
|
* Releases a connection back to the pool.
|
|
34
38
|
*/
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MysqlDriver = void 0;
|
|
4
|
+
const savepoint_parser_js_1 = require("../../parser/savepoint-parser.js");
|
|
4
5
|
const compiled_query_js_1 = require("../../query-compiler/compiled-query.js");
|
|
5
6
|
const object_utils_js_1 = require("../../util/object-utils.js");
|
|
7
|
+
const query_id_js_1 = require("../../util/query-id.js");
|
|
6
8
|
const stack_trace_utils_js_1 = require("../../util/stack-trace-utils.js");
|
|
7
9
|
const PRIVATE_RELEASE_METHOD = Symbol();
|
|
8
10
|
class MysqlDriver {
|
|
@@ -48,9 +50,17 @@ class MysqlDriver {
|
|
|
48
50
|
});
|
|
49
51
|
}
|
|
50
52
|
async beginTransaction(connection, settings) {
|
|
51
|
-
if (settings.isolationLevel) {
|
|
53
|
+
if (settings.isolationLevel || settings.accessMode) {
|
|
54
|
+
const parts = [];
|
|
55
|
+
if (settings.isolationLevel) {
|
|
56
|
+
parts.push(`isolation level ${settings.isolationLevel}`);
|
|
57
|
+
}
|
|
58
|
+
if (settings.accessMode) {
|
|
59
|
+
parts.push(settings.accessMode);
|
|
60
|
+
}
|
|
61
|
+
const sql = `set transaction ${parts.join(', ')}`;
|
|
52
62
|
// On MySQL this sets the isolation level of the next transaction.
|
|
53
|
-
await connection.executeQuery(compiled_query_js_1.CompiledQuery.raw(
|
|
63
|
+
await connection.executeQuery(compiled_query_js_1.CompiledQuery.raw(sql));
|
|
54
64
|
}
|
|
55
65
|
await connection.executeQuery(compiled_query_js_1.CompiledQuery.raw('begin'));
|
|
56
66
|
}
|
|
@@ -60,6 +70,15 @@ class MysqlDriver {
|
|
|
60
70
|
async rollbackTransaction(connection) {
|
|
61
71
|
await connection.executeQuery(compiled_query_js_1.CompiledQuery.raw('rollback'));
|
|
62
72
|
}
|
|
73
|
+
async savepoint(connection, savepointName, compileQuery) {
|
|
74
|
+
await connection.executeQuery(compileQuery((0, savepoint_parser_js_1.parseSavepointCommand)('savepoint', savepointName), (0, query_id_js_1.createQueryId)()));
|
|
75
|
+
}
|
|
76
|
+
async rollbackToSavepoint(connection, savepointName, compileQuery) {
|
|
77
|
+
await connection.executeQuery(compileQuery((0, savepoint_parser_js_1.parseSavepointCommand)('rollback to', savepointName), (0, query_id_js_1.createQueryId)()));
|
|
78
|
+
}
|
|
79
|
+
async releaseSavepoint(connection, savepointName, compileQuery) {
|
|
80
|
+
await connection.executeQuery(compileQuery((0, savepoint_parser_js_1.parseSavepointCommand)('release savepoint', savepointName), (0, query_id_js_1.createQueryId)()));
|
|
81
|
+
}
|
|
63
82
|
async releaseConnection(connection) {
|
|
64
83
|
connection[PRIVATE_RELEASE_METHOD]();
|
|
65
84
|
}
|
|
@@ -90,22 +109,18 @@ class MysqlConnection {
|
|
|
90
109
|
const result = await this.#executeQuery(compiledQuery);
|
|
91
110
|
if (isOkPacket(result)) {
|
|
92
111
|
const { insertId, affectedRows, changedRows } = result;
|
|
93
|
-
const numAffectedRows = affectedRows !== undefined && affectedRows !== null
|
|
94
|
-
? BigInt(affectedRows)
|
|
95
|
-
: undefined;
|
|
96
|
-
const numChangedRows = changedRows !== undefined && changedRows !== null
|
|
97
|
-
? BigInt(changedRows)
|
|
98
|
-
: undefined;
|
|
99
112
|
return {
|
|
100
113
|
insertId: insertId !== undefined &&
|
|
101
114
|
insertId !== null &&
|
|
102
115
|
insertId.toString() !== '0'
|
|
103
116
|
? BigInt(insertId)
|
|
104
117
|
: undefined,
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
numChangedRows
|
|
118
|
+
numAffectedRows: affectedRows !== undefined && affectedRows !== null
|
|
119
|
+
? BigInt(affectedRows)
|
|
120
|
+
: undefined,
|
|
121
|
+
numChangedRows: changedRows !== undefined && changedRows !== null
|
|
122
|
+
? BigInt(changedRows)
|
|
123
|
+
: undefined,
|
|
109
124
|
rows: [],
|
|
110
125
|
};
|
|
111
126
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DatabaseConnection, QueryResult } from '../../driver/database-connection.js';
|
|
2
2
|
import { Driver, TransactionSettings } from '../../driver/driver.js';
|
|
3
3
|
import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|
4
|
+
import { QueryCompiler } from '../../query-compiler/query-compiler.js';
|
|
4
5
|
import { PostgresCursorConstructor, PostgresDialectConfig, PostgresPoolClient } from './postgres-dialect-config.js';
|
|
5
6
|
declare const PRIVATE_RELEASE_METHOD: unique symbol;
|
|
6
7
|
export declare class PostgresDriver implements Driver {
|
|
@@ -29,6 +30,9 @@ export declare class PostgresDriver implements Driver {
|
|
|
29
30
|
* Rolls back a transaction.
|
|
30
31
|
*/
|
|
31
32
|
rollbackTransaction(connection: DatabaseConnection): Promise<void>;
|
|
33
|
+
savepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
34
|
+
rollbackToSavepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
35
|
+
releaseSavepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
32
36
|
/**
|
|
33
37
|
* Releases a connection back to the pool.
|
|
34
38
|
*/
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PostgresDriver = void 0;
|
|
4
|
+
const savepoint_parser_js_1 = require("../../parser/savepoint-parser.js");
|
|
4
5
|
const compiled_query_js_1 = require("../../query-compiler/compiled-query.js");
|
|
5
6
|
const object_utils_js_1 = require("../../util/object-utils.js");
|
|
7
|
+
const query_id_js_1 = require("../../util/query-id.js");
|
|
6
8
|
const stack_trace_utils_js_1 = require("../../util/stack-trace-utils.js");
|
|
7
9
|
const PRIVATE_RELEASE_METHOD = Symbol();
|
|
8
10
|
class PostgresDriver {
|
|
@@ -38,8 +40,15 @@ class PostgresDriver {
|
|
|
38
40
|
return connection;
|
|
39
41
|
}
|
|
40
42
|
async beginTransaction(connection, settings) {
|
|
41
|
-
if (settings.isolationLevel) {
|
|
42
|
-
|
|
43
|
+
if (settings.isolationLevel || settings.accessMode) {
|
|
44
|
+
let sql = 'start transaction';
|
|
45
|
+
if (settings.isolationLevel) {
|
|
46
|
+
sql += ` isolation level ${settings.isolationLevel}`;
|
|
47
|
+
}
|
|
48
|
+
if (settings.accessMode) {
|
|
49
|
+
sql += ` ${settings.accessMode}`;
|
|
50
|
+
}
|
|
51
|
+
await connection.executeQuery(compiled_query_js_1.CompiledQuery.raw(sql));
|
|
43
52
|
}
|
|
44
53
|
else {
|
|
45
54
|
await connection.executeQuery(compiled_query_js_1.CompiledQuery.raw('begin'));
|
|
@@ -51,6 +60,15 @@ class PostgresDriver {
|
|
|
51
60
|
async rollbackTransaction(connection) {
|
|
52
61
|
await connection.executeQuery(compiled_query_js_1.CompiledQuery.raw('rollback'));
|
|
53
62
|
}
|
|
63
|
+
async savepoint(connection, savepointName, compileQuery) {
|
|
64
|
+
await connection.executeQuery(compileQuery((0, savepoint_parser_js_1.parseSavepointCommand)('savepoint', savepointName), (0, query_id_js_1.createQueryId)()));
|
|
65
|
+
}
|
|
66
|
+
async rollbackToSavepoint(connection, savepointName, compileQuery) {
|
|
67
|
+
await connection.executeQuery(compileQuery((0, savepoint_parser_js_1.parseSavepointCommand)('rollback to', savepointName), (0, query_id_js_1.createQueryId)()));
|
|
68
|
+
}
|
|
69
|
+
async releaseSavepoint(connection, savepointName, compileQuery) {
|
|
70
|
+
await connection.executeQuery(compileQuery((0, savepoint_parser_js_1.parseSavepointCommand)('release', savepointName), (0, query_id_js_1.createQueryId)()));
|
|
71
|
+
}
|
|
54
72
|
async releaseConnection(connection) {
|
|
55
73
|
connection[PRIVATE_RELEASE_METHOD]();
|
|
56
74
|
}
|
|
@@ -72,23 +90,15 @@ class PostgresConnection {
|
|
|
72
90
|
}
|
|
73
91
|
async executeQuery(compiledQuery) {
|
|
74
92
|
try {
|
|
75
|
-
const
|
|
76
|
-
...compiledQuery.parameters,
|
|
77
|
-
]);
|
|
78
|
-
if (result.command === 'INSERT' ||
|
|
79
|
-
result.command === 'UPDATE' ||
|
|
80
|
-
result.command === 'DELETE' ||
|
|
81
|
-
result.command === 'MERGE') {
|
|
82
|
-
const numAffectedRows = BigInt(result.rowCount);
|
|
83
|
-
return {
|
|
84
|
-
// TODO: remove.
|
|
85
|
-
numUpdatedOrDeletedRows: numAffectedRows,
|
|
86
|
-
numAffectedRows,
|
|
87
|
-
rows: result.rows ?? [],
|
|
88
|
-
};
|
|
89
|
-
}
|
|
93
|
+
const { command, rowCount, rows } = await this.#client.query(compiledQuery.sql, [...compiledQuery.parameters]);
|
|
90
94
|
return {
|
|
91
|
-
|
|
95
|
+
numAffectedRows: command === 'INSERT' ||
|
|
96
|
+
command === 'UPDATE' ||
|
|
97
|
+
command === 'DELETE' ||
|
|
98
|
+
command === 'MERGE'
|
|
99
|
+
? BigInt(rowCount)
|
|
100
|
+
: undefined,
|
|
101
|
+
rows: rows ?? [],
|
|
92
102
|
};
|
|
93
103
|
}
|
|
94
104
|
catch (err) {
|