kysely 0.27.5 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CODE_OF_CONDUCT.md +183 -0
- package/FUNDING.md +25 -0
- package/README.md +182 -3
- package/deno.check.d.ts +7 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
- package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +66 -44
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/cjs/driver/database-connection.d.ts +0 -4
- package/dist/cjs/driver/driver.d.ts +17 -0
- package/dist/cjs/driver/driver.js +13 -1
- package/dist/cjs/driver/dummy-driver.d.ts +3 -0
- package/dist/cjs/driver/dummy-driver.js +9 -0
- package/dist/cjs/driver/runtime-driver.d.ts +4 -0
- package/dist/cjs/driver/runtime-driver.js +43 -3
- package/dist/cjs/expression/expression-builder.d.ts +9 -10
- package/dist/cjs/helpers/postgres.d.ts +48 -0
- package/dist/cjs/helpers/postgres.js +50 -0
- package/dist/cjs/index.d.ts +13 -2
- package/dist/cjs/index.js +13 -2
- package/dist/cjs/kysely.d.ts +339 -2
- package/dist/cjs/kysely.js +465 -11
- package/dist/cjs/migration/migrator.d.ts +16 -1
- package/dist/cjs/migration/migrator.js +14 -4
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
- package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
- package/dist/cjs/operation-node/collate-node.d.ts +13 -0
- package/dist/cjs/operation-node/collate-node.js +19 -0
- package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/delete-query-node.js +11 -15
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
- package/dist/cjs/operation-node/or-action-node.js +18 -0
- package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/cjs/operation-node/order-by-item-node.js +6 -0
- package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/cjs/operation-node/query-node.d.ts +7 -0
- package/dist/cjs/operation-node/query-node.js +15 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
- package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/select-query-node.js +11 -15
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/update-query-node.js +5 -2
- package/dist/cjs/parser/collate-parser.d.ts +1 -0
- package/dist/cjs/parser/collate-parser.js +2 -0
- package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
- package/dist/cjs/parser/delete-from-parser.js +2 -0
- package/dist/cjs/parser/insert-values-parser.js +3 -1
- package/dist/cjs/parser/join-parser.d.ts +1 -1
- package/dist/cjs/parser/join-parser.js +7 -1
- package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
- package/dist/cjs/parser/merge-into-parser.js +2 -0
- package/dist/cjs/parser/order-by-parser.d.ts +18 -5
- package/dist/cjs/parser/order-by-parser.js +24 -14
- package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
- package/dist/cjs/parser/savepoint-parser.js +11 -0
- package/dist/cjs/parser/select-from-parser.d.ts +4 -0
- package/dist/cjs/parser/select-from-parser.js +2 -0
- package/dist/cjs/parser/table-parser.d.ts +2 -5
- package/dist/cjs/parser/update-parser.d.ts +5 -0
- package/dist/cjs/parser/update-parser.js +2 -0
- package/dist/cjs/parser/update-set-parser.d.ts +7 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/cjs/plugin/camel-case/camel-case.js +4 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +8 -3
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +45 -14
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
- package/dist/cjs/query-builder/cte-builder.js +0 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/cjs/query-builder/delete-query-builder.js +12 -78
- package/dist/cjs/query-builder/function-module.d.ts +31 -4
- package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/cjs/query-builder/insert-query-builder.js +197 -10
- package/dist/cjs/query-builder/join-builder.js +0 -2
- package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/cjs/query-builder/merge-query-builder.js +28 -7
- package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
- package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
- package/dist/cjs/query-builder/order-by-interface.js +2 -0
- package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
- package/dist/cjs/query-builder/over-builder.d.ts +43 -6
- package/dist/cjs/query-builder/over-builder.js +8 -25
- package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
- package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
- package/dist/cjs/query-builder/select-query-builder.js +26 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
- package/dist/cjs/query-builder/update-query-builder.js +17 -15
- package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
- package/dist/cjs/query-compiler/compiled-query.js +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
- package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
- package/dist/cjs/query-creator.d.ts +23 -25
- package/dist/cjs/query-creator.js +280 -8
- package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
- package/dist/cjs/query-executor/default-query-executor.js +2 -2
- package/dist/cjs/query-executor/query-executor-base.js +7 -25
- package/dist/cjs/raw-builder/raw-builder.js +0 -3
- package/dist/cjs/raw-builder/sql.d.ts +4 -4
- package/dist/cjs/raw-builder/sql.js +1 -1
- package/dist/cjs/schema/alter-column-builder.js +0 -3
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
- package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
- package/dist/cjs/schema/alter-table-builder.js +21 -10
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/cjs/schema/alter-table-executor.js +0 -2
- package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
- package/dist/cjs/schema/check-constraint-builder.js +20 -0
- package/dist/cjs/schema/column-definition-builder.js +0 -2
- package/dist/cjs/schema/create-index-builder.js +1 -3
- package/dist/cjs/schema/create-schema-builder.js +0 -2
- package/dist/cjs/schema/create-table-builder.d.ts +5 -4
- package/dist/cjs/schema/create-table-builder.js +9 -7
- package/dist/cjs/schema/create-type-builder.d.ts +1 -1
- package/dist/cjs/schema/create-type-builder.js +0 -2
- package/dist/cjs/schema/create-view-builder.js +0 -2
- package/dist/cjs/schema/drop-index-builder.js +0 -2
- package/dist/cjs/schema/drop-schema-builder.js +0 -2
- package/dist/cjs/schema/drop-table-builder.js +0 -2
- package/dist/cjs/schema/drop-type-builder.js +0 -2
- package/dist/cjs/schema/drop-view-builder.js +0 -2
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
- package/dist/cjs/schema/schema.d.ts +14 -0
- package/dist/cjs/schema/schema.js +21 -0
- package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/cjs/schema/unique-constraint-builder.js +26 -5
- package/dist/cjs/util/infer-result.d.ts +1 -1
- package/dist/cjs/util/log.d.ts +1 -0
- package/dist/cjs/util/log.js +3 -2
- package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
- package/dist/cjs/util/provide-controlled-connection.js +24 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
- package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +66 -44
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/esm/driver/database-connection.d.ts +0 -4
- package/dist/esm/driver/driver.d.ts +17 -0
- package/dist/esm/driver/driver.js +11 -0
- package/dist/esm/driver/dummy-driver.d.ts +3 -0
- package/dist/esm/driver/dummy-driver.js +9 -0
- package/dist/esm/driver/runtime-driver.d.ts +4 -0
- package/dist/esm/driver/runtime-driver.js +43 -3
- package/dist/esm/expression/expression-builder.d.ts +9 -10
- package/dist/esm/helpers/postgres.d.ts +48 -0
- package/dist/esm/helpers/postgres.js +49 -0
- package/dist/esm/index.d.ts +13 -2
- package/dist/esm/index.js +11 -1
- package/dist/esm/kysely.d.ts +339 -2
- package/dist/esm/kysely.js +461 -10
- package/dist/esm/migration/migrator.d.ts +16 -1
- package/dist/esm/migration/migrator.js +14 -4
- package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/esm/operation-node/aggregate-function-node.js +4 -3
- package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
- package/dist/esm/operation-node/collate-node.d.ts +13 -0
- package/dist/esm/operation-node/collate-node.js +17 -0
- package/dist/esm/operation-node/constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
- package/dist/esm/operation-node/delete-query-node.js +11 -15
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/esm/operation-node/operation-node-transformer.js +352 -312
- package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/esm/operation-node/operation-node-visitor.js +4 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/or-action-node.d.ts +12 -0
- package/dist/esm/operation-node/or-action-node.js +16 -0
- package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/esm/operation-node/order-by-item-node.js +6 -0
- package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/esm/operation-node/query-node.d.ts +7 -0
- package/dist/esm/operation-node/query-node.js +15 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
- package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/esm/operation-node/rename-constraint-node.js +18 -0
- package/dist/esm/operation-node/select-query-node.d.ts +8 -2
- package/dist/esm/operation-node/select-query-node.js +11 -15
- package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/update-query-node.js +5 -2
- package/dist/esm/parser/collate-parser.d.ts +1 -0
- package/dist/esm/parser/collate-parser.js +2 -0
- package/dist/esm/parser/delete-from-parser.d.ts +5 -0
- package/dist/esm/parser/delete-from-parser.js +2 -0
- package/dist/esm/parser/insert-values-parser.js +3 -1
- package/dist/esm/parser/join-parser.d.ts +1 -1
- package/dist/esm/parser/join-parser.js +7 -1
- package/dist/esm/parser/merge-into-parser.d.ts +5 -0
- package/dist/esm/parser/merge-into-parser.js +2 -0
- package/dist/esm/parser/order-by-parser.d.ts +18 -5
- package/dist/esm/parser/order-by-parser.js +27 -17
- package/dist/esm/parser/savepoint-parser.d.ts +4 -0
- package/dist/esm/parser/savepoint-parser.js +9 -0
- package/dist/esm/parser/select-from-parser.d.ts +4 -0
- package/dist/esm/parser/select-from-parser.js +2 -0
- package/dist/esm/parser/table-parser.d.ts +2 -5
- package/dist/esm/parser/update-parser.d.ts +5 -0
- package/dist/esm/parser/update-parser.js +2 -0
- package/dist/esm/parser/update-set-parser.d.ts +7 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/esm/plugin/camel-case/camel-case.js +4 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +8 -3
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +45 -14
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
- package/dist/esm/query-builder/cte-builder.js +0 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/esm/query-builder/delete-query-builder.js +12 -78
- package/dist/esm/query-builder/function-module.d.ts +31 -4
- package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/esm/query-builder/insert-query-builder.js +197 -10
- package/dist/esm/query-builder/join-builder.js +0 -2
- package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/esm/query-builder/merge-query-builder.js +29 -8
- package/dist/esm/query-builder/on-conflict-builder.js +0 -4
- package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
- package/dist/esm/query-builder/order-by-interface.js +2 -0
- package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/esm/query-builder/order-by-item-builder.js +72 -0
- package/dist/esm/query-builder/over-builder.d.ts +43 -6
- package/dist/esm/query-builder/over-builder.js +8 -25
- package/dist/esm/query-builder/returning-interface.d.ts +20 -3
- package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
- package/dist/esm/query-builder/select-query-builder.js +26 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
- package/dist/esm/query-builder/update-query-builder.js +17 -15
- package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
- package/dist/esm/query-compiler/compiled-query.js +2 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/esm/query-compiler/default-query-compiler.js +97 -2
- package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
- package/dist/esm/query-creator.d.ts +23 -25
- package/dist/esm/query-creator.js +281 -9
- package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
- package/dist/esm/query-executor/default-query-executor.js +2 -2
- package/dist/esm/query-executor/query-executor-base.js +7 -25
- package/dist/esm/raw-builder/raw-builder.js +0 -3
- package/dist/esm/raw-builder/sql.d.ts +4 -4
- package/dist/esm/raw-builder/sql.js +1 -1
- package/dist/esm/schema/alter-column-builder.js +0 -3
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
- package/dist/esm/schema/alter-table-builder.d.ts +7 -3
- package/dist/esm/schema/alter-table-builder.js +22 -11
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/esm/schema/alter-table-executor.js +0 -2
- package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
- package/dist/esm/schema/check-constraint-builder.js +17 -0
- package/dist/esm/schema/column-definition-builder.js +0 -2
- package/dist/esm/schema/create-index-builder.js +1 -3
- package/dist/esm/schema/create-schema-builder.js +0 -2
- package/dist/esm/schema/create-table-builder.d.ts +5 -4
- package/dist/esm/schema/create-table-builder.js +10 -8
- package/dist/esm/schema/create-type-builder.d.ts +1 -1
- package/dist/esm/schema/create-type-builder.js +0 -2
- package/dist/esm/schema/create-view-builder.js +0 -2
- package/dist/esm/schema/drop-index-builder.js +0 -2
- package/dist/esm/schema/drop-schema-builder.js +0 -2
- package/dist/esm/schema/drop-table-builder.js +0 -2
- package/dist/esm/schema/drop-type-builder.js +0 -2
- package/dist/esm/schema/drop-view-builder.js +0 -2
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
- package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
- package/dist/esm/schema/schema.d.ts +14 -0
- package/dist/esm/schema/schema.js +21 -0
- package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/esm/schema/unique-constraint-builder.js +26 -5
- package/dist/esm/util/infer-result.d.ts +1 -1
- package/dist/esm/util/log.d.ts +1 -0
- package/dist/esm/util/log.js +3 -2
- package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
- package/dist/esm/util/provide-controlled-connection.js +22 -0
- package/outdated-typescript.d.ts +5 -0
- package/package.json +16 -2
- package/CONTRIBUTING.md +0 -70
- package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/cjs/util/prevent-await.d.ts +0 -1
- package/dist/cjs/util/prevent-await.js +0 -13
- package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/esm/util/prevent-await.d.ts +0 -1
- package/dist/esm/util/prevent-await.js +0 -11
|
@@ -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) {
|
|
@@ -39,23 +39,13 @@ class PostgresIntrospector {
|
|
|
39
39
|
'typ.typname as type',
|
|
40
40
|
'dtns.nspname as type_schema',
|
|
41
41
|
(0, sql_js_1.sql) `col_description(a.attrelid, a.attnum)`.as('column_description'),
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
.whereRef('relnamespace', '=', 'c.relnamespace')
|
|
49
|
-
.where('relkind', '=', 'S')
|
|
50
|
-
.where('relname', '=', (0, sql_js_1.sql) `c.relname || '_' || a.attname || '_seq'`)
|
|
51
|
-
.as('auto_incrementing'),
|
|
42
|
+
(0, sql_js_1.sql) `pg_get_serial_sequence(ns.nspname || '.' || c.relname, a.attname)`.as('auto_incrementing'),
|
|
43
|
+
])
|
|
44
|
+
.where('c.relkind', 'in', [
|
|
45
|
+
'r' /*regular table*/,
|
|
46
|
+
'v' /*view*/,
|
|
47
|
+
'p' /*partitioned table*/,
|
|
52
48
|
])
|
|
53
|
-
// r == normal table
|
|
54
|
-
.where((eb) => eb.or([
|
|
55
|
-
eb('c.relkind', '=', 'r'),
|
|
56
|
-
eb('c.relkind', '=', 'v'),
|
|
57
|
-
eb('c.relkind', '=', 'p'),
|
|
58
|
-
]))
|
|
59
49
|
.where('ns.nspname', '!~', '^pg_')
|
|
60
50
|
.where('ns.nspname', '!=', 'information_schema')
|
|
61
51
|
// No system columns
|
|
@@ -95,7 +85,7 @@ class PostgresIntrospector {
|
|
|
95
85
|
dataType: it.type,
|
|
96
86
|
dataTypeSchema: it.type_schema,
|
|
97
87
|
isNullable: !it.not_null,
|
|
98
|
-
isAutoIncrementing:
|
|
88
|
+
isAutoIncrementing: it.auto_incrementing !== null,
|
|
99
89
|
hasDefaultValue: it.has_default,
|
|
100
90
|
comment: it.column_description ?? undefined,
|
|
101
91
|
}));
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DatabaseConnection } from '../../driver/database-connection.js';
|
|
2
2
|
import { Driver } from '../../driver/driver.js';
|
|
3
|
+
import { QueryCompiler } from '../../query-compiler/query-compiler.js';
|
|
3
4
|
import { SqliteDialectConfig } from './sqlite-dialect-config.js';
|
|
4
5
|
export declare class SqliteDriver implements Driver {
|
|
5
6
|
#private;
|
|
@@ -27,6 +28,9 @@ export declare class SqliteDriver implements Driver {
|
|
|
27
28
|
* Rolls back a transaction.
|
|
28
29
|
*/
|
|
29
30
|
rollbackTransaction(connection: DatabaseConnection): Promise<void>;
|
|
31
|
+
savepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
32
|
+
rollbackToSavepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
33
|
+
releaseSavepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
30
34
|
/**
|
|
31
35
|
* Releases a connection back to the pool.
|
|
32
36
|
*/
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SqliteDriver = void 0;
|
|
4
4
|
const select_query_node_js_1 = require("../../operation-node/select-query-node.js");
|
|
5
|
+
const savepoint_parser_js_1 = require("../../parser/savepoint-parser.js");
|
|
5
6
|
const compiled_query_js_1 = require("../../query-compiler/compiled-query.js");
|
|
6
7
|
const object_utils_js_1 = require("../../util/object-utils.js");
|
|
8
|
+
const query_id_js_1 = require("../../util/query-id.js");
|
|
7
9
|
class SqliteDriver {
|
|
8
10
|
#config;
|
|
9
11
|
#connectionMutex = new ConnectionMutex();
|
|
@@ -36,6 +38,15 @@ class SqliteDriver {
|
|
|
36
38
|
async rollbackTransaction(connection) {
|
|
37
39
|
await connection.executeQuery(compiled_query_js_1.CompiledQuery.raw('rollback'));
|
|
38
40
|
}
|
|
41
|
+
async savepoint(connection, savepointName, compileQuery) {
|
|
42
|
+
await connection.executeQuery(compileQuery((0, savepoint_parser_js_1.parseSavepointCommand)('savepoint', savepointName), (0, query_id_js_1.createQueryId)()));
|
|
43
|
+
}
|
|
44
|
+
async rollbackToSavepoint(connection, savepointName, compileQuery) {
|
|
45
|
+
await connection.executeQuery(compileQuery((0, savepoint_parser_js_1.parseSavepointCommand)('rollback to', savepointName), (0, query_id_js_1.createQueryId)()));
|
|
46
|
+
}
|
|
47
|
+
async releaseSavepoint(connection, savepointName, compileQuery) {
|
|
48
|
+
await connection.executeQuery(compileQuery((0, savepoint_parser_js_1.parseSavepointCommand)('release', savepointName), (0, query_id_js_1.createQueryId)()));
|
|
49
|
+
}
|
|
39
50
|
async releaseConnection() {
|
|
40
51
|
this.#connectionMutex.unlock();
|
|
41
52
|
}
|
|
@@ -57,19 +68,14 @@ class SqliteConnection {
|
|
|
57
68
|
rows: stmt.all(parameters),
|
|
58
69
|
});
|
|
59
70
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
? BigInt(lastInsertRowid)
|
|
69
|
-
: undefined,
|
|
70
|
-
rows: [],
|
|
71
|
-
});
|
|
72
|
-
}
|
|
71
|
+
const { changes, lastInsertRowid } = stmt.run(parameters);
|
|
72
|
+
return Promise.resolve({
|
|
73
|
+
numAffectedRows: changes !== undefined && changes !== null ? BigInt(changes) : undefined,
|
|
74
|
+
insertId: lastInsertRowid !== undefined && lastInsertRowid !== null
|
|
75
|
+
? BigInt(lastInsertRowid)
|
|
76
|
+
: undefined,
|
|
77
|
+
rows: [],
|
|
78
|
+
});
|
|
73
79
|
}
|
|
74
80
|
async *streamQuery(compiledQuery, _chunkSize) {
|
|
75
81
|
const { sql, parameters, query } = compiledQuery;
|
|
@@ -13,59 +13,81 @@ class SqliteIntrospector {
|
|
|
13
13
|
return [];
|
|
14
14
|
}
|
|
15
15
|
async getTables(options = { withInternalKyselyTables: false }) {
|
|
16
|
-
|
|
16
|
+
return await this.#getTableMetadata(options);
|
|
17
|
+
}
|
|
18
|
+
async getMetadata(options) {
|
|
19
|
+
return {
|
|
20
|
+
tables: await this.getTables(options),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
#tablesQuery(qb, options) {
|
|
24
|
+
let tablesQuery = qb
|
|
17
25
|
.selectFrom('sqlite_master')
|
|
18
26
|
.where('type', 'in', ['table', 'view'])
|
|
19
27
|
.where('name', 'not like', 'sqlite_%')
|
|
20
|
-
.select('name')
|
|
21
|
-
.orderBy('name')
|
|
22
|
-
.$castTo();
|
|
28
|
+
.select(['name', 'sql', 'type'])
|
|
29
|
+
.orderBy('name');
|
|
23
30
|
if (!options.withInternalKyselyTables) {
|
|
24
|
-
|
|
31
|
+
tablesQuery = tablesQuery
|
|
25
32
|
.where('name', '!=', migrator_js_1.DEFAULT_MIGRATION_TABLE)
|
|
26
33
|
.where('name', '!=', migrator_js_1.DEFAULT_MIGRATION_LOCK_TABLE);
|
|
27
34
|
}
|
|
28
|
-
|
|
29
|
-
return Promise.all(tables.map(({ name }) => this.#getTableMetadata(name)));
|
|
35
|
+
return tablesQuery;
|
|
30
36
|
}
|
|
31
|
-
async
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
.
|
|
41
|
-
.
|
|
42
|
-
.
|
|
43
|
-
|
|
44
|
-
.
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
?.trimStart()
|
|
50
|
-
?.split(/\s+/)?.[0]
|
|
51
|
-
?.replace(/["`]/g, '');
|
|
52
|
-
const columns = await db
|
|
53
|
-
.selectFrom((0, sql_js_1.sql) `pragma_table_info(${table})`.as('table_info'))
|
|
54
|
-
.select(['name', 'type', 'notnull', 'dflt_value'])
|
|
55
|
-
.orderBy('cid')
|
|
37
|
+
async #getTableMetadata(options) {
|
|
38
|
+
const tablesResult = await this.#tablesQuery(this.#db, options).execute();
|
|
39
|
+
const tableMetadata = await this.#db
|
|
40
|
+
.with('table_list', (qb) => this.#tablesQuery(qb, options))
|
|
41
|
+
.selectFrom([
|
|
42
|
+
'table_list as tl',
|
|
43
|
+
(0, sql_js_1.sql) `pragma_table_info(tl.name)`.as('p'),
|
|
44
|
+
])
|
|
45
|
+
.select([
|
|
46
|
+
'tl.name as table',
|
|
47
|
+
'p.cid',
|
|
48
|
+
'p.name',
|
|
49
|
+
'p.type',
|
|
50
|
+
'p.notnull',
|
|
51
|
+
'p.dflt_value',
|
|
52
|
+
'p.pk',
|
|
53
|
+
])
|
|
54
|
+
.orderBy(['tl.name', 'p.cid'])
|
|
56
55
|
.execute();
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
56
|
+
const columnsByTable = {};
|
|
57
|
+
for (const row of tableMetadata) {
|
|
58
|
+
columnsByTable[row.table] ??= [];
|
|
59
|
+
columnsByTable[row.table].push(row);
|
|
60
|
+
}
|
|
61
|
+
return tablesResult.map(({ name, sql, type }) => {
|
|
62
|
+
// // Try to find the name of the column that has `autoincrement` 🤦
|
|
63
|
+
let autoIncrementCol = sql
|
|
64
|
+
?.split(/[\(\),]/)
|
|
65
|
+
?.find((it) => it.toLowerCase().includes('autoincrement'))
|
|
66
|
+
?.trimStart()
|
|
67
|
+
?.split(/\s+/)?.[0]
|
|
68
|
+
?.replace(/["`]/g, '');
|
|
69
|
+
const columns = columnsByTable[name] ?? [];
|
|
70
|
+
// Otherwise, check for an INTEGER PRIMARY KEY
|
|
71
|
+
// https://www.sqlite.org/autoinc.html
|
|
72
|
+
if (!autoIncrementCol) {
|
|
73
|
+
const pkCols = columns.filter((r) => r.pk > 0);
|
|
74
|
+
if (pkCols.length === 1 && pkCols[0].type.toLowerCase() === 'integer') {
|
|
75
|
+
autoIncrementCol = pkCols[0].name;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
name: name,
|
|
80
|
+
isView: type === 'view',
|
|
81
|
+
columns: columns.map((col) => ({
|
|
82
|
+
name: col.name,
|
|
83
|
+
dataType: col.type,
|
|
84
|
+
isNullable: !col.notnull,
|
|
85
|
+
isAutoIncrementing: col.name === autoIncrementCol,
|
|
86
|
+
hasDefaultValue: col.dflt_value != null,
|
|
87
|
+
comment: undefined,
|
|
88
|
+
})),
|
|
89
|
+
};
|
|
90
|
+
});
|
|
69
91
|
}
|
|
70
92
|
}
|
|
71
93
|
exports.SqliteIntrospector = SqliteIntrospector;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { DefaultInsertValueNode } from '../../operation-node/default-insert-value-node.js';
|
|
2
|
+
import { OrActionNode } from '../../operation-node/or-action-node.js';
|
|
2
3
|
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
3
4
|
export declare class SqliteQueryCompiler extends DefaultQueryCompiler {
|
|
5
|
+
protected visitOrAction(node: OrActionNode): void;
|
|
4
6
|
protected getCurrentParameterPlaceholder(): string;
|
|
5
7
|
protected getLeftExplainOptionsWrapper(): string;
|
|
6
8
|
protected getRightExplainOptionsWrapper(): string;
|
|
@@ -4,6 +4,10 @@ exports.SqliteQueryCompiler = void 0;
|
|
|
4
4
|
const default_query_compiler_js_1 = require("../../query-compiler/default-query-compiler.js");
|
|
5
5
|
const ID_WRAP_REGEX = /"/g;
|
|
6
6
|
class SqliteQueryCompiler extends default_query_compiler_js_1.DefaultQueryCompiler {
|
|
7
|
+
visitOrAction(node) {
|
|
8
|
+
this.append('or ');
|
|
9
|
+
this.append(node.action);
|
|
10
|
+
}
|
|
7
11
|
getCurrentParameterPlaceholder() {
|
|
8
12
|
return '?';
|
|
9
13
|
}
|
|
@@ -9,10 +9,6 @@ export interface DatabaseConnection {
|
|
|
9
9
|
streamQuery<R>(compiledQuery: CompiledQuery, chunkSize?: number): AsyncIterableIterator<QueryResult<R>>;
|
|
10
10
|
}
|
|
11
11
|
export interface QueryResult<O> {
|
|
12
|
-
/**
|
|
13
|
-
* @deprecated use {@link QueryResult.numAffectedRows} instead.
|
|
14
|
-
*/
|
|
15
|
-
readonly numUpdatedOrDeletedRows?: bigint;
|
|
16
12
|
/**
|
|
17
13
|
* This is defined for insert, update, delete and merge queries and contains
|
|
18
14
|
* the number of rows the query inserted/updated/deleted.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { QueryCompiler } from '../query-compiler/query-compiler.js';
|
|
1
2
|
import { ArrayItemType } from '../util/type-utils.js';
|
|
2
3
|
import { DatabaseConnection } from './database-connection.js';
|
|
3
4
|
/**
|
|
@@ -28,6 +29,18 @@ export interface Driver {
|
|
|
28
29
|
* Rolls back a transaction.
|
|
29
30
|
*/
|
|
30
31
|
rollbackTransaction(connection: DatabaseConnection): Promise<void>;
|
|
32
|
+
/**
|
|
33
|
+
* Establishses a new savepoint within a transaction.
|
|
34
|
+
*/
|
|
35
|
+
savepoint?(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Rolls back to a savepoint within a transaction.
|
|
38
|
+
*/
|
|
39
|
+
rollbackToSavepoint?(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Releases a savepoint within a transaction.
|
|
42
|
+
*/
|
|
43
|
+
releaseSavepoint?(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
31
44
|
/**
|
|
32
45
|
* Releases a connection back to the pool.
|
|
33
46
|
*/
|
|
@@ -38,7 +51,11 @@ export interface Driver {
|
|
|
38
51
|
destroy(): Promise<void>;
|
|
39
52
|
}
|
|
40
53
|
export interface TransactionSettings {
|
|
54
|
+
readonly accessMode?: AccessMode;
|
|
41
55
|
readonly isolationLevel?: IsolationLevel;
|
|
42
56
|
}
|
|
57
|
+
export declare const TRANSACTION_ACCESS_MODES: readonly ["read only", "read write"];
|
|
58
|
+
export type AccessMode = ArrayItemType<typeof TRANSACTION_ACCESS_MODES>;
|
|
43
59
|
export declare const TRANSACTION_ISOLATION_LEVELS: readonly ["read uncommitted", "read committed", "repeatable read", "serializable", "snapshot"];
|
|
44
60
|
export type IsolationLevel = ArrayItemType<typeof TRANSACTION_ISOLATION_LEVELS>;
|
|
61
|
+
export declare function validateTransactionSettings(settings: TransactionSettings): void;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TRANSACTION_ISOLATION_LEVELS = void 0;
|
|
3
|
+
exports.TRANSACTION_ISOLATION_LEVELS = exports.TRANSACTION_ACCESS_MODES = void 0;
|
|
4
|
+
exports.validateTransactionSettings = validateTransactionSettings;
|
|
5
|
+
exports.TRANSACTION_ACCESS_MODES = ['read only', 'read write'];
|
|
4
6
|
exports.TRANSACTION_ISOLATION_LEVELS = [
|
|
5
7
|
'read uncommitted',
|
|
6
8
|
'read committed',
|
|
@@ -8,3 +10,13 @@ exports.TRANSACTION_ISOLATION_LEVELS = [
|
|
|
8
10
|
'serializable',
|
|
9
11
|
'snapshot',
|
|
10
12
|
];
|
|
13
|
+
function validateTransactionSettings(settings) {
|
|
14
|
+
if (settings.accessMode &&
|
|
15
|
+
!exports.TRANSACTION_ACCESS_MODES.includes(settings.accessMode)) {
|
|
16
|
+
throw new Error(`invalid transaction access mode ${settings.accessMode}`);
|
|
17
|
+
}
|
|
18
|
+
if (settings.isolationLevel &&
|
|
19
|
+
!exports.TRANSACTION_ISOLATION_LEVELS.includes(settings.isolationLevel)) {
|
|
20
|
+
throw new Error(`invalid transaction isolation level ${settings.isolationLevel}`);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -60,6 +60,15 @@ class DummyDriver {
|
|
|
60
60
|
async destroy() {
|
|
61
61
|
// Nothing to do here.
|
|
62
62
|
}
|
|
63
|
+
async releaseSavepoint() {
|
|
64
|
+
// Nothing to do here.
|
|
65
|
+
}
|
|
66
|
+
async rollbackToSavepoint() {
|
|
67
|
+
// Nothing to do here.
|
|
68
|
+
}
|
|
69
|
+
async savepoint() {
|
|
70
|
+
// Nothing to do here.
|
|
71
|
+
}
|
|
63
72
|
}
|
|
64
73
|
exports.DummyDriver = DummyDriver;
|
|
65
74
|
class DummyConnection {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { QueryCompiler } from '../query-compiler/query-compiler.js';
|
|
1
2
|
import { Log } from '../util/log.js';
|
|
2
3
|
import { DatabaseConnection } from './database-connection.js';
|
|
3
4
|
import { Driver, TransactionSettings } from './driver.js';
|
|
@@ -36,6 +37,9 @@ export declare class RuntimeDriver implements Driver {
|
|
|
36
37
|
* Rolls back a transaction.
|
|
37
38
|
*/
|
|
38
39
|
rollbackTransaction(connection: DatabaseConnection): Promise<void>;
|
|
40
|
+
savepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
41
|
+
rollbackToSavepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
42
|
+
releaseSavepoint(connection: DatabaseConnection, savepointName: string, compileQuery: QueryCompiler['compileQuery']): Promise<void>;
|
|
39
43
|
/**
|
|
40
44
|
* Destroys the driver and releases all resources.
|
|
41
45
|
*/
|