kysely 0.27.6 → 0.28.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +169 -1
- package/deno.check.d.ts +7 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/cjs/dialect/mssql/mssql-driver.js +33 -19
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +27 -12
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +28 -18
- package/dist/cjs/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/cjs/driver/database-connection.d.ts +0 -4
- package/dist/cjs/driver/driver.d.ts +17 -0
- package/dist/cjs/driver/driver.js +13 -1
- package/dist/cjs/driver/dummy-driver.d.ts +3 -0
- package/dist/cjs/driver/dummy-driver.js +9 -0
- package/dist/cjs/driver/runtime-driver.d.ts +4 -0
- package/dist/cjs/driver/runtime-driver.js +43 -3
- package/dist/cjs/expression/expression-builder.d.ts +7 -10
- package/dist/cjs/helpers/postgres.d.ts +48 -0
- package/dist/cjs/helpers/postgres.js +50 -0
- package/dist/cjs/index.d.ts +13 -2
- package/dist/cjs/index.js +13 -2
- package/dist/cjs/kysely.d.ts +339 -2
- package/dist/cjs/kysely.js +465 -11
- package/dist/cjs/migration/migrator.d.ts +8 -0
- package/dist/cjs/migration/migrator.js +1 -1
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/cjs/operation-node/aggregate-function-node.js +4 -3
- package/dist/cjs/operation-node/alter-table-node.d.ts +3 -1
- package/dist/cjs/operation-node/collate-node.d.ts +13 -0
- package/dist/cjs/operation-node/collate-node.js +19 -0
- package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/delete-query-node.js +11 -15
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/merge-query-node.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/cjs/operation-node/operation-node-transformer.js +352 -312
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/or-action-node.d.ts +12 -0
- package/dist/cjs/operation-node/or-action-node.js +18 -0
- package/dist/cjs/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/cjs/operation-node/order-by-item-node.js +6 -0
- package/dist/cjs/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/cjs/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/cjs/operation-node/query-node.d.ts +7 -0
- package/dist/cjs/operation-node/query-node.js +15 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/cjs/operation-node/refresh-materialized-view-node.js +25 -0
- package/dist/cjs/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/cjs/operation-node/rename-constraint-node.js +20 -0
- package/dist/cjs/operation-node/select-query-node.d.ts +8 -2
- package/dist/cjs/operation-node/select-query-node.js +11 -15
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/update-query-node.js +5 -2
- package/dist/cjs/parser/collate-parser.d.ts +1 -0
- package/dist/cjs/parser/collate-parser.js +2 -0
- package/dist/cjs/parser/delete-from-parser.d.ts +5 -0
- package/dist/cjs/parser/delete-from-parser.js +2 -0
- package/dist/cjs/parser/join-parser.d.ts +1 -1
- package/dist/cjs/parser/join-parser.js +7 -1
- package/dist/cjs/parser/merge-into-parser.d.ts +5 -0
- package/dist/cjs/parser/merge-into-parser.js +2 -0
- package/dist/cjs/parser/order-by-parser.d.ts +18 -5
- package/dist/cjs/parser/order-by-parser.js +24 -14
- package/dist/cjs/parser/savepoint-parser.d.ts +4 -0
- package/dist/cjs/parser/savepoint-parser.js +11 -0
- package/dist/cjs/parser/select-from-parser.d.ts +4 -0
- package/dist/cjs/parser/select-from-parser.js +2 -0
- package/dist/cjs/parser/table-parser.d.ts +2 -5
- package/dist/cjs/parser/update-parser.d.ts +5 -0
- package/dist/cjs/parser/update-parser.js +2 -0
- package/dist/cjs/parser/update-set-parser.d.ts +7 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/cjs/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +162 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +29 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/cjs/plugin/handle-empty-in-lists/handle-empty-in-lists.js +66 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/cjs/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/cjs/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/cjs/plugin/with-schema/with-schema-transformer.d.ts +6 -5
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +29 -24
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/cjs/query-builder/aggregate-function-builder.js +15 -27
- package/dist/cjs/query-builder/cte-builder.js +0 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/cjs/query-builder/delete-query-builder.js +12 -78
- package/dist/cjs/query-builder/function-module.d.ts +31 -4
- package/dist/cjs/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/cjs/query-builder/insert-query-builder.js +197 -10
- package/dist/cjs/query-builder/join-builder.js +0 -2
- package/dist/cjs/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/cjs/query-builder/merge-query-builder.js +28 -7
- package/dist/cjs/query-builder/on-conflict-builder.js +0 -4
- package/dist/cjs/query-builder/order-by-interface.d.ts +176 -0
- package/dist/cjs/query-builder/order-by-interface.js +2 -0
- package/dist/cjs/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/cjs/query-builder/order-by-item-builder.js +75 -0
- package/dist/cjs/query-builder/over-builder.d.ts +43 -6
- package/dist/cjs/query-builder/over-builder.js +8 -25
- package/dist/cjs/query-builder/returning-interface.d.ts +20 -3
- package/dist/cjs/query-builder/select-query-builder.d.ts +279 -98
- package/dist/cjs/query-builder/select-query-builder.js +26 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +88 -9
- package/dist/cjs/query-builder/update-query-builder.js +17 -15
- package/dist/cjs/query-compiler/compiled-query.d.ts +2 -0
- package/dist/cjs/query-compiler/compiled-query.js +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +97 -2
- package/dist/cjs/query-compiler/query-compiler.d.ts +4 -2
- package/dist/cjs/query-creator.d.ts +23 -25
- package/dist/cjs/query-creator.js +280 -8
- package/dist/cjs/query-executor/default-query-executor.d.ts +2 -1
- package/dist/cjs/query-executor/default-query-executor.js +2 -2
- package/dist/cjs/query-executor/query-executor-base.js +7 -25
- package/dist/cjs/raw-builder/raw-builder.js +0 -3
- package/dist/cjs/raw-builder/sql.d.ts +3 -3
- package/dist/cjs/raw-builder/sql.js +1 -1
- package/dist/cjs/schema/alter-column-builder.js +0 -3
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/cjs/schema/alter-table-add-index-builder.js +0 -2
- package/dist/cjs/schema/alter-table-builder.d.ts +7 -3
- package/dist/cjs/schema/alter-table-builder.js +21 -10
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/cjs/schema/alter-table-executor.js +0 -2
- package/dist/cjs/schema/check-constraint-builder.d.ts +13 -0
- package/dist/cjs/schema/check-constraint-builder.js +20 -0
- package/dist/cjs/schema/column-definition-builder.js +0 -2
- package/dist/cjs/schema/create-index-builder.js +1 -3
- package/dist/cjs/schema/create-schema-builder.js +0 -2
- package/dist/cjs/schema/create-table-builder.d.ts +5 -4
- package/dist/cjs/schema/create-table-builder.js +9 -7
- package/dist/cjs/schema/create-type-builder.d.ts +1 -1
- package/dist/cjs/schema/create-type-builder.js +0 -2
- package/dist/cjs/schema/create-view-builder.js +0 -2
- package/dist/cjs/schema/drop-index-builder.js +0 -2
- package/dist/cjs/schema/drop-schema-builder.js +0 -2
- package/dist/cjs/schema/drop-table-builder.js +0 -2
- package/dist/cjs/schema/drop-type-builder.js +0 -2
- package/dist/cjs/schema/drop-view-builder.js +0 -2
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/cjs/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/cjs/schema/primary-key-constraint-builder.js +37 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/cjs/schema/refresh-materialized-view-builder.js +75 -0
- package/dist/cjs/schema/schema.d.ts +14 -0
- package/dist/cjs/schema/schema.js +21 -0
- package/dist/cjs/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/cjs/schema/unique-constraint-builder.js +26 -5
- package/dist/cjs/util/infer-result.d.ts +1 -1
- package/dist/cjs/util/log.d.ts +1 -0
- package/dist/cjs/util/log.js +3 -2
- package/dist/cjs/util/provide-controlled-connection.d.ts +7 -0
- package/dist/cjs/util/provide-controlled-connection.js +24 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +26 -16
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +6 -3
- package/dist/esm/dialect/mssql/mssql-driver.js +33 -19
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +11 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +27 -12
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +4 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +28 -18
- package/dist/esm/dialect/postgres/postgres-introspector.js +7 -17
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +4 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +19 -13
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +4 -0
- package/dist/esm/driver/database-connection.d.ts +0 -4
- package/dist/esm/driver/driver.d.ts +17 -0
- package/dist/esm/driver/driver.js +11 -0
- package/dist/esm/driver/dummy-driver.d.ts +3 -0
- package/dist/esm/driver/dummy-driver.js +9 -0
- package/dist/esm/driver/runtime-driver.d.ts +4 -0
- package/dist/esm/driver/runtime-driver.js +43 -3
- package/dist/esm/expression/expression-builder.d.ts +7 -10
- package/dist/esm/helpers/postgres.d.ts +48 -0
- package/dist/esm/helpers/postgres.js +49 -0
- package/dist/esm/index.d.ts +13 -2
- package/dist/esm/index.js +11 -1
- package/dist/esm/kysely.d.ts +339 -2
- package/dist/esm/kysely.js +461 -10
- package/dist/esm/migration/migrator.d.ts +8 -0
- package/dist/esm/migration/migrator.js +1 -1
- package/dist/esm/operation-node/aggregate-function-node.d.ts +2 -1
- package/dist/esm/operation-node/aggregate-function-node.js +4 -3
- package/dist/esm/operation-node/alter-table-node.d.ts +3 -1
- package/dist/esm/operation-node/collate-node.d.ts +13 -0
- package/dist/esm/operation-node/collate-node.js +17 -0
- package/dist/esm/operation-node/constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +8 -2
- package/dist/esm/operation-node/delete-query-node.js +11 -15
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +4 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +3 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/merge-query-node.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +106 -97
- package/dist/esm/operation-node/operation-node-transformer.js +352 -312
- package/dist/esm/operation-node/operation-node-visitor.d.ts +9 -1
- package/dist/esm/operation-node/operation-node-visitor.js +4 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/or-action-node.d.ts +12 -0
- package/dist/esm/operation-node/or-action-node.js +16 -0
- package/dist/esm/operation-node/order-by-item-node.d.ts +5 -0
- package/dist/esm/operation-node/order-by-item-node.js +6 -0
- package/dist/esm/operation-node/primary-key-constraint-node.d.ts +29 -0
- package/dist/esm/operation-node/{primary-constraint-node.js → primary-key-constraint-node.js} +11 -2
- package/dist/esm/operation-node/query-node.d.ts +7 -0
- package/dist/esm/operation-node/query-node.js +15 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.d.ts +17 -0
- package/dist/esm/operation-node/refresh-materialized-view-node.js +23 -0
- package/dist/esm/operation-node/rename-constraint-node.d.ts +14 -0
- package/dist/esm/operation-node/rename-constraint-node.js +18 -0
- package/dist/esm/operation-node/select-query-node.d.ts +8 -2
- package/dist/esm/operation-node/select-query-node.js +11 -15
- package/dist/esm/operation-node/unique-constraint-node.d.ts +2 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/update-query-node.js +5 -2
- package/dist/esm/parser/collate-parser.d.ts +1 -0
- package/dist/esm/parser/collate-parser.js +2 -0
- package/dist/esm/parser/delete-from-parser.d.ts +5 -0
- package/dist/esm/parser/delete-from-parser.js +2 -0
- package/dist/esm/parser/join-parser.d.ts +1 -1
- package/dist/esm/parser/join-parser.js +7 -1
- package/dist/esm/parser/merge-into-parser.d.ts +5 -0
- package/dist/esm/parser/merge-into-parser.js +2 -0
- package/dist/esm/parser/order-by-parser.d.ts +18 -5
- package/dist/esm/parser/order-by-parser.js +27 -17
- package/dist/esm/parser/savepoint-parser.d.ts +4 -0
- package/dist/esm/parser/savepoint-parser.js +9 -0
- package/dist/esm/parser/select-from-parser.d.ts +4 -0
- package/dist/esm/parser/select-from-parser.js +2 -0
- package/dist/esm/parser/table-parser.d.ts +2 -5
- package/dist/esm/parser/update-parser.d.ts +5 -0
- package/dist/esm/parser/update-parser.js +2 -0
- package/dist/esm/parser/update-set-parser.d.ts +7 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +2 -1
- package/dist/esm/plugin/camel-case/camel-case-transformer.js +2 -2
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.d.ts +4 -3
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-transformer.js +6 -6
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.d.ts +211 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js +159 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.d.ts +8 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists-transformer.js +26 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.d.ts +44 -0
- package/dist/esm/plugin/handle-empty-in-lists/handle-empty-in-lists.js +63 -0
- package/dist/esm/plugin/immediate-value/immediate-value-plugin.js +1 -1
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.d.ts +2 -0
- package/dist/esm/plugin/immediate-value/immediate-value-transformer.js +6 -4
- package/dist/esm/plugin/with-schema/with-schema-plugin.js +1 -1
- package/dist/esm/plugin/with-schema/with-schema-transformer.d.ts +6 -5
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +29 -24
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +83 -5
- package/dist/esm/query-builder/aggregate-function-builder.js +15 -27
- package/dist/esm/query-builder/cte-builder.js +0 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +36 -47
- package/dist/esm/query-builder/delete-query-builder.js +12 -78
- package/dist/esm/query-builder/function-module.d.ts +31 -4
- package/dist/esm/query-builder/insert-query-builder.d.ts +161 -6
- package/dist/esm/query-builder/insert-query-builder.js +197 -10
- package/dist/esm/query-builder/join-builder.js +0 -2
- package/dist/esm/query-builder/merge-query-builder.d.ts +145 -3
- package/dist/esm/query-builder/merge-query-builder.js +29 -8
- package/dist/esm/query-builder/on-conflict-builder.js +0 -4
- package/dist/esm/query-builder/order-by-interface.d.ts +176 -0
- package/dist/esm/query-builder/order-by-interface.js +2 -0
- package/dist/esm/query-builder/order-by-item-builder.d.ts +43 -0
- package/dist/esm/query-builder/order-by-item-builder.js +72 -0
- package/dist/esm/query-builder/over-builder.d.ts +43 -6
- package/dist/esm/query-builder/over-builder.js +8 -25
- package/dist/esm/query-builder/returning-interface.d.ts +20 -3
- package/dist/esm/query-builder/select-query-builder.d.ts +279 -98
- package/dist/esm/query-builder/select-query-builder.js +26 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +88 -9
- package/dist/esm/query-builder/update-query-builder.js +17 -15
- package/dist/esm/query-compiler/compiled-query.d.ts +2 -0
- package/dist/esm/query-compiler/compiled-query.js +2 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +17 -2
- package/dist/esm/query-compiler/default-query-compiler.js +97 -2
- package/dist/esm/query-compiler/query-compiler.d.ts +4 -2
- package/dist/esm/query-creator.d.ts +23 -25
- package/dist/esm/query-creator.js +281 -9
- package/dist/esm/query-executor/default-query-executor.d.ts +2 -1
- package/dist/esm/query-executor/default-query-executor.js +2 -2
- package/dist/esm/query-executor/query-executor-base.js +7 -25
- package/dist/esm/raw-builder/raw-builder.js +0 -3
- package/dist/esm/raw-builder/sql.d.ts +3 -3
- package/dist/esm/raw-builder/sql.js +1 -1
- package/dist/esm/schema/alter-column-builder.js +0 -3
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +4 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +24 -2
- package/dist/esm/schema/alter-table-add-index-builder.js +0 -2
- package/dist/esm/schema/alter-table-builder.d.ts +7 -3
- package/dist/esm/schema/alter-table-builder.js +22 -11
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +0 -2
- package/dist/esm/schema/alter-table-executor.js +0 -2
- package/dist/esm/schema/check-constraint-builder.d.ts +13 -0
- package/dist/esm/schema/check-constraint-builder.js +17 -0
- package/dist/esm/schema/column-definition-builder.js +0 -2
- package/dist/esm/schema/create-index-builder.js +1 -3
- package/dist/esm/schema/create-schema-builder.js +0 -2
- package/dist/esm/schema/create-table-builder.d.ts +5 -4
- package/dist/esm/schema/create-table-builder.js +10 -8
- package/dist/esm/schema/create-type-builder.d.ts +1 -1
- package/dist/esm/schema/create-type-builder.js +0 -2
- package/dist/esm/schema/create-view-builder.js +0 -2
- package/dist/esm/schema/drop-index-builder.js +0 -2
- package/dist/esm/schema/drop-schema-builder.js +0 -2
- package/dist/esm/schema/drop-table-builder.js +0 -2
- package/dist/esm/schema/drop-type-builder.js +0 -2
- package/dist/esm/schema/drop-view-builder.js +0 -2
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +9 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +16 -2
- package/dist/esm/schema/primary-key-constraint-builder.d.ts +17 -0
- package/dist/esm/schema/primary-key-constraint-builder.js +34 -0
- package/dist/esm/schema/refresh-materialized-view-builder.d.ts +47 -0
- package/dist/esm/schema/refresh-materialized-view-builder.js +72 -0
- package/dist/esm/schema/schema.d.ts +14 -0
- package/dist/esm/schema/schema.js +21 -0
- package/dist/esm/schema/unique-constraint-builder.d.ts +10 -1
- package/dist/esm/schema/unique-constraint-builder.js +26 -5
- package/dist/esm/util/infer-result.d.ts +1 -1
- package/dist/esm/util/log.d.ts +1 -0
- package/dist/esm/util/log.js +3 -2
- package/dist/esm/util/provide-controlled-connection.d.ts +7 -0
- package/dist/esm/util/provide-controlled-connection.js +22 -0
- package/outdated-typescript.d.ts +5 -0
- package/package.json +16 -2
- package/CONTRIBUTING.md +0 -168
- package/dist/cjs/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/cjs/util/prevent-await.d.ts +0 -1
- package/dist/cjs/util/prevent-await.js +0 -13
- package/dist/esm/operation-node/primary-constraint-node.d.ts +0 -15
- package/dist/esm/util/prevent-await.d.ts +0 -1
- package/dist/esm/util/prevent-await.js +0 -11
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/// <reference types="./postgres-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, 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 PostgresDriver {
|
|
@@ -36,8 +38,15 @@ export class PostgresDriver {
|
|
|
36
38
|
return connection;
|
|
37
39
|
}
|
|
38
40
|
async beginTransaction(connection, settings) {
|
|
39
|
-
if (settings.isolationLevel) {
|
|
40
|
-
|
|
41
|
+
if (settings.isolationLevel || settings.accessMode) {
|
|
42
|
+
let sql = 'start transaction';
|
|
43
|
+
if (settings.isolationLevel) {
|
|
44
|
+
sql += ` isolation level ${settings.isolationLevel}`;
|
|
45
|
+
}
|
|
46
|
+
if (settings.accessMode) {
|
|
47
|
+
sql += ` ${settings.accessMode}`;
|
|
48
|
+
}
|
|
49
|
+
await connection.executeQuery(CompiledQuery.raw(sql));
|
|
41
50
|
}
|
|
42
51
|
else {
|
|
43
52
|
await connection.executeQuery(CompiledQuery.raw('begin'));
|
|
@@ -49,6 +58,15 @@ export class PostgresDriver {
|
|
|
49
58
|
async rollbackTransaction(connection) {
|
|
50
59
|
await connection.executeQuery(CompiledQuery.raw('rollback'));
|
|
51
60
|
}
|
|
61
|
+
async savepoint(connection, savepointName, compileQuery) {
|
|
62
|
+
await connection.executeQuery(compileQuery(parseSavepointCommand('savepoint', savepointName), createQueryId()));
|
|
63
|
+
}
|
|
64
|
+
async rollbackToSavepoint(connection, savepointName, compileQuery) {
|
|
65
|
+
await connection.executeQuery(compileQuery(parseSavepointCommand('rollback to', savepointName), createQueryId()));
|
|
66
|
+
}
|
|
67
|
+
async releaseSavepoint(connection, savepointName, compileQuery) {
|
|
68
|
+
await connection.executeQuery(compileQuery(parseSavepointCommand('release', savepointName), createQueryId()));
|
|
69
|
+
}
|
|
52
70
|
async releaseConnection(connection) {
|
|
53
71
|
connection[PRIVATE_RELEASE_METHOD]();
|
|
54
72
|
}
|
|
@@ -69,23 +87,15 @@ class PostgresConnection {
|
|
|
69
87
|
}
|
|
70
88
|
async executeQuery(compiledQuery) {
|
|
71
89
|
try {
|
|
72
|
-
const
|
|
73
|
-
...compiledQuery.parameters,
|
|
74
|
-
]);
|
|
75
|
-
if (result.command === 'INSERT' ||
|
|
76
|
-
result.command === 'UPDATE' ||
|
|
77
|
-
result.command === 'DELETE' ||
|
|
78
|
-
result.command === 'MERGE') {
|
|
79
|
-
const numAffectedRows = BigInt(result.rowCount);
|
|
80
|
-
return {
|
|
81
|
-
// TODO: remove.
|
|
82
|
-
numUpdatedOrDeletedRows: numAffectedRows,
|
|
83
|
-
numAffectedRows,
|
|
84
|
-
rows: result.rows ?? [],
|
|
85
|
-
};
|
|
86
|
-
}
|
|
90
|
+
const { command, rowCount, rows } = await this.#client.query(compiledQuery.sql, [...compiledQuery.parameters]);
|
|
87
91
|
return {
|
|
88
|
-
|
|
92
|
+
numAffectedRows: command === 'INSERT' ||
|
|
93
|
+
command === 'UPDATE' ||
|
|
94
|
+
command === 'DELETE' ||
|
|
95
|
+
command === 'MERGE'
|
|
96
|
+
? BigInt(rowCount)
|
|
97
|
+
: undefined,
|
|
98
|
+
rows: rows ?? [],
|
|
89
99
|
};
|
|
90
100
|
}
|
|
91
101
|
catch (err) {
|
|
@@ -37,23 +37,13 @@ export class PostgresIntrospector {
|
|
|
37
37
|
'typ.typname as type',
|
|
38
38
|
'dtns.nspname as type_schema',
|
|
39
39
|
sql `col_description(a.attrelid, a.attnum)`.as('column_description'),
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
.whereRef('relnamespace', '=', 'c.relnamespace')
|
|
47
|
-
.where('relkind', '=', 'S')
|
|
48
|
-
.where('relname', '=', sql `c.relname || '_' || a.attname || '_seq'`)
|
|
49
|
-
.as('auto_incrementing'),
|
|
40
|
+
sql `pg_get_serial_sequence(ns.nspname || '.' || c.relname, a.attname)`.as('auto_incrementing'),
|
|
41
|
+
])
|
|
42
|
+
.where('c.relkind', 'in', [
|
|
43
|
+
'r' /*regular table*/,
|
|
44
|
+
'v' /*view*/,
|
|
45
|
+
'p' /*partitioned table*/,
|
|
50
46
|
])
|
|
51
|
-
// r == normal table
|
|
52
|
-
.where((eb) => eb.or([
|
|
53
|
-
eb('c.relkind', '=', 'r'),
|
|
54
|
-
eb('c.relkind', '=', 'v'),
|
|
55
|
-
eb('c.relkind', '=', 'p'),
|
|
56
|
-
]))
|
|
57
47
|
.where('ns.nspname', '!~', '^pg_')
|
|
58
48
|
.where('ns.nspname', '!=', 'information_schema')
|
|
59
49
|
// No system columns
|
|
@@ -93,7 +83,7 @@ export class PostgresIntrospector {
|
|
|
93
83
|
dataType: it.type,
|
|
94
84
|
dataTypeSchema: it.type_schema,
|
|
95
85
|
isNullable: !it.not_null,
|
|
96
|
-
isAutoIncrementing:
|
|
86
|
+
isAutoIncrementing: it.auto_incrementing !== null,
|
|
97
87
|
hasDefaultValue: it.has_default,
|
|
98
88
|
comment: it.column_description ?? undefined,
|
|
99
89
|
}));
|
|
@@ -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
|
*/
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/// <reference types="./sqlite-driver.d.ts" />
|
|
2
2
|
import { SelectQueryNode } from '../../operation-node/select-query-node.js';
|
|
3
|
+
import { parseSavepointCommand } from '../../parser/savepoint-parser.js';
|
|
3
4
|
import { CompiledQuery } from '../../query-compiler/compiled-query.js';
|
|
4
5
|
import { freeze, isFunction } from '../../util/object-utils.js';
|
|
6
|
+
import { createQueryId } from '../../util/query-id.js';
|
|
5
7
|
export class SqliteDriver {
|
|
6
8
|
#config;
|
|
7
9
|
#connectionMutex = new ConnectionMutex();
|
|
@@ -34,6 +36,15 @@ export class SqliteDriver {
|
|
|
34
36
|
async rollbackTransaction(connection) {
|
|
35
37
|
await connection.executeQuery(CompiledQuery.raw('rollback'));
|
|
36
38
|
}
|
|
39
|
+
async savepoint(connection, savepointName, compileQuery) {
|
|
40
|
+
await connection.executeQuery(compileQuery(parseSavepointCommand('savepoint', savepointName), createQueryId()));
|
|
41
|
+
}
|
|
42
|
+
async rollbackToSavepoint(connection, savepointName, compileQuery) {
|
|
43
|
+
await connection.executeQuery(compileQuery(parseSavepointCommand('rollback to', savepointName), createQueryId()));
|
|
44
|
+
}
|
|
45
|
+
async releaseSavepoint(connection, savepointName, compileQuery) {
|
|
46
|
+
await connection.executeQuery(compileQuery(parseSavepointCommand('release', savepointName), createQueryId()));
|
|
47
|
+
}
|
|
37
48
|
async releaseConnection() {
|
|
38
49
|
this.#connectionMutex.unlock();
|
|
39
50
|
}
|
|
@@ -54,19 +65,14 @@ class SqliteConnection {
|
|
|
54
65
|
rows: stmt.all(parameters),
|
|
55
66
|
});
|
|
56
67
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
? BigInt(lastInsertRowid)
|
|
66
|
-
: undefined,
|
|
67
|
-
rows: [],
|
|
68
|
-
});
|
|
69
|
-
}
|
|
68
|
+
const { changes, lastInsertRowid } = stmt.run(parameters);
|
|
69
|
+
return Promise.resolve({
|
|
70
|
+
numAffectedRows: changes !== undefined && changes !== null ? BigInt(changes) : undefined,
|
|
71
|
+
insertId: lastInsertRowid !== undefined && lastInsertRowid !== null
|
|
72
|
+
? BigInt(lastInsertRowid)
|
|
73
|
+
: undefined,
|
|
74
|
+
rows: [],
|
|
75
|
+
});
|
|
70
76
|
}
|
|
71
77
|
async *streamQuery(compiledQuery, _chunkSize) {
|
|
72
78
|
const { sql, parameters, query } = compiledQuery;
|
|
@@ -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;
|
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
import { DefaultQueryCompiler } from '../../query-compiler/default-query-compiler.js';
|
|
3
3
|
const ID_WRAP_REGEX = /"/g;
|
|
4
4
|
export class SqliteQueryCompiler extends DefaultQueryCompiler {
|
|
5
|
+
visitOrAction(node) {
|
|
6
|
+
this.append('or ');
|
|
7
|
+
this.append(node.action);
|
|
8
|
+
}
|
|
5
9
|
getCurrentParameterPlaceholder() {
|
|
6
10
|
return '?';
|
|
7
11
|
}
|
|
@@ -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,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="./driver.d.ts" />
|
|
2
|
+
export const TRANSACTION_ACCESS_MODES = ['read only', 'read write'];
|
|
2
3
|
export const TRANSACTION_ISOLATION_LEVELS = [
|
|
3
4
|
'read uncommitted',
|
|
4
5
|
'read committed',
|
|
@@ -6,3 +7,13 @@ export const TRANSACTION_ISOLATION_LEVELS = [
|
|
|
6
7
|
'serializable',
|
|
7
8
|
'snapshot',
|
|
8
9
|
];
|
|
10
|
+
export function validateTransactionSettings(settings) {
|
|
11
|
+
if (settings.accessMode &&
|
|
12
|
+
!TRANSACTION_ACCESS_MODES.includes(settings.accessMode)) {
|
|
13
|
+
throw new Error(`invalid transaction access mode ${settings.accessMode}`);
|
|
14
|
+
}
|
|
15
|
+
if (settings.isolationLevel &&
|
|
16
|
+
!TRANSACTION_ISOLATION_LEVELS.includes(settings.isolationLevel)) {
|
|
17
|
+
throw new Error(`invalid transaction isolation level ${settings.isolationLevel}`);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -58,6 +58,15 @@ export class DummyDriver {
|
|
|
58
58
|
async destroy() {
|
|
59
59
|
// Nothing to do here.
|
|
60
60
|
}
|
|
61
|
+
async releaseSavepoint() {
|
|
62
|
+
// Nothing to do here.
|
|
63
|
+
}
|
|
64
|
+
async rollbackToSavepoint() {
|
|
65
|
+
// Nothing to do here.
|
|
66
|
+
}
|
|
67
|
+
async savepoint() {
|
|
68
|
+
// Nothing to do here.
|
|
69
|
+
}
|
|
61
70
|
}
|
|
62
71
|
class DummyConnection {
|
|
63
72
|
async executeQuery() {
|
|
@@ -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
|
*/
|
|
@@ -62,6 +62,24 @@ export class RuntimeDriver {
|
|
|
62
62
|
rollbackTransaction(connection) {
|
|
63
63
|
return this.#driver.rollbackTransaction(connection);
|
|
64
64
|
}
|
|
65
|
+
savepoint(connection, savepointName, compileQuery) {
|
|
66
|
+
if (this.#driver.savepoint) {
|
|
67
|
+
return this.#driver.savepoint(connection, savepointName, compileQuery);
|
|
68
|
+
}
|
|
69
|
+
throw new Error('The `savepoint` method is not supported by this driver');
|
|
70
|
+
}
|
|
71
|
+
rollbackToSavepoint(connection, savepointName, compileQuery) {
|
|
72
|
+
if (this.#driver.rollbackToSavepoint) {
|
|
73
|
+
return this.#driver.rollbackToSavepoint(connection, savepointName, compileQuery);
|
|
74
|
+
}
|
|
75
|
+
throw new Error('The `rollbackToSavepoint` method is not supported by this driver');
|
|
76
|
+
}
|
|
77
|
+
releaseSavepoint(connection, savepointName, compileQuery) {
|
|
78
|
+
if (this.#driver.releaseSavepoint) {
|
|
79
|
+
return this.#driver.releaseSavepoint(connection, savepointName, compileQuery);
|
|
80
|
+
}
|
|
81
|
+
throw new Error('The `releaseSavepoint` method is not supported by this driver');
|
|
82
|
+
}
|
|
65
83
|
async destroy() {
|
|
66
84
|
if (!this.#initPromise) {
|
|
67
85
|
return;
|
|
@@ -83,6 +101,8 @@ export class RuntimeDriver {
|
|
|
83
101
|
// the best option in this case.
|
|
84
102
|
#addLogging(connection) {
|
|
85
103
|
const executeQuery = connection.executeQuery;
|
|
104
|
+
const streamQuery = connection.streamQuery;
|
|
105
|
+
const dis = this;
|
|
86
106
|
connection.executeQuery = async (compiledQuery) => {
|
|
87
107
|
let caughtError;
|
|
88
108
|
const startTime = performanceNow();
|
|
@@ -91,12 +111,31 @@ export class RuntimeDriver {
|
|
|
91
111
|
}
|
|
92
112
|
catch (error) {
|
|
93
113
|
caughtError = error;
|
|
94
|
-
await
|
|
114
|
+
await dis.#logError(error, compiledQuery, startTime);
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
if (!caughtError) {
|
|
119
|
+
await dis.#logQuery(compiledQuery, startTime);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
connection.streamQuery = async function* (compiledQuery, chunkSize) {
|
|
124
|
+
let caughtError;
|
|
125
|
+
const startTime = performanceNow();
|
|
126
|
+
try {
|
|
127
|
+
for await (const result of streamQuery.call(connection, compiledQuery, chunkSize)) {
|
|
128
|
+
yield result;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
caughtError = error;
|
|
133
|
+
await dis.#logError(error, compiledQuery, startTime);
|
|
95
134
|
throw error;
|
|
96
135
|
}
|
|
97
136
|
finally {
|
|
98
137
|
if (!caughtError) {
|
|
99
|
-
await
|
|
138
|
+
await dis.#logQuery(compiledQuery, startTime, true);
|
|
100
139
|
}
|
|
101
140
|
}
|
|
102
141
|
};
|
|
@@ -109,9 +148,10 @@ export class RuntimeDriver {
|
|
|
109
148
|
queryDurationMillis: this.#calculateDurationMillis(startTime),
|
|
110
149
|
}));
|
|
111
150
|
}
|
|
112
|
-
async #logQuery(compiledQuery, startTime) {
|
|
151
|
+
async #logQuery(compiledQuery, startTime, isStream = false) {
|
|
113
152
|
await this.#log.query(() => ({
|
|
114
153
|
level: 'query',
|
|
154
|
+
isStream,
|
|
115
155
|
query: compiledQuery,
|
|
116
156
|
queryDurationMillis: this.#calculateDurationMillis(startTime),
|
|
117
157
|
}));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
2
|
-
import {
|
|
2
|
+
import { TableExpressionOrList } from '../parser/table-parser.js';
|
|
3
3
|
import { FunctionModule } from '../query-builder/function-module.js';
|
|
4
4
|
import { ExtractTypeFromReferenceExpression, ReferenceExpression, SimpleReferenceExpression, StringReference } from '../parser/reference-parser.js';
|
|
5
5
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
@@ -16,6 +16,7 @@ import { RefTuple2, RefTuple3, RefTuple4, RefTuple5, ValTuple2, ValTuple3, ValTu
|
|
|
16
16
|
import { Selectable } from '../util/column-type.js';
|
|
17
17
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
18
18
|
import { DataTypeExpression } from '../parser/data-type-parser.js';
|
|
19
|
+
import { SelectFrom } from '../parser/select-from-parser.js';
|
|
19
20
|
export interface ExpressionBuilder<DB, TB extends keyof DB> {
|
|
20
21
|
/**
|
|
21
22
|
* Creates a binary expression.
|
|
@@ -116,9 +117,9 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
116
117
|
* ```ts
|
|
117
118
|
* const result = await db.selectFrom('person')
|
|
118
119
|
* .where(({ eb, exists, selectFrom }) =>
|
|
119
|
-
* eb('first_name', '=', 'Jennifer').and(
|
|
120
|
-
*
|
|
121
|
-
* )
|
|
120
|
+
* eb('first_name', '=', 'Jennifer').and(exists(
|
|
121
|
+
* selectFrom('pet').whereRef('owner_id', '=', 'person.id').select('pet.id')
|
|
122
|
+
* ))
|
|
122
123
|
* )
|
|
123
124
|
* .selectAll()
|
|
124
125
|
* .execute()
|
|
@@ -209,11 +210,7 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
209
210
|
* that case Kysely typings wouldn't allow you to reference `pet.owner_id`
|
|
210
211
|
* because `pet` is not joined to that query.
|
|
211
212
|
*/
|
|
212
|
-
selectFrom<TE extends
|
|
213
|
-
selectFrom<TE extends TableExpression<DB, TB>>(from: TE[]): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
|
|
214
|
-
selectFrom<TE extends keyof DB & string>(from: TE): SelectQueryBuilder<DB, TB | ExtractTableAlias<DB, TE>, {}>;
|
|
215
|
-
selectFrom<TE extends AnyAliasedTable<DB>>(from: TE): SelectQueryBuilder<DB & PickTableWithAlias<DB, TE>, TB | ExtractTableAlias<DB & PickTableWithAlias<DB, TE>, TE>, {}>;
|
|
216
|
-
selectFrom<TE extends TableExpression<DB, TB>>(from: TE): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
|
|
213
|
+
selectFrom<TE extends TableExpressionOrList<DB, TB>>(from: TE): SelectFrom<DB, TB, TE>;
|
|
217
214
|
/**
|
|
218
215
|
* Creates a `case` statement/operator.
|
|
219
216
|
*
|
|
@@ -920,4 +917,4 @@ export interface ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
920
917
|
}
|
|
921
918
|
export declare function createExpressionBuilder<DB, TB extends keyof DB>(executor?: QueryExecutor): ExpressionBuilder<DB, TB>;
|
|
922
919
|
export declare function expressionBuilder<DB, TB extends keyof DB>(_: SelectQueryBuilder<DB, TB, any>): ExpressionBuilder<DB, TB>;
|
|
923
|
-
export declare function expressionBuilder<DB, TB extends keyof DB>(): ExpressionBuilder<DB, TB>;
|
|
920
|
+
export declare function expressionBuilder<DB, TB extends keyof DB = never>(): ExpressionBuilder<DB, TB>;
|
|
@@ -149,3 +149,51 @@ export declare function jsonObjectFrom<O>(expr: Expression<O>): RawBuilder<Simpl
|
|
|
149
149
|
export declare function jsonBuildObject<O extends Record<string, Expression<unknown>>>(obj: O): RawBuilder<Simplify<{
|
|
150
150
|
[K in keyof O]: O[K] extends Expression<infer V> ? V : never;
|
|
151
151
|
}>>;
|
|
152
|
+
export type MergeAction = 'INSERT' | 'UPDATE' | 'DELETE';
|
|
153
|
+
/**
|
|
154
|
+
* The PostgreSQL `merge_action` function.
|
|
155
|
+
*
|
|
156
|
+
* This function can be used in a `returning` clause to get the action that was
|
|
157
|
+
* performed in a `mergeInto` query. The function returns one of the following
|
|
158
|
+
* strings: `'INSERT'`, `'UPDATE'`, or `'DELETE'`.
|
|
159
|
+
*
|
|
160
|
+
* ### Examples
|
|
161
|
+
*
|
|
162
|
+
* ```ts
|
|
163
|
+
* import { mergeAction } from 'kysely/helpers/postgres'
|
|
164
|
+
*
|
|
165
|
+
* const result = await db
|
|
166
|
+
* .mergeInto('person as p')
|
|
167
|
+
* .using('person_backup as pb', 'p.id', 'pb.id')
|
|
168
|
+
* .whenMatched()
|
|
169
|
+
* .thenUpdateSet(({ ref }) => ({
|
|
170
|
+
* first_name: ref('pb.first_name'),
|
|
171
|
+
* updated_at: ref('pb.updated_at').$castTo<string | null>(),
|
|
172
|
+
* }))
|
|
173
|
+
* .whenNotMatched()
|
|
174
|
+
* .thenInsertValues(({ ref}) => ({
|
|
175
|
+
* id: ref('pb.id'),
|
|
176
|
+
* first_name: ref('pb.first_name'),
|
|
177
|
+
* created_at: ref('pb.updated_at'),
|
|
178
|
+
* updated_at: ref('pb.updated_at').$castTo<string | null>(),
|
|
179
|
+
* }))
|
|
180
|
+
* .returning([mergeAction().as('action'), 'p.id', 'p.updated_at'])
|
|
181
|
+
* .execute()
|
|
182
|
+
*
|
|
183
|
+
* result[0].action
|
|
184
|
+
* ```
|
|
185
|
+
*
|
|
186
|
+
* The generated SQL (PostgreSQL):
|
|
187
|
+
*
|
|
188
|
+
* ```sql
|
|
189
|
+
* merge into "person" as "p"
|
|
190
|
+
* using "person_backup" as "pb" on "p"."id" = "pb"."id"
|
|
191
|
+
* when matched then update set
|
|
192
|
+
* "first_name" = "pb"."first_name",
|
|
193
|
+
* "updated_at" = "pb"."updated_at"::text
|
|
194
|
+
* when not matched then insert values ("id", "first_name", "created_at", "updated_at")
|
|
195
|
+
* values ("pb"."id", "pb"."first_name", "pb"."updated_at", "pb"."updated_at")
|
|
196
|
+
* returning merge_action() as "action", "p"."id", "p"."updated_at"
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
export declare function mergeAction(): RawBuilder<MergeAction>;
|
|
@@ -152,3 +152,52 @@ export function jsonObjectFrom(expr) {
|
|
|
152
152
|
export function jsonBuildObject(obj) {
|
|
153
153
|
return sql `json_build_object(${sql.join(Object.keys(obj).flatMap((k) => [sql.lit(k), obj[k]]))})`;
|
|
154
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* The PostgreSQL `merge_action` function.
|
|
157
|
+
*
|
|
158
|
+
* This function can be used in a `returning` clause to get the action that was
|
|
159
|
+
* performed in a `mergeInto` query. The function returns one of the following
|
|
160
|
+
* strings: `'INSERT'`, `'UPDATE'`, or `'DELETE'`.
|
|
161
|
+
*
|
|
162
|
+
* ### Examples
|
|
163
|
+
*
|
|
164
|
+
* ```ts
|
|
165
|
+
* import { mergeAction } from 'kysely/helpers/postgres'
|
|
166
|
+
*
|
|
167
|
+
* const result = await db
|
|
168
|
+
* .mergeInto('person as p')
|
|
169
|
+
* .using('person_backup as pb', 'p.id', 'pb.id')
|
|
170
|
+
* .whenMatched()
|
|
171
|
+
* .thenUpdateSet(({ ref }) => ({
|
|
172
|
+
* first_name: ref('pb.first_name'),
|
|
173
|
+
* updated_at: ref('pb.updated_at').$castTo<string | null>(),
|
|
174
|
+
* }))
|
|
175
|
+
* .whenNotMatched()
|
|
176
|
+
* .thenInsertValues(({ ref}) => ({
|
|
177
|
+
* id: ref('pb.id'),
|
|
178
|
+
* first_name: ref('pb.first_name'),
|
|
179
|
+
* created_at: ref('pb.updated_at'),
|
|
180
|
+
* updated_at: ref('pb.updated_at').$castTo<string | null>(),
|
|
181
|
+
* }))
|
|
182
|
+
* .returning([mergeAction().as('action'), 'p.id', 'p.updated_at'])
|
|
183
|
+
* .execute()
|
|
184
|
+
*
|
|
185
|
+
* result[0].action
|
|
186
|
+
* ```
|
|
187
|
+
*
|
|
188
|
+
* The generated SQL (PostgreSQL):
|
|
189
|
+
*
|
|
190
|
+
* ```sql
|
|
191
|
+
* merge into "person" as "p"
|
|
192
|
+
* using "person_backup" as "pb" on "p"."id" = "pb"."id"
|
|
193
|
+
* when matched then update set
|
|
194
|
+
* "first_name" = "pb"."first_name",
|
|
195
|
+
* "updated_at" = "pb"."updated_at"::text
|
|
196
|
+
* when not matched then insert values ("id", "first_name", "created_at", "updated_at")
|
|
197
|
+
* values ("pb"."id", "pb"."first_name", "pb"."updated_at", "pb"."updated_at")
|
|
198
|
+
* returning merge_action() as "action", "p"."id", "p"."updated_at"
|
|
199
|
+
* ```
|
|
200
|
+
*/
|
|
201
|
+
export function mergeAction() {
|
|
202
|
+
return sql `merge_action()`;
|
|
203
|
+
}
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ export * from './query-builder/where-interface.js';
|
|
|
7
7
|
export * from './query-builder/returning-interface.js';
|
|
8
8
|
export * from './query-builder/output-interface.js';
|
|
9
9
|
export * from './query-builder/having-interface.js';
|
|
10
|
+
export * from './query-builder/order-by-interface.js';
|
|
10
11
|
export * from './query-builder/select-query-builder.js';
|
|
11
12
|
export * from './query-builder/insert-query-builder.js';
|
|
12
13
|
export * from './query-builder/update-query-builder.js';
|
|
@@ -23,6 +24,7 @@ export * from './query-builder/case-builder.js';
|
|
|
23
24
|
export * from './query-builder/json-path-builder.js';
|
|
24
25
|
export * from './query-builder/merge-query-builder.js';
|
|
25
26
|
export * from './query-builder/merge-result.js';
|
|
27
|
+
export * from './query-builder/order-by-item-builder.js';
|
|
26
28
|
export * from './raw-builder/raw-builder.js';
|
|
27
29
|
export * from './raw-builder/sql.js';
|
|
28
30
|
export * from './query-executor/query-executor.js';
|
|
@@ -44,6 +46,7 @@ export * from './schema/column-definition-builder.js';
|
|
|
44
46
|
export * from './schema/foreign-key-constraint-builder.js';
|
|
45
47
|
export * from './schema/alter-table-builder.js';
|
|
46
48
|
export * from './schema/create-view-builder.js';
|
|
49
|
+
export * from './schema/refresh-materialized-view-builder.js';
|
|
47
50
|
export * from './schema/drop-view-builder.js';
|
|
48
51
|
export * from './schema/alter-column-builder.js';
|
|
49
52
|
export * from './dynamic/dynamic.js';
|
|
@@ -90,6 +93,8 @@ export * from './plugin/camel-case/camel-case-plugin.js';
|
|
|
90
93
|
export * from './plugin/deduplicate-joins/deduplicate-joins-plugin.js';
|
|
91
94
|
export * from './plugin/with-schema/with-schema-plugin.js';
|
|
92
95
|
export * from './plugin/parse-json-results/parse-json-results-plugin.js';
|
|
96
|
+
export * from './plugin/handle-empty-in-lists/handle-empty-in-lists-plugin.js';
|
|
97
|
+
export * from './plugin/handle-empty-in-lists/handle-empty-in-lists.js';
|
|
93
98
|
export * from './operation-node/add-column-node.js';
|
|
94
99
|
export * from './operation-node/add-constraint-node.js';
|
|
95
100
|
export * from './operation-node/add-index-node.js';
|
|
@@ -102,6 +107,7 @@ export * from './operation-node/binary-operation-node.js';
|
|
|
102
107
|
export * from './operation-node/case-node.js';
|
|
103
108
|
export * from './operation-node/cast-node.js';
|
|
104
109
|
export * from './operation-node/check-constraint-node.js';
|
|
110
|
+
export * from './operation-node/collate-node.js';
|
|
105
111
|
export * from './operation-node/column-definition-node.js';
|
|
106
112
|
export * from './operation-node/column-node.js';
|
|
107
113
|
export * from './operation-node/column-update-node.js';
|
|
@@ -113,6 +119,7 @@ export * from './operation-node/create-schema-node.js';
|
|
|
113
119
|
export * from './operation-node/create-table-node.js';
|
|
114
120
|
export * from './operation-node/create-type-node.js';
|
|
115
121
|
export * from './operation-node/create-view-node.js';
|
|
122
|
+
export * from './operation-node/refresh-materialized-view-node.js';
|
|
116
123
|
export * from './operation-node/data-type-node.js';
|
|
117
124
|
export * from './operation-node/default-insert-value-node.js';
|
|
118
125
|
export * from './operation-node/default-value-node.js';
|
|
@@ -154,6 +161,7 @@ export * from './operation-node/operation-node-transformer.js';
|
|
|
154
161
|
export * from './operation-node/operation-node-visitor.js';
|
|
155
162
|
export * from './operation-node/operation-node.js';
|
|
156
163
|
export * from './operation-node/operator-node.js';
|
|
164
|
+
export * from './operation-node/or-action-node.js';
|
|
157
165
|
export * from './operation-node/or-node.js';
|
|
158
166
|
export * from './operation-node/order-by-item-node.js';
|
|
159
167
|
export * from './operation-node/order-by-node.js';
|
|
@@ -162,13 +170,14 @@ export * from './operation-node/over-node.js';
|
|
|
162
170
|
export * from './operation-node/parens-node.js';
|
|
163
171
|
export * from './operation-node/partition-by-item-node.js';
|
|
164
172
|
export * from './operation-node/partition-by-node.js';
|
|
165
|
-
export * from './operation-node/primary-constraint-node.js';
|
|
173
|
+
export * from './operation-node/primary-key-constraint-node.js';
|
|
166
174
|
export * from './operation-node/primitive-value-list-node.js';
|
|
167
175
|
export * from './operation-node/query-node.js';
|
|
168
176
|
export * from './operation-node/raw-node.js';
|
|
169
177
|
export * from './operation-node/reference-node.js';
|
|
170
178
|
export * from './operation-node/references-node.js';
|
|
171
179
|
export * from './operation-node/rename-column-node.js';
|
|
180
|
+
export * from './operation-node/rename-constraint-node.js';
|
|
172
181
|
export * from './operation-node/returning-node.js';
|
|
173
182
|
export * from './operation-node/schemable-identifier-node.js';
|
|
174
183
|
export * from './operation-node/select-all-node.js';
|
|
@@ -198,6 +207,7 @@ export * from './util/log.js';
|
|
|
198
207
|
export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, Equals, UnknownRow, Simplify, SqlBool, Nullable, NotNull, } from './util/type-utils.js';
|
|
199
208
|
export * from './util/infer-result.js';
|
|
200
209
|
export { logOnce } from './util/log-once.js';
|
|
210
|
+
export { createQueryId, QueryId } from './util/query-id.js';
|
|
201
211
|
export { SelectExpression, SelectCallback, SelectArg, Selection, CallbackSelection, } from './parser/select-parser.js';
|
|
202
212
|
export { ReferenceExpression, ReferenceExpressionOrList, SimpleReferenceExpression, StringReference, ExtractTypeFromStringReference, ExtractTypeFromReferenceExpression, } from './parser/reference-parser.js';
|
|
203
213
|
export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
|
|
@@ -205,7 +215,8 @@ export { SimpleTableReference, TableExpression, TableExpressionOrList, } from '.
|
|
|
205
215
|
export { JoinReferenceExpression, JoinCallbackExpression, } from './parser/join-parser.js';
|
|
206
216
|
export { InsertObject } from './parser/insert-values-parser.js';
|
|
207
217
|
export { UpdateObject } from './parser/update-set-parser.js';
|
|
208
|
-
export { OrderByExpression, OrderByDirectionExpression, } from './parser/order-by-parser.js';
|
|
218
|
+
export { OrderByExpression, OrderByDirectionExpression, OrderByModifiers, OrderByDirection, OrderByModifiersCallbackExpression, } from './parser/order-by-parser.js';
|
|
209
219
|
export { ComparisonOperatorExpression, OperandValueExpression, OperandValueExpressionOrList, FilterObject, } from './parser/binary-operation-parser.js';
|
|
210
220
|
export { ExistsExpression } from './parser/unary-operation-parser.js';
|
|
211
221
|
export { OperandExpression, ExpressionOrFactory, } from './parser/expression-parser.js';
|
|
222
|
+
export { Collation } from './parser/collate-parser.js';
|