kysely 0.27.6 → 0.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -1
- package/deno.check.d.ts +7 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
- package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/cjs/driver/database-connection.d.ts +0 -4
- package/dist/cjs/driver/driver.d.ts +17 -0
- package/dist/cjs/driver/driver.js +13 -1
- package/dist/cjs/driver/dummy-driver.d.ts +3 -0
- package/dist/cjs/driver/dummy-driver.js +9 -0
- package/dist/cjs/driver/runtime-driver.d.ts +4 -0
- package/dist/cjs/driver/runtime-driver.js +43 -3
- package/dist/cjs/expression/expression-builder.d.ts +7 -10
- package/dist/cjs/helpers/postgres.d.ts +48 -0
- package/dist/cjs/helpers/postgres.js +50 -0
- package/dist/cjs/index.d.ts +13 -2
- package/dist/cjs/index.js +13 -2
- package/dist/cjs/kysely.d.ts +339 -2
- package/dist/cjs/kysely.js +465 -11
- package/dist/cjs/migration/migrator.d.ts +8 -0
- package/dist/cjs/migration/migrator.js +1 -1
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
- package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
- package/dist/cjs/operation-node/collate-node.d.ts +13 -0
- package/dist/cjs/operation-node/collate-node.js +19 -0
- package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/delete-query-node.js +11 -15
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
- package/dist/cjs/operation-node/or-action-node.js +18 -0
- package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/cjs/operation-node/order-by-item-node.js +6 -0
- package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/cjs/operation-node/query-node.d.ts +7 -0
- package/dist/cjs/operation-node/query-node.js +15 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
- package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/select-query-node.js +11 -15
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/update-query-node.js +5 -2
- package/dist/cjs/parser/collate-parser.d.ts +1 -0
- package/dist/cjs/parser/collate-parser.js +2 -0
- package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
- package/dist/cjs/parser/delete-from-parser.js +2 -0
- package/dist/cjs/parser/join-parser.d.ts +1 -1
- package/dist/cjs/parser/join-parser.js +7 -1
- package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
- package/dist/cjs/parser/merge-into-parser.js +2 -0
- package/dist/cjs/parser/order-by-parser.d.ts +18 -5
- package/dist/cjs/parser/order-by-parser.js +24 -14
- package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
- package/dist/cjs/parser/savepoint-parser.js +11 -0
- package/dist/cjs/parser/select-from-parser.d.ts +4 -0
- package/dist/cjs/parser/select-from-parser.js +2 -0
- package/dist/cjs/parser/table-parser.d.ts +2 -5
- package/dist/cjs/parser/update-parser.d.ts +5 -0
- package/dist/cjs/parser/update-parser.js +2 -0
- package/dist/cjs/parser/update-set-parser.d.ts +7 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +6 -5
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +29 -24
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
- package/dist/cjs/query-builder/cte-builder.js +0 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/cjs/query-builder/delete-query-builder.js +12 -78
- package/dist/cjs/query-builder/function-module.d.ts +31 -4
- package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/cjs/query-builder/insert-query-builder.js +197 -10
- package/dist/cjs/query-builder/join-builder.js +0 -2
- package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/cjs/query-builder/merge-query-builder.js +28 -7
- package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
- package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
- package/dist/cjs/query-builder/order-by-interface.js +2 -0
- package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
- package/dist/cjs/query-builder/over-builder.d.ts +43 -6
- package/dist/cjs/query-builder/over-builder.js +8 -25
- package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
- package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
- package/dist/cjs/query-builder/select-query-builder.js +26 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
- package/dist/cjs/query-builder/update-query-builder.js +17 -15
- package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
- package/dist/cjs/query-compiler/compiled-query.js +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
- package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
- package/dist/cjs/query-creator.d.ts +23 -25
- package/dist/cjs/query-creator.js +280 -8
- package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
- package/dist/cjs/query-executor/default-query-executor.js +2 -2
- package/dist/cjs/query-executor/query-executor-base.js +7 -25
- package/dist/cjs/raw-builder/raw-builder.js +0 -3
- package/dist/cjs/raw-builder/sql.d.ts +3 -3
- package/dist/cjs/raw-builder/sql.js +1 -1
- package/dist/cjs/schema/alter-column-builder.js +0 -3
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
- package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
- package/dist/cjs/schema/alter-table-builder.js +21 -10
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/cjs/schema/alter-table-executor.js +0 -2
- package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
- package/dist/cjs/schema/check-constraint-builder.js +20 -0
- package/dist/cjs/schema/column-definition-builder.js +0 -2
- package/dist/cjs/schema/create-index-builder.js +1 -3
- package/dist/cjs/schema/create-schema-builder.js +0 -2
- package/dist/cjs/schema/create-table-builder.d.ts +5 -4
- package/dist/cjs/schema/create-table-builder.js +9 -7
- package/dist/cjs/schema/create-type-builder.d.ts +1 -1
- package/dist/cjs/schema/create-type-builder.js +0 -2
- package/dist/cjs/schema/create-view-builder.js +0 -2
- package/dist/cjs/schema/drop-index-builder.js +0 -2
- package/dist/cjs/schema/drop-schema-builder.js +0 -2
- package/dist/cjs/schema/drop-table-builder.js +0 -2
- package/dist/cjs/schema/drop-type-builder.js +0 -2
- package/dist/cjs/schema/drop-view-builder.js +0 -2
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
- package/dist/cjs/schema/schema.d.ts +14 -0
- package/dist/cjs/schema/schema.js +21 -0
- package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/cjs/schema/unique-constraint-builder.js +26 -5
- package/dist/cjs/util/infer-result.d.ts +1 -1
- package/dist/cjs/util/log.d.ts +1 -0
- package/dist/cjs/util/log.js +3 -2
- package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
- package/dist/cjs/util/provide-controlled-connection.js +24 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
- package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/esm/driver/database-connection.d.ts +0 -4
- package/dist/esm/driver/driver.d.ts +17 -0
- package/dist/esm/driver/driver.js +11 -0
- package/dist/esm/driver/dummy-driver.d.ts +3 -0
- package/dist/esm/driver/dummy-driver.js +9 -0
- package/dist/esm/driver/runtime-driver.d.ts +4 -0
- package/dist/esm/driver/runtime-driver.js +43 -3
- package/dist/esm/expression/expression-builder.d.ts +7 -10
- package/dist/esm/helpers/postgres.d.ts +48 -0
- package/dist/esm/helpers/postgres.js +49 -0
- package/dist/esm/index.d.ts +13 -2
- package/dist/esm/index.js +11 -1
- package/dist/esm/kysely.d.ts +339 -2
- package/dist/esm/kysely.js +461 -10
- package/dist/esm/migration/migrator.d.ts +8 -0
- package/dist/esm/migration/migrator.js +1 -1
- package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/esm/operation-node/aggregate-function-node.js +4 -3
- package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
- package/dist/esm/operation-node/collate-node.d.ts +13 -0
- package/dist/esm/operation-node/collate-node.js +17 -0
- package/dist/esm/operation-node/constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
- package/dist/esm/operation-node/delete-query-node.js +11 -15
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/esm/operation-node/operation-node-transformer.js +352 -312
- package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/esm/operation-node/operation-node-visitor.js +4 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/or-action-node.d.ts +12 -0
- package/dist/esm/operation-node/or-action-node.js +16 -0
- package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/esm/operation-node/order-by-item-node.js +6 -0
- package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/esm/operation-node/query-node.d.ts +7 -0
- package/dist/esm/operation-node/query-node.js +15 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
- package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/esm/operation-node/rename-constraint-node.js +18 -0
- package/dist/esm/operation-node/select-query-node.d.ts +8 -2
- package/dist/esm/operation-node/select-query-node.js +11 -15
- package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/update-query-node.js +5 -2
- package/dist/esm/parser/collate-parser.d.ts +1 -0
- package/dist/esm/parser/collate-parser.js +2 -0
- package/dist/esm/parser/delete-from-parser.d.ts +5 -0
- package/dist/esm/parser/delete-from-parser.js +2 -0
- package/dist/esm/parser/join-parser.d.ts +1 -1
- package/dist/esm/parser/join-parser.js +7 -1
- package/dist/esm/parser/merge-into-parser.d.ts +5 -0
- package/dist/esm/parser/merge-into-parser.js +2 -0
- package/dist/esm/parser/order-by-parser.d.ts +18 -5
- package/dist/esm/parser/order-by-parser.js +27 -17
- package/dist/esm/parser/savepoint-parser.d.ts +4 -0
- package/dist/esm/parser/savepoint-parser.js +9 -0
- package/dist/esm/parser/select-from-parser.d.ts +4 -0
- package/dist/esm/parser/select-from-parser.js +2 -0
- package/dist/esm/parser/table-parser.d.ts +2 -5
- package/dist/esm/parser/update-parser.d.ts +5 -0
- package/dist/esm/parser/update-parser.js +2 -0
- package/dist/esm/parser/update-set-parser.d.ts +7 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +6 -5
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +29 -24
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
- package/dist/esm/query-builder/cte-builder.js +0 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/esm/query-builder/delete-query-builder.js +12 -78
- package/dist/esm/query-builder/function-module.d.ts +31 -4
- package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/esm/query-builder/insert-query-builder.js +197 -10
- package/dist/esm/query-builder/join-builder.js +0 -2
- package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/esm/query-builder/merge-query-builder.js +29 -8
- package/dist/esm/query-builder/on-conflict-builder.js +0 -4
- package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
- package/dist/esm/query-builder/order-by-interface.js +2 -0
- package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/esm/query-builder/order-by-item-builder.js +72 -0
- package/dist/esm/query-builder/over-builder.d.ts +43 -6
- package/dist/esm/query-builder/over-builder.js +8 -25
- package/dist/esm/query-builder/returning-interface.d.ts +20 -3
- package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
- package/dist/esm/query-builder/select-query-builder.js +26 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
- package/dist/esm/query-builder/update-query-builder.js +17 -15
- package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
- package/dist/esm/query-compiler/compiled-query.js +2 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/esm/query-compiler/default-query-compiler.js +97 -2
- package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
- package/dist/esm/query-creator.d.ts +23 -25
- package/dist/esm/query-creator.js +281 -9
- package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
- package/dist/esm/query-executor/default-query-executor.js +2 -2
- package/dist/esm/query-executor/query-executor-base.js +7 -25
- package/dist/esm/raw-builder/raw-builder.js +0 -3
- package/dist/esm/raw-builder/sql.d.ts +3 -3
- package/dist/esm/raw-builder/sql.js +1 -1
- package/dist/esm/schema/alter-column-builder.js +0 -3
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
- package/dist/esm/schema/alter-table-builder.d.ts +7 -3
- package/dist/esm/schema/alter-table-builder.js +22 -11
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/esm/schema/alter-table-executor.js +0 -2
- package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
- package/dist/esm/schema/check-constraint-builder.js +17 -0
- package/dist/esm/schema/column-definition-builder.js +0 -2
- package/dist/esm/schema/create-index-builder.js +1 -3
- package/dist/esm/schema/create-schema-builder.js +0 -2
- package/dist/esm/schema/create-table-builder.d.ts +5 -4
- package/dist/esm/schema/create-table-builder.js +10 -8
- package/dist/esm/schema/create-type-builder.d.ts +1 -1
- package/dist/esm/schema/create-type-builder.js +0 -2
- package/dist/esm/schema/create-view-builder.js +0 -2
- package/dist/esm/schema/drop-index-builder.js +0 -2
- package/dist/esm/schema/drop-schema-builder.js +0 -2
- package/dist/esm/schema/drop-table-builder.js +0 -2
- package/dist/esm/schema/drop-type-builder.js +0 -2
- package/dist/esm/schema/drop-view-builder.js +0 -2
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
- package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
- package/dist/esm/schema/schema.d.ts +14 -0
- package/dist/esm/schema/schema.js +21 -0
- package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/esm/schema/unique-constraint-builder.js +26 -5
- package/dist/esm/util/infer-result.d.ts +1 -1
- package/dist/esm/util/log.d.ts +1 -0
- package/dist/esm/util/log.js +3 -2
- package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
- package/dist/esm/util/provide-controlled-connection.js +22 -0
- package/outdated-typescript.d.ts +5 -0
- package/package.json +16 -2
- package/CONTRIBUTING.md +0 -168
- package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/cjs/util/prevent-await.d.ts +0 -1
- package/dist/cjs/util/prevent-await.js +0 -13
- package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/esm/util/prevent-await.d.ts +0 -1
- package/dist/esm/util/prevent-await.js +0 -11
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RefreshMaterializedViewBuilder = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
const refresh_materialized_view_node_js_1 = require("../operation-node/refresh-materialized-view-node.js");
|
|
6
|
+
class RefreshMaterializedViewBuilder {
|
|
7
|
+
#props;
|
|
8
|
+
constructor(props) {
|
|
9
|
+
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Adds the "concurrently" modifier.
|
|
13
|
+
*
|
|
14
|
+
* Use this to refresh the view without locking out concurrent selects on the materialized view.
|
|
15
|
+
*
|
|
16
|
+
* WARNING!
|
|
17
|
+
* This cannot be used with the "with no data" modifier.
|
|
18
|
+
*/
|
|
19
|
+
concurrently() {
|
|
20
|
+
return new RefreshMaterializedViewBuilder({
|
|
21
|
+
...this.#props,
|
|
22
|
+
node: refresh_materialized_view_node_js_1.RefreshMaterializedViewNode.cloneWith(this.#props.node, {
|
|
23
|
+
concurrently: true,
|
|
24
|
+
withNoData: false,
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Adds the "with data" modifier.
|
|
30
|
+
*
|
|
31
|
+
* If specified (or defaults) the backing query is executed to provide the new data, and the materialized view is left in a scannable state
|
|
32
|
+
*/
|
|
33
|
+
withData() {
|
|
34
|
+
return new RefreshMaterializedViewBuilder({
|
|
35
|
+
...this.#props,
|
|
36
|
+
node: refresh_materialized_view_node_js_1.RefreshMaterializedViewNode.cloneWith(this.#props.node, {
|
|
37
|
+
withNoData: false,
|
|
38
|
+
}),
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Adds the "with no data" modifier.
|
|
43
|
+
*
|
|
44
|
+
* If specified, no new data is generated and the materialized view is left in an unscannable state.
|
|
45
|
+
*
|
|
46
|
+
* WARNING!
|
|
47
|
+
* This cannot be used with the "concurrently" modifier.
|
|
48
|
+
*/
|
|
49
|
+
withNoData() {
|
|
50
|
+
return new RefreshMaterializedViewBuilder({
|
|
51
|
+
...this.#props,
|
|
52
|
+
node: refresh_materialized_view_node_js_1.RefreshMaterializedViewNode.cloneWith(this.#props.node, {
|
|
53
|
+
withNoData: true,
|
|
54
|
+
concurrently: false,
|
|
55
|
+
}),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
60
|
+
* what the provided function returns.
|
|
61
|
+
*/
|
|
62
|
+
$call(func) {
|
|
63
|
+
return func(this);
|
|
64
|
+
}
|
|
65
|
+
toOperationNode() {
|
|
66
|
+
return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|
67
|
+
}
|
|
68
|
+
compile() {
|
|
69
|
+
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
70
|
+
}
|
|
71
|
+
async execute() {
|
|
72
|
+
await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.RefreshMaterializedViewBuilder = RefreshMaterializedViewBuilder;
|
|
@@ -11,6 +11,7 @@ import { DropViewBuilder } from './drop-view-builder.js';
|
|
|
11
11
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
12
12
|
import { CreateTypeBuilder } from './create-type-builder.js';
|
|
13
13
|
import { DropTypeBuilder } from './drop-type-builder.js';
|
|
14
|
+
import { RefreshMaterializedViewBuilder } from './refresh-materialized-view-builder.js';
|
|
14
15
|
/**
|
|
15
16
|
* Provides methods for building database schema.
|
|
16
17
|
*/
|
|
@@ -158,6 +159,19 @@ export declare class SchemaModule {
|
|
|
158
159
|
* ```
|
|
159
160
|
*/
|
|
160
161
|
createView(viewName: string): CreateViewBuilder;
|
|
162
|
+
/**
|
|
163
|
+
* Refresh a materialized view.
|
|
164
|
+
*
|
|
165
|
+
* ### Examples
|
|
166
|
+
*
|
|
167
|
+
* ```ts
|
|
168
|
+
* await db.schema
|
|
169
|
+
* .refreshMaterializedView('my_view')
|
|
170
|
+
* .concurrently()
|
|
171
|
+
* .execute()
|
|
172
|
+
* ```
|
|
173
|
+
*/
|
|
174
|
+
refreshMaterializedView(viewName: string): RefreshMaterializedViewBuilder;
|
|
161
175
|
/**
|
|
162
176
|
* Drop a view.
|
|
163
177
|
*
|
|
@@ -27,6 +27,8 @@ const drop_type_builder_js_1 = require("./drop-type-builder.js");
|
|
|
27
27
|
const create_type_node_js_1 = require("../operation-node/create-type-node.js");
|
|
28
28
|
const drop_type_node_js_1 = require("../operation-node/drop-type-node.js");
|
|
29
29
|
const identifier_parser_js_1 = require("../parser/identifier-parser.js");
|
|
30
|
+
const refresh_materialized_view_builder_js_1 = require("./refresh-materialized-view-builder.js");
|
|
31
|
+
const refresh_materialized_view_node_js_1 = require("../operation-node/refresh-materialized-view-node.js");
|
|
30
32
|
/**
|
|
31
33
|
* Provides methods for building database schema.
|
|
32
34
|
*/
|
|
@@ -224,6 +226,25 @@ class SchemaModule {
|
|
|
224
226
|
node: create_view_node_js_1.CreateViewNode.create(viewName),
|
|
225
227
|
});
|
|
226
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Refresh a materialized view.
|
|
231
|
+
*
|
|
232
|
+
* ### Examples
|
|
233
|
+
*
|
|
234
|
+
* ```ts
|
|
235
|
+
* await db.schema
|
|
236
|
+
* .refreshMaterializedView('my_view')
|
|
237
|
+
* .concurrently()
|
|
238
|
+
* .execute()
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
refreshMaterializedView(viewName) {
|
|
242
|
+
return new refresh_materialized_view_builder_js_1.RefreshMaterializedViewBuilder({
|
|
243
|
+
queryId: (0, query_id_js_1.createQueryId)(),
|
|
244
|
+
executor: this.#executor,
|
|
245
|
+
node: refresh_materialized_view_node_js_1.RefreshMaterializedViewNode.create(viewName),
|
|
246
|
+
});
|
|
247
|
+
}
|
|
227
248
|
/**
|
|
228
249
|
* Drop a view.
|
|
229
250
|
*
|
|
@@ -3,12 +3,21 @@ import { UniqueConstraintNode } from '../operation-node/unique-constraint-node.j
|
|
|
3
3
|
export declare class UniqueConstraintNodeBuilder implements OperationNodeSource {
|
|
4
4
|
#private;
|
|
5
5
|
constructor(node: UniqueConstraintNode);
|
|
6
|
-
toOperationNode(): UniqueConstraintNode;
|
|
7
6
|
/**
|
|
8
7
|
* Adds `nulls not distinct` to the unique constraint definition
|
|
9
8
|
*
|
|
10
9
|
* Supported by PostgreSQL dialect only
|
|
11
10
|
*/
|
|
12
11
|
nullsNotDistinct(): UniqueConstraintNodeBuilder;
|
|
12
|
+
deferrable(): UniqueConstraintNodeBuilder;
|
|
13
|
+
notDeferrable(): UniqueConstraintNodeBuilder;
|
|
14
|
+
initiallyDeferred(): UniqueConstraintNodeBuilder;
|
|
15
|
+
initiallyImmediate(): UniqueConstraintNodeBuilder;
|
|
16
|
+
/**
|
|
17
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
18
|
+
* what the provided function returns.
|
|
19
|
+
*/
|
|
20
|
+
$call<T>(func: (qb: this) => T): T;
|
|
21
|
+
toOperationNode(): UniqueConstraintNode;
|
|
13
22
|
}
|
|
14
23
|
export type UniqueConstraintNodeBuilderCallback = (builder: UniqueConstraintNodeBuilder) => UniqueConstraintNodeBuilder;
|
|
@@ -2,15 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UniqueConstraintNodeBuilder = void 0;
|
|
4
4
|
const unique_constraint_node_js_1 = require("../operation-node/unique-constraint-node.js");
|
|
5
|
-
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
6
5
|
class UniqueConstraintNodeBuilder {
|
|
7
6
|
#node;
|
|
8
7
|
constructor(node) {
|
|
9
8
|
this.#node = node;
|
|
10
9
|
}
|
|
11
|
-
toOperationNode() {
|
|
12
|
-
return this.#node;
|
|
13
|
-
}
|
|
14
10
|
/**
|
|
15
11
|
* Adds `nulls not distinct` to the unique constraint definition
|
|
16
12
|
*
|
|
@@ -19,6 +15,31 @@ class UniqueConstraintNodeBuilder {
|
|
|
19
15
|
nullsNotDistinct() {
|
|
20
16
|
return new UniqueConstraintNodeBuilder(unique_constraint_node_js_1.UniqueConstraintNode.cloneWith(this.#node, { nullsNotDistinct: true }));
|
|
21
17
|
}
|
|
18
|
+
deferrable() {
|
|
19
|
+
return new UniqueConstraintNodeBuilder(unique_constraint_node_js_1.UniqueConstraintNode.cloneWith(this.#node, { deferrable: true }));
|
|
20
|
+
}
|
|
21
|
+
notDeferrable() {
|
|
22
|
+
return new UniqueConstraintNodeBuilder(unique_constraint_node_js_1.UniqueConstraintNode.cloneWith(this.#node, { deferrable: false }));
|
|
23
|
+
}
|
|
24
|
+
initiallyDeferred() {
|
|
25
|
+
return new UniqueConstraintNodeBuilder(unique_constraint_node_js_1.UniqueConstraintNode.cloneWith(this.#node, {
|
|
26
|
+
initiallyDeferred: true,
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
initiallyImmediate() {
|
|
30
|
+
return new UniqueConstraintNodeBuilder(unique_constraint_node_js_1.UniqueConstraintNode.cloneWith(this.#node, {
|
|
31
|
+
initiallyDeferred: false,
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
36
|
+
* what the provided function returns.
|
|
37
|
+
*/
|
|
38
|
+
$call(func) {
|
|
39
|
+
return func(this);
|
|
40
|
+
}
|
|
41
|
+
toOperationNode() {
|
|
42
|
+
return this.#node;
|
|
43
|
+
}
|
|
22
44
|
}
|
|
23
45
|
exports.UniqueConstraintNodeBuilder = UniqueConstraintNodeBuilder;
|
|
24
|
-
(0, prevent_await_js_1.preventAwait)(UniqueConstraintNodeBuilder, "don't await UniqueConstraintNodeBuilder instances directly.");
|
|
@@ -44,5 +44,5 @@ import { Simplify } from './type-utils.js';
|
|
|
44
44
|
* ```
|
|
45
45
|
*/
|
|
46
46
|
export type InferResult<C extends Compilable<any> | CompiledQuery<any>> = C extends Compilable<infer O> ? ResolveResult<O> : C extends CompiledQuery<infer O> ? ResolveResult<O> : never;
|
|
47
|
-
type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult | MergeResult ? O : Simplify<O>[];
|
|
47
|
+
type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult | MergeResult ? O[] : Simplify<O>[];
|
|
48
48
|
export {};
|
package/dist/cjs/util/log.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export declare const LOG_LEVELS: readonly ["query", "error"];
|
|
|
4
4
|
export type LogLevel = ArrayItemType<typeof LOG_LEVELS>;
|
|
5
5
|
export interface QueryLogEvent {
|
|
6
6
|
readonly level: 'query';
|
|
7
|
+
readonly isStream?: boolean;
|
|
7
8
|
readonly query: CompiledQuery;
|
|
8
9
|
readonly queryDurationMillis: number;
|
|
9
10
|
}
|
package/dist/cjs/util/log.js
CHANGED
|
@@ -39,8 +39,9 @@ class Log {
|
|
|
39
39
|
exports.Log = Log;
|
|
40
40
|
function defaultLogger(event) {
|
|
41
41
|
if (event.level === 'query') {
|
|
42
|
-
|
|
43
|
-
console.log(
|
|
42
|
+
const prefix = `kysely:query:${event.isStream ? 'stream:' : ''}`;
|
|
43
|
+
console.log(`${prefix} ${event.query.sql}`);
|
|
44
|
+
console.log(`${prefix} duration: ${event.queryDurationMillis.toFixed(1)}ms`);
|
|
44
45
|
}
|
|
45
46
|
else if (event.level === 'error') {
|
|
46
47
|
if (event.error instanceof Error) {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ConnectionProvider } from '../driver/connection-provider.js';
|
|
2
|
+
import { DatabaseConnection } from '../driver/database-connection.js';
|
|
3
|
+
export interface ControlledConnection {
|
|
4
|
+
readonly connection: DatabaseConnection;
|
|
5
|
+
readonly release: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function provideControlledConnection(connectionProvider: ConnectionProvider): Promise<ControlledConnection>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.provideControlledConnection = provideControlledConnection;
|
|
4
|
+
const deferred_js_1 = require("./deferred.js");
|
|
5
|
+
const object_utils_js_1 = require("./object-utils.js");
|
|
6
|
+
async function provideControlledConnection(connectionProvider) {
|
|
7
|
+
const connectionDefer = new deferred_js_1.Deferred();
|
|
8
|
+
const connectionReleaseDefer = new deferred_js_1.Deferred();
|
|
9
|
+
connectionProvider
|
|
10
|
+
.provideConnection(async (connection) => {
|
|
11
|
+
connectionDefer.resolve(connection);
|
|
12
|
+
return await connectionReleaseDefer.promise;
|
|
13
|
+
})
|
|
14
|
+
.catch((ex) => connectionDefer.reject(ex));
|
|
15
|
+
// Create composite of the connection and the release method instead of
|
|
16
|
+
// modifying the connection or creating a new nesting `DatabaseConnection`.
|
|
17
|
+
// This way we don't accidentally override any methods of 3rd party
|
|
18
|
+
// connections and don't return wrapped connections to drivers that
|
|
19
|
+
// expect a certain specific connection class.
|
|
20
|
+
return (0, object_utils_js_1.freeze)({
|
|
21
|
+
connection: await connectionDefer.promise,
|
|
22
|
+
release: connectionReleaseDefer.resolve,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
@@ -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 {};
|
|
@@ -4,15 +4,15 @@ import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|
|
4
4
|
import { extendStackTrace } from '../../util/stack-trace-utils.js';
|
|
5
5
|
import { randomString } from '../../util/random-string.js';
|
|
6
6
|
import { Deferred } from '../../util/deferred.js';
|
|
7
|
-
const
|
|
7
|
+
const PRIVATE_RESET_METHOD = Symbol();
|
|
8
8
|
const PRIVATE_DESTROY_METHOD = Symbol();
|
|
9
9
|
export class MssqlDriver {
|
|
10
10
|
#config;
|
|
11
11
|
#pool;
|
|
12
12
|
constructor(config) {
|
|
13
13
|
this.#config = freeze({ ...config });
|
|
14
|
-
const { tarn, tedious } = this.#config;
|
|
15
|
-
const { validateConnections, ...poolOptions } = tarn.options;
|
|
14
|
+
const { tarn, tedious, validateConnections } = this.#config;
|
|
15
|
+
const { validateConnections: deprecatedValidateConnections, ...poolOptions } = tarn.options;
|
|
16
16
|
this.#pool = new tarn.Pool({
|
|
17
17
|
...poolOptions,
|
|
18
18
|
create: async () => {
|
|
@@ -24,7 +24,8 @@ export class MssqlDriver {
|
|
|
24
24
|
},
|
|
25
25
|
// @ts-ignore `tarn` accepts a function that returns a promise here, but
|
|
26
26
|
// the types are not aligned and it type errors.
|
|
27
|
-
validate: validateConnections === false
|
|
27
|
+
validate: validateConnections === false ||
|
|
28
|
+
deprecatedValidateConnections === false
|
|
28
29
|
? undefined
|
|
29
30
|
: (connection) => connection.validate(),
|
|
30
31
|
});
|
|
@@ -44,8 +45,17 @@ export class MssqlDriver {
|
|
|
44
45
|
async rollbackTransaction(connection) {
|
|
45
46
|
await connection.rollbackTransaction();
|
|
46
47
|
}
|
|
48
|
+
async savepoint(connection, savepointName) {
|
|
49
|
+
await connection.savepoint(savepointName);
|
|
50
|
+
}
|
|
51
|
+
async rollbackToSavepoint(connection, savepointName) {
|
|
52
|
+
await connection.rollbackTransaction(savepointName);
|
|
53
|
+
}
|
|
47
54
|
async releaseConnection(connection) {
|
|
48
|
-
|
|
55
|
+
if (this.#config.resetConnectionsOnRelease ||
|
|
56
|
+
this.#config.tedious.resetConnectionOnRelease) {
|
|
57
|
+
await connection[PRIVATE_RESET_METHOD]();
|
|
58
|
+
}
|
|
49
59
|
this.#pool.release(connection);
|
|
50
60
|
}
|
|
51
61
|
async destroy() {
|
|
@@ -115,13 +125,21 @@ class MssqlConnection {
|
|
|
115
125
|
throw extendStackTrace(err, new Error());
|
|
116
126
|
}
|
|
117
127
|
}
|
|
118
|
-
async rollbackTransaction() {
|
|
128
|
+
async rollbackTransaction(savepointName) {
|
|
119
129
|
await new Promise((resolve, reject) => this.#connection.rollbackTransaction((error) => {
|
|
120
130
|
if (error)
|
|
121
131
|
reject(error);
|
|
122
132
|
else
|
|
123
133
|
resolve(undefined);
|
|
124
|
-
}));
|
|
134
|
+
}, savepointName));
|
|
135
|
+
}
|
|
136
|
+
async savepoint(savepointName) {
|
|
137
|
+
await new Promise((resolve, reject) => this.#connection.saveTransaction((error) => {
|
|
138
|
+
if (error)
|
|
139
|
+
reject(error);
|
|
140
|
+
else
|
|
141
|
+
resolve(undefined);
|
|
142
|
+
}, savepointName));
|
|
125
143
|
}
|
|
126
144
|
async *streamQuery(compiledQuery, chunkSize) {
|
|
127
145
|
if (!Number.isInteger(chunkSize) || chunkSize <= 0) {
|
|
@@ -190,18 +208,15 @@ class MssqlConnection {
|
|
|
190
208
|
}
|
|
191
209
|
});
|
|
192
210
|
}
|
|
193
|
-
async [
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
else
|
|
201
|
-
resolve(undefined);
|
|
202
|
-
});
|
|
211
|
+
async [PRIVATE_RESET_METHOD]() {
|
|
212
|
+
await new Promise((resolve, reject) => {
|
|
213
|
+
this.#connection.reset((error) => {
|
|
214
|
+
if (error)
|
|
215
|
+
reject(error);
|
|
216
|
+
else
|
|
217
|
+
resolve(undefined);
|
|
203
218
|
});
|
|
204
|
-
}
|
|
219
|
+
});
|
|
205
220
|
}
|
|
206
221
|
[PRIVATE_DESTROY_METHOD]() {
|
|
207
222
|
return new Promise((resolve) => {
|
|
@@ -218,7 +233,6 @@ class MssqlRequest {
|
|
|
218
233
|
#streamChunkSize;
|
|
219
234
|
#subscribers;
|
|
220
235
|
#tedious;
|
|
221
|
-
#error;
|
|
222
236
|
#rowCount;
|
|
223
237
|
constructor(props) {
|
|
224
238
|
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
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/// <reference types="./mssql-query-compiler.d.ts" />
|
|
2
2
|
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
3
|
+
const COLLATION_CHAR_REGEX = /^[a-z0-9_]$/i;
|
|
3
4
|
export class MssqlQueryCompiler extends DefaultQueryCompiler {
|
|
4
5
|
getCurrentParameterPlaceholder() {
|
|
5
6
|
return `@${this.numParameters}`;
|
|
@@ -63,6 +64,16 @@ export class MssqlQueryCompiler extends DefaultQueryCompiler {
|
|
|
63
64
|
super.visitMergeQuery(node);
|
|
64
65
|
this.append(';');
|
|
65
66
|
}
|
|
67
|
+
visitCollate(node) {
|
|
68
|
+
this.append('collate ');
|
|
69
|
+
const { name } = node.collation;
|
|
70
|
+
for (const char of name) {
|
|
71
|
+
if (!COLLATION_CHAR_REGEX.test(char)) {
|
|
72
|
+
throw new Error(`Invalid collation: ${name}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
this.append(name);
|
|
76
|
+
}
|
|
66
77
|
announcesNewColumnDataType() {
|
|
67
78
|
return false;
|
|
68
79
|
}
|
|
@@ -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,6 +1,8 @@
|
|
|
1
1
|
/// <reference types="./mysql-driver.d.ts" />
|
|
2
|
+
import { parseSavepointCommand } from '../../parser/savepoint-parser.js';
|
|
2
3
|
import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|
3
4
|
import { isFunction, isObject, freeze } from '../../util/object-utils.js';
|
|
5
|
+
import { createQueryId } from '../../util/query-id.js';
|
|
4
6
|
import { extendStackTrace } from '../../util/stack-trace-utils.js';
|
|
5
7
|
const PRIVATE_RELEASE_METHOD = Symbol();
|
|
6
8
|
export class MysqlDriver {
|
|
@@ -46,9 +48,17 @@ export class MysqlDriver {
|
|
|
46
48
|
});
|
|
47
49
|
}
|
|
48
50
|
async beginTransaction(connection, settings) {
|
|
49
|
-
if (settings.isolationLevel) {
|
|
51
|
+
if (settings.isolationLevel || settings.accessMode) {
|
|
52
|
+
const parts = [];
|
|
53
|
+
if (settings.isolationLevel) {
|
|
54
|
+
parts.push(`isolation level ${settings.isolationLevel}`);
|
|
55
|
+
}
|
|
56
|
+
if (settings.accessMode) {
|
|
57
|
+
parts.push(settings.accessMode);
|
|
58
|
+
}
|
|
59
|
+
const sql = `set transaction ${parts.join(', ')}`;
|
|
50
60
|
// On MySQL this sets the isolation level of the next transaction.
|
|
51
|
-
await connection.executeQuery(CompiledQuery.raw(
|
|
61
|
+
await connection.executeQuery(CompiledQuery.raw(sql));
|
|
52
62
|
}
|
|
53
63
|
await connection.executeQuery(CompiledQuery.raw('begin'));
|
|
54
64
|
}
|
|
@@ -58,6 +68,15 @@ export class MysqlDriver {
|
|
|
58
68
|
async rollbackTransaction(connection) {
|
|
59
69
|
await connection.executeQuery(CompiledQuery.raw('rollback'));
|
|
60
70
|
}
|
|
71
|
+
async savepoint(connection, savepointName, compileQuery) {
|
|
72
|
+
await connection.executeQuery(compileQuery(parseSavepointCommand('savepoint', savepointName), createQueryId()));
|
|
73
|
+
}
|
|
74
|
+
async rollbackToSavepoint(connection, savepointName, compileQuery) {
|
|
75
|
+
await connection.executeQuery(compileQuery(parseSavepointCommand('rollback to', savepointName), createQueryId()));
|
|
76
|
+
}
|
|
77
|
+
async releaseSavepoint(connection, savepointName, compileQuery) {
|
|
78
|
+
await connection.executeQuery(compileQuery(parseSavepointCommand('release savepoint', savepointName), createQueryId()));
|
|
79
|
+
}
|
|
61
80
|
async releaseConnection(connection) {
|
|
62
81
|
connection[PRIVATE_RELEASE_METHOD]();
|
|
63
82
|
}
|
|
@@ -87,22 +106,18 @@ class MysqlConnection {
|
|
|
87
106
|
const result = await this.#executeQuery(compiledQuery);
|
|
88
107
|
if (isOkPacket(result)) {
|
|
89
108
|
const { insertId, affectedRows, changedRows } = result;
|
|
90
|
-
const numAffectedRows = affectedRows !== undefined && affectedRows !== null
|
|
91
|
-
? BigInt(affectedRows)
|
|
92
|
-
: undefined;
|
|
93
|
-
const numChangedRows = changedRows !== undefined && changedRows !== null
|
|
94
|
-
? BigInt(changedRows)
|
|
95
|
-
: undefined;
|
|
96
109
|
return {
|
|
97
110
|
insertId: insertId !== undefined &&
|
|
98
111
|
insertId !== null &&
|
|
99
112
|
insertId.toString() !== '0'
|
|
100
113
|
? BigInt(insertId)
|
|
101
114
|
: undefined,
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
numChangedRows
|
|
115
|
+
numAffectedRows: affectedRows !== undefined && affectedRows !== null
|
|
116
|
+
? BigInt(affectedRows)
|
|
117
|
+
: undefined,
|
|
118
|
+
numChangedRows: changedRows !== undefined && changedRows !== null
|
|
119
|
+
? BigInt(changedRows)
|
|
120
|
+
: undefined,
|
|
106
121
|
rows: [],
|
|
107
122
|
};
|
|
108
123
|
}
|
|
@@ -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
|
*/
|