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
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { SelectQueryBuilder } from './query-builder/select-query-builder.js';
|
|
2
2
|
import { InsertQueryBuilder } from './query-builder/insert-query-builder.js';
|
|
3
|
-
import {
|
|
4
|
-
import { UpdateQueryBuilder } from './query-builder/update-query-builder.js';
|
|
5
|
-
import { TableExpression, From, FromTables, TableReference, ExtractTableAlias, AnyAliasedTable, PickTableWithAlias } from './parser/table-parser.js';
|
|
3
|
+
import { TableExpressionOrList, SimpleTableReference } from './parser/table-parser.js';
|
|
6
4
|
import { QueryExecutor } from './query-executor/query-executor.js';
|
|
7
5
|
import { CommonTableExpression, QueryCreatorWithCommonTableExpression, RecursiveCommonTableExpression } from './parser/with-parser.js';
|
|
8
6
|
import { WithNode } from './operation-node/with-node.js';
|
|
9
7
|
import { InsertResult } from './query-builder/insert-result.js';
|
|
10
|
-
import { DeleteResult } from './query-builder/delete-result.js';
|
|
11
|
-
import { UpdateResult } from './query-builder/update-result.js';
|
|
12
8
|
import { KyselyPlugin } from './plugin/kysely-plugin.js';
|
|
13
9
|
import { CTEBuilderCallback } from './query-builder/cte-builder.js';
|
|
14
10
|
import { CallbackSelection, SelectCallback, SelectExpression, Selection } from './parser/select-parser.js';
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
11
|
+
import { SelectFrom } from './parser/select-from-parser.js';
|
|
12
|
+
import { DeleteFrom } from './parser/delete-from-parser.js';
|
|
13
|
+
import { UpdateTable } from './parser/update-parser.js';
|
|
14
|
+
import { MergeInto } from './parser/merge-into-parser.js';
|
|
17
15
|
export declare class QueryCreator<DB> {
|
|
18
16
|
#private;
|
|
19
17
|
constructor(props: QueryCreatorProps);
|
|
@@ -124,11 +122,7 @@ export declare class QueryCreator<DB> {
|
|
|
124
122
|
* (select 1 as one) as "q"
|
|
125
123
|
* ```
|
|
126
124
|
*/
|
|
127
|
-
selectFrom<TE extends
|
|
128
|
-
selectFrom<TE extends TableExpression<DB, never>>(from: TE[]): SelectQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, {}>;
|
|
129
|
-
selectFrom<TE extends keyof DB & string>(from: TE): SelectQueryBuilder<DB, ExtractTableAlias<DB, TE>, {}>;
|
|
130
|
-
selectFrom<TE extends AnyAliasedTable<DB>>(from: TE): SelectQueryBuilder<DB & PickTableWithAlias<DB, TE>, ExtractTableAlias<DB & PickTableWithAlias<DB, TE>, TE>, {}>;
|
|
131
|
-
selectFrom<TE extends TableExpression<DB, never>>(from: TE): SelectQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, {}>;
|
|
125
|
+
selectFrom<TE extends TableExpressionOrList<DB, never>>(from: TE): SelectFrom<DB, never, TE>;
|
|
132
126
|
/**
|
|
133
127
|
* Creates a `select` query builder without a `from` clause.
|
|
134
128
|
*
|
|
@@ -218,10 +212,14 @@ export declare class QueryCreator<DB> {
|
|
|
218
212
|
*/
|
|
219
213
|
insertInto<T extends keyof DB & string>(table: T): InsertQueryBuilder<DB, T, InsertResult>;
|
|
220
214
|
/**
|
|
221
|
-
* Creates a replace query.
|
|
215
|
+
* Creates a "replace into" query.
|
|
222
216
|
*
|
|
223
|
-
*
|
|
224
|
-
*
|
|
217
|
+
* This is only supported by some dialects like MySQL or SQLite.
|
|
218
|
+
*
|
|
219
|
+
* Similar to MySQL's {@link InsertQueryBuilder.onDuplicateKeyUpdate} that deletes
|
|
220
|
+
* and inserts values on collision instead of updating existing rows.
|
|
221
|
+
*
|
|
222
|
+
* An alias of SQLite's {@link InsertQueryBuilder.orReplace}.
|
|
225
223
|
*
|
|
226
224
|
* The return value of this query is an instance of {@link InsertResult}. {@link InsertResult}
|
|
227
225
|
* has the {@link InsertResult.insertId | insertId} field that holds the auto incremented id of
|
|
@@ -238,10 +236,16 @@ export declare class QueryCreator<DB> {
|
|
|
238
236
|
* first_name: 'Jennifer',
|
|
239
237
|
* last_name: 'Aniston'
|
|
240
238
|
* })
|
|
241
|
-
* .
|
|
239
|
+
* .executeTakeFirstOrThrow()
|
|
242
240
|
*
|
|
243
241
|
* console.log(result.insertId)
|
|
244
242
|
* ```
|
|
243
|
+
*
|
|
244
|
+
* The generated SQL (MySQL):
|
|
245
|
+
*
|
|
246
|
+
* ```sql
|
|
247
|
+
* replace into `person` (`first_name`, `last_name`) values (?, ?)
|
|
248
|
+
* ```
|
|
245
249
|
*/
|
|
246
250
|
replaceInto<T extends keyof DB & string>(table: T): InsertQueryBuilder<DB, T, InsertResult>;
|
|
247
251
|
/**
|
|
@@ -293,10 +297,7 @@ export declare class QueryCreator<DB> {
|
|
|
293
297
|
* where `person`.`id` = ?
|
|
294
298
|
* ```
|
|
295
299
|
*/
|
|
296
|
-
deleteFrom<
|
|
297
|
-
deleteFrom<TR extends TableReference<DB>>(tables: TR[]): DeleteQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, DeleteResult>;
|
|
298
|
-
deleteFrom<TR extends keyof DB & string>(from: TR): DeleteQueryBuilder<DB, ExtractTableAlias<DB, TR>, DeleteResult>;
|
|
299
|
-
deleteFrom<TR extends TableReference<DB>>(table: TR): DeleteQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, DeleteResult>;
|
|
300
|
+
deleteFrom<TE extends TableExpressionOrList<DB, never>>(from: TE): DeleteFrom<DB, TE>;
|
|
300
301
|
/**
|
|
301
302
|
* Creates an update query.
|
|
302
303
|
*
|
|
@@ -320,9 +321,7 @@ export declare class QueryCreator<DB> {
|
|
|
320
321
|
* console.log(result.numUpdatedRows)
|
|
321
322
|
* ```
|
|
322
323
|
*/
|
|
323
|
-
updateTable<
|
|
324
|
-
updateTable<TR extends AnyAliasedTable<DB>>(table: TR): UpdateQueryBuilder<DB & PickTableWithAlias<DB, TR>, ExtractTableAlias<DB & PickTableWithAlias<DB, TR>, TR>, ExtractTableAlias<DB & PickTableWithAlias<DB, TR>, TR>, UpdateResult>;
|
|
325
|
-
updateTable<TR extends TableReference<DB>>(table: TR): UpdateQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, FromTables<DB, never, TR>, UpdateResult>;
|
|
324
|
+
updateTable<TE extends TableExpressionOrList<DB, never>>(tables: TE): UpdateTable<DB, TE>;
|
|
326
325
|
/**
|
|
327
326
|
* Creates a merge query.
|
|
328
327
|
*
|
|
@@ -406,8 +405,7 @@ export declare class QueryCreator<DB> {
|
|
|
406
405
|
* then delete
|
|
407
406
|
* ```
|
|
408
407
|
*/
|
|
409
|
-
mergeInto<TR extends
|
|
410
|
-
mergeInto<TR extends AnyAliasedTable<DB>>(targetTable: TR): MergeQueryBuilder<DB & PickTableWithAlias<DB, TR>, ExtractTableAlias<DB & PickTableWithAlias<DB, TR>, TR>, MergeResult>;
|
|
408
|
+
mergeInto<TR extends SimpleTableReference<DB>>(targetTable: TR): MergeInto<DB, TR>;
|
|
411
409
|
/**
|
|
412
410
|
* Creates a `with` query (Common Table Expression).
|
|
413
411
|
*
|
|
@@ -23,6 +23,113 @@ class QueryCreator {
|
|
|
23
23
|
constructor(props) {
|
|
24
24
|
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Creates a `select` query builder for the given table or tables.
|
|
28
|
+
*
|
|
29
|
+
* The tables passed to this method are built as the query's `from` clause.
|
|
30
|
+
*
|
|
31
|
+
* ### Examples
|
|
32
|
+
*
|
|
33
|
+
* Create a select query for one table:
|
|
34
|
+
*
|
|
35
|
+
* ```ts
|
|
36
|
+
* db.selectFrom('person').selectAll()
|
|
37
|
+
* ```
|
|
38
|
+
*
|
|
39
|
+
* The generated SQL (PostgreSQL):
|
|
40
|
+
*
|
|
41
|
+
* ```sql
|
|
42
|
+
* select * from "person"
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* Create a select query for one table with an alias:
|
|
46
|
+
*
|
|
47
|
+
* ```ts
|
|
48
|
+
* const persons = await db.selectFrom('person as p')
|
|
49
|
+
* .select(['p.id', 'first_name'])
|
|
50
|
+
* .execute()
|
|
51
|
+
*
|
|
52
|
+
* console.log(persons[0].id)
|
|
53
|
+
* ```
|
|
54
|
+
*
|
|
55
|
+
* The generated SQL (PostgreSQL):
|
|
56
|
+
*
|
|
57
|
+
* ```sql
|
|
58
|
+
* select "p"."id", "first_name" from "person" as "p"
|
|
59
|
+
* ```
|
|
60
|
+
*
|
|
61
|
+
* Create a select query from a subquery:
|
|
62
|
+
*
|
|
63
|
+
* ```ts
|
|
64
|
+
* const persons = await db.selectFrom(
|
|
65
|
+
* (eb) => eb.selectFrom('person').select('person.id as identifier').as('p')
|
|
66
|
+
* )
|
|
67
|
+
* .select('p.identifier')
|
|
68
|
+
* .execute()
|
|
69
|
+
*
|
|
70
|
+
* console.log(persons[0].identifier)
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* The generated SQL (PostgreSQL):
|
|
74
|
+
*
|
|
75
|
+
* ```sql
|
|
76
|
+
* select "p"."identifier",
|
|
77
|
+
* from (
|
|
78
|
+
* select "person"."id" as "identifier" from "person"
|
|
79
|
+
* ) as p
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* Create a select query from raw sql:
|
|
83
|
+
*
|
|
84
|
+
* ```ts
|
|
85
|
+
* import { sql } from 'kysely'
|
|
86
|
+
*
|
|
87
|
+
* const items = await db
|
|
88
|
+
* .selectFrom(sql<{ one: number }>`(select 1 as one)`.as('q'))
|
|
89
|
+
* .select('q.one')
|
|
90
|
+
* .execute()
|
|
91
|
+
*
|
|
92
|
+
* console.log(items[0].one)
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* The generated SQL (PostgreSQL):
|
|
96
|
+
*
|
|
97
|
+
* ```sql
|
|
98
|
+
* select "q"."one",
|
|
99
|
+
* from (
|
|
100
|
+
* select 1 as one
|
|
101
|
+
* ) as q
|
|
102
|
+
* ```
|
|
103
|
+
*
|
|
104
|
+
* When you use the `sql` tag you need to also provide the result type of the
|
|
105
|
+
* raw snippet / query so that Kysely can figure out what columns are
|
|
106
|
+
* available for the rest of the query.
|
|
107
|
+
*
|
|
108
|
+
* The `selectFrom` method also accepts an array for multiple tables. All
|
|
109
|
+
* the above examples can also be used in an array.
|
|
110
|
+
*
|
|
111
|
+
* ```ts
|
|
112
|
+
* import { sql } from 'kysely'
|
|
113
|
+
*
|
|
114
|
+
* const items = await db.selectFrom([
|
|
115
|
+
* 'person as p',
|
|
116
|
+
* db.selectFrom('pet').select('pet.species').as('a'),
|
|
117
|
+
* sql<{ one: number }>`(select 1 as one)`.as('q')
|
|
118
|
+
* ])
|
|
119
|
+
* .select(['p.id', 'a.species', 'q.one'])
|
|
120
|
+
* .execute()
|
|
121
|
+
* ```
|
|
122
|
+
*
|
|
123
|
+
* The generated SQL (PostgreSQL):
|
|
124
|
+
*
|
|
125
|
+
* ```sql
|
|
126
|
+
* select "p".id, "a"."species", "q"."one"
|
|
127
|
+
* from
|
|
128
|
+
* "person" as "p",
|
|
129
|
+
* (select "pet"."species" from "pet") as a,
|
|
130
|
+
* (select 1 as one) as "q"
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
26
133
|
selectFrom(from) {
|
|
27
134
|
return (0, select_query_builder_js_1.createSelectQueryBuilder)({
|
|
28
135
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
@@ -83,10 +190,14 @@ class QueryCreator {
|
|
|
83
190
|
});
|
|
84
191
|
}
|
|
85
192
|
/**
|
|
86
|
-
* Creates a replace query.
|
|
193
|
+
* Creates a "replace into" query.
|
|
194
|
+
*
|
|
195
|
+
* This is only supported by some dialects like MySQL or SQLite.
|
|
196
|
+
*
|
|
197
|
+
* Similar to MySQL's {@link InsertQueryBuilder.onDuplicateKeyUpdate} that deletes
|
|
198
|
+
* and inserts values on collision instead of updating existing rows.
|
|
87
199
|
*
|
|
88
|
-
*
|
|
89
|
-
* that deletes and inserts values on collision instead of updating existing rows.
|
|
200
|
+
* An alias of SQLite's {@link InsertQueryBuilder.orReplace}.
|
|
90
201
|
*
|
|
91
202
|
* The return value of this query is an instance of {@link InsertResult}. {@link InsertResult}
|
|
92
203
|
* has the {@link InsertResult.insertId | insertId} field that holds the auto incremented id of
|
|
@@ -103,10 +214,16 @@ class QueryCreator {
|
|
|
103
214
|
* first_name: 'Jennifer',
|
|
104
215
|
* last_name: 'Aniston'
|
|
105
216
|
* })
|
|
106
|
-
* .
|
|
217
|
+
* .executeTakeFirstOrThrow()
|
|
107
218
|
*
|
|
108
219
|
* console.log(result.insertId)
|
|
109
220
|
* ```
|
|
221
|
+
*
|
|
222
|
+
* The generated SQL (MySQL):
|
|
223
|
+
*
|
|
224
|
+
* ```sql
|
|
225
|
+
* replace into `person` (`first_name`, `last_name`) values (?, ?)
|
|
226
|
+
* ```
|
|
110
227
|
*/
|
|
111
228
|
replaceInto(table) {
|
|
112
229
|
return new insert_query_builder_js_1.InsertQueryBuilder({
|
|
@@ -115,20 +232,175 @@ class QueryCreator {
|
|
|
115
232
|
queryNode: insert_query_node_js_1.InsertQueryNode.create((0, table_parser_js_1.parseTable)(table), this.#props.withNode, true),
|
|
116
233
|
});
|
|
117
234
|
}
|
|
118
|
-
|
|
235
|
+
/**
|
|
236
|
+
* Creates a delete query.
|
|
237
|
+
*
|
|
238
|
+
* See the {@link DeleteQueryBuilder.where} method for examples on how to specify
|
|
239
|
+
* a where clause for the delete operation.
|
|
240
|
+
*
|
|
241
|
+
* The return value of the query is an instance of {@link DeleteResult}.
|
|
242
|
+
*
|
|
243
|
+
* ### Examples
|
|
244
|
+
*
|
|
245
|
+
* <!-- siteExample("delete", "Single row", 10) -->
|
|
246
|
+
*
|
|
247
|
+
* Delete a single row:
|
|
248
|
+
*
|
|
249
|
+
* ```ts
|
|
250
|
+
* const result = await db
|
|
251
|
+
* .deleteFrom('person')
|
|
252
|
+
* .where('person.id', '=', 1)
|
|
253
|
+
* .executeTakeFirst()
|
|
254
|
+
*
|
|
255
|
+
* console.log(result.numDeletedRows)
|
|
256
|
+
* ```
|
|
257
|
+
*
|
|
258
|
+
* The generated SQL (PostgreSQL):
|
|
259
|
+
*
|
|
260
|
+
* ```sql
|
|
261
|
+
* delete from "person" where "person"."id" = $1
|
|
262
|
+
* ```
|
|
263
|
+
*
|
|
264
|
+
* Some databases such as MySQL support deleting from multiple tables:
|
|
265
|
+
*
|
|
266
|
+
* ```ts
|
|
267
|
+
* const result = await db
|
|
268
|
+
* .deleteFrom(['person', 'pet'])
|
|
269
|
+
* .using('person')
|
|
270
|
+
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
271
|
+
* .where('person.id', '=', 1)
|
|
272
|
+
* .executeTakeFirst()
|
|
273
|
+
* ```
|
|
274
|
+
*
|
|
275
|
+
* The generated SQL (MySQL):
|
|
276
|
+
*
|
|
277
|
+
* ```sql
|
|
278
|
+
* delete from `person`, `pet`
|
|
279
|
+
* using `person`
|
|
280
|
+
* inner join `pet` on `pet`.`owner_id` = `person`.`id`
|
|
281
|
+
* where `person`.`id` = ?
|
|
282
|
+
* ```
|
|
283
|
+
*/
|
|
284
|
+
deleteFrom(from) {
|
|
119
285
|
return new delete_query_builder_js_1.DeleteQueryBuilder({
|
|
120
286
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
121
287
|
executor: this.#props.executor,
|
|
122
|
-
queryNode: delete_query_node_js_1.DeleteQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(
|
|
288
|
+
queryNode: delete_query_node_js_1.DeleteQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(from), this.#props.withNode),
|
|
123
289
|
});
|
|
124
290
|
}
|
|
125
|
-
|
|
291
|
+
/**
|
|
292
|
+
* Creates an update query.
|
|
293
|
+
*
|
|
294
|
+
* See the {@link UpdateQueryBuilder.where} method for examples on how to specify
|
|
295
|
+
* a where clause for the update operation.
|
|
296
|
+
*
|
|
297
|
+
* See the {@link UpdateQueryBuilder.set} method for examples on how to
|
|
298
|
+
* specify the updates.
|
|
299
|
+
*
|
|
300
|
+
* The return value of the query is an {@link UpdateResult}.
|
|
301
|
+
*
|
|
302
|
+
* ### Examples
|
|
303
|
+
*
|
|
304
|
+
* ```ts
|
|
305
|
+
* const result = await db
|
|
306
|
+
* .updateTable('person')
|
|
307
|
+
* .set({ first_name: 'Jennifer' })
|
|
308
|
+
* .where('person.id', '=', 1)
|
|
309
|
+
* .executeTakeFirst()
|
|
310
|
+
*
|
|
311
|
+
* console.log(result.numUpdatedRows)
|
|
312
|
+
* ```
|
|
313
|
+
*/
|
|
314
|
+
updateTable(tables) {
|
|
126
315
|
return new update_query_builder_js_1.UpdateQueryBuilder({
|
|
127
316
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
128
317
|
executor: this.#props.executor,
|
|
129
|
-
queryNode: update_query_node_js_1.UpdateQueryNode.create((0, table_parser_js_1.
|
|
318
|
+
queryNode: update_query_node_js_1.UpdateQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(tables), this.#props.withNode),
|
|
130
319
|
});
|
|
131
320
|
}
|
|
321
|
+
/**
|
|
322
|
+
* Creates a merge query.
|
|
323
|
+
*
|
|
324
|
+
* The return value of the query is a {@link MergeResult}.
|
|
325
|
+
*
|
|
326
|
+
* See the {@link MergeQueryBuilder.using} method for examples on how to specify
|
|
327
|
+
* the other table.
|
|
328
|
+
*
|
|
329
|
+
* ### Examples
|
|
330
|
+
*
|
|
331
|
+
* <!-- siteExample("merge", "Source row existence", 10) -->
|
|
332
|
+
*
|
|
333
|
+
* Update a target column based on the existence of a source row:
|
|
334
|
+
*
|
|
335
|
+
* ```ts
|
|
336
|
+
* const result = await db
|
|
337
|
+
* .mergeInto('person as target')
|
|
338
|
+
* .using('pet as source', 'source.owner_id', 'target.id')
|
|
339
|
+
* .whenMatchedAnd('target.has_pets', '!=', 'Y')
|
|
340
|
+
* .thenUpdateSet({ has_pets: 'Y' })
|
|
341
|
+
* .whenNotMatchedBySourceAnd('target.has_pets', '=', 'Y')
|
|
342
|
+
* .thenUpdateSet({ has_pets: 'N' })
|
|
343
|
+
* .executeTakeFirstOrThrow()
|
|
344
|
+
*
|
|
345
|
+
* console.log(result.numChangedRows)
|
|
346
|
+
* ```
|
|
347
|
+
*
|
|
348
|
+
* The generated SQL (PostgreSQL):
|
|
349
|
+
*
|
|
350
|
+
* ```sql
|
|
351
|
+
* merge into "person"
|
|
352
|
+
* using "pet"
|
|
353
|
+
* on "pet"."owner_id" = "person"."id"
|
|
354
|
+
* when matched and "has_pets" != $1
|
|
355
|
+
* then update set "has_pets" = $2
|
|
356
|
+
* when not matched by source and "has_pets" = $3
|
|
357
|
+
* then update set "has_pets" = $4
|
|
358
|
+
* ```
|
|
359
|
+
*
|
|
360
|
+
* <!-- siteExample("merge", "Temporary changes table", 20) -->
|
|
361
|
+
*
|
|
362
|
+
* Merge new entries from a temporary changes table:
|
|
363
|
+
*
|
|
364
|
+
* ```ts
|
|
365
|
+
* const result = await db
|
|
366
|
+
* .mergeInto('wine as target')
|
|
367
|
+
* .using(
|
|
368
|
+
* 'wine_stock_change as source',
|
|
369
|
+
* 'source.wine_name',
|
|
370
|
+
* 'target.name',
|
|
371
|
+
* )
|
|
372
|
+
* .whenNotMatchedAnd('source.stock_delta', '>', 0)
|
|
373
|
+
* .thenInsertValues(({ ref }) => ({
|
|
374
|
+
* name: ref('source.wine_name'),
|
|
375
|
+
* stock: ref('source.stock_delta'),
|
|
376
|
+
* }))
|
|
377
|
+
* .whenMatchedAnd(
|
|
378
|
+
* (eb) => eb('target.stock', '+', eb.ref('source.stock_delta')),
|
|
379
|
+
* '>',
|
|
380
|
+
* 0,
|
|
381
|
+
* )
|
|
382
|
+
* .thenUpdateSet('stock', (eb) =>
|
|
383
|
+
* eb('target.stock', '+', eb.ref('source.stock_delta')),
|
|
384
|
+
* )
|
|
385
|
+
* .whenMatched()
|
|
386
|
+
* .thenDelete()
|
|
387
|
+
* .executeTakeFirstOrThrow()
|
|
388
|
+
* ```
|
|
389
|
+
*
|
|
390
|
+
* The generated SQL (PostgreSQL):
|
|
391
|
+
*
|
|
392
|
+
* ```sql
|
|
393
|
+
* merge into "wine" as "target"
|
|
394
|
+
* using "wine_stock_change" as "source"
|
|
395
|
+
* on "source"."wine_name" = "target"."name"
|
|
396
|
+
* when not matched and "source"."stock_delta" > $1
|
|
397
|
+
* then insert ("name", "stock") values ("source"."wine_name", "source"."stock_delta")
|
|
398
|
+
* when matched and "target"."stock" + "source"."stock_delta" > $2
|
|
399
|
+
* then update set "stock" = "target"."stock" + "source"."stock_delta"
|
|
400
|
+
* when matched
|
|
401
|
+
* then delete
|
|
402
|
+
* ```
|
|
403
|
+
*/
|
|
132
404
|
mergeInto(targetTable) {
|
|
133
405
|
return new merge_query_builder_js_1.MergeQueryBuilder({
|
|
134
406
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
@@ -5,6 +5,7 @@ import { RootOperationNode, QueryCompiler } from '../query-compiler/query-compil
|
|
|
5
5
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
6
6
|
import { QueryExecutorBase } from './query-executor-base.js';
|
|
7
7
|
import { DialectAdapter } from '../dialect/dialect-adapter.js';
|
|
8
|
+
import { QueryId } from '../util/query-id.js';
|
|
8
9
|
export declare class DefaultQueryExecutor extends QueryExecutorBase {
|
|
9
10
|
#private;
|
|
10
11
|
constructor(compiler: QueryCompiler, adapter: DialectAdapter, connectionProvider: ConnectionProvider, plugins?: KyselyPlugin[]);
|
|
@@ -17,7 +18,7 @@ export declare class DefaultQueryExecutor extends QueryExecutorBase {
|
|
|
17
18
|
* the output of {@link transformQuery} into this method but you can
|
|
18
19
|
* compile any query using this method.
|
|
19
20
|
*/
|
|
20
|
-
compileQuery(node: RootOperationNode): CompiledQuery;
|
|
21
|
+
compileQuery(node: RootOperationNode, queryId: QueryId): CompiledQuery;
|
|
21
22
|
/**
|
|
22
23
|
* Provides a connection for the callback and takes care of disposing
|
|
23
24
|
* the connection after the callback has been run.
|
|
@@ -15,8 +15,8 @@ class DefaultQueryExecutor extends query_executor_base_js_1.QueryExecutorBase {
|
|
|
15
15
|
get adapter() {
|
|
16
16
|
return this.#adapter;
|
|
17
17
|
}
|
|
18
|
-
compileQuery(node) {
|
|
19
|
-
return this.#compiler.compileQuery(node);
|
|
18
|
+
compileQuery(node, queryId) {
|
|
19
|
+
return this.#compiler.compileQuery(node, queryId);
|
|
20
20
|
}
|
|
21
21
|
provideConnection(consumer) {
|
|
22
22
|
return this.#connectionProvider.provideConnection(consumer);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.QueryExecutorBase = void 0;
|
|
4
4
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
-
const
|
|
5
|
+
const provide_controlled_connection_js_1 = require("../util/provide-controlled-connection.js");
|
|
6
6
|
const log_once_js_1 = require("../util/log-once.js");
|
|
7
7
|
const NO_PLUGINS = (0, object_utils_js_1.freeze)([]);
|
|
8
8
|
class QueryExecutorBase {
|
|
@@ -35,28 +35,21 @@ class QueryExecutorBase {
|
|
|
35
35
|
async executeQuery(compiledQuery, queryId) {
|
|
36
36
|
return await this.provideConnection(async (connection) => {
|
|
37
37
|
const result = await connection.executeQuery(compiledQuery);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
return
|
|
38
|
+
if ('numUpdatedOrDeletedRows' in result) {
|
|
39
|
+
(0, log_once_js_1.logOnce)('kysely:warning: outdated driver/plugin detected! `QueryResult.numUpdatedOrDeletedRows` has been replaced with `QueryResult.numAffectedRows`.');
|
|
40
|
+
}
|
|
41
|
+
return await this.#transformResult(result, queryId);
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
async *stream(compiledQuery, chunkSize, queryId) {
|
|
45
|
-
const
|
|
46
|
-
const connectionReleaseDefer = new deferred_js_1.Deferred();
|
|
47
|
-
this.provideConnection(async (connection) => {
|
|
48
|
-
connectionDefer.resolve(connection);
|
|
49
|
-
// Lets wait until we don't need connection before returning here (returning releases connection)
|
|
50
|
-
return await connectionReleaseDefer.promise;
|
|
51
|
-
}).catch((ex) => connectionDefer.reject(ex));
|
|
52
|
-
const connection = await connectionDefer.promise;
|
|
45
|
+
const { connection, release } = await (0, provide_controlled_connection_js_1.provideControlledConnection)(this);
|
|
53
46
|
try {
|
|
54
47
|
for await (const result of connection.streamQuery(compiledQuery, chunkSize)) {
|
|
55
48
|
yield await this.#transformResult(result, queryId);
|
|
56
49
|
}
|
|
57
50
|
}
|
|
58
51
|
finally {
|
|
59
|
-
|
|
52
|
+
release();
|
|
60
53
|
}
|
|
61
54
|
}
|
|
62
55
|
async #transformResult(result, queryId) {
|
|
@@ -67,14 +60,3 @@ class QueryExecutorBase {
|
|
|
67
60
|
}
|
|
68
61
|
}
|
|
69
62
|
exports.QueryExecutorBase = QueryExecutorBase;
|
|
70
|
-
// TODO: remove.
|
|
71
|
-
function warnOfOutdatedDriverOrPlugins(result, transformedResult) {
|
|
72
|
-
const { numAffectedRows } = result;
|
|
73
|
-
if ((numAffectedRows === undefined &&
|
|
74
|
-
result.numUpdatedOrDeletedRows === undefined) ||
|
|
75
|
-
(numAffectedRows !== undefined &&
|
|
76
|
-
transformedResult.numAffectedRows !== undefined)) {
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
(0, log_once_js_1.logOnce)('kysely:warning: outdated driver/plugin detected! QueryResult.numUpdatedOrDeletedRows is deprecated and will be removed in a future release.');
|
|
80
|
-
}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createRawBuilder = createRawBuilder;
|
|
4
4
|
const alias_node_js_1 = require("../operation-node/alias-node.js");
|
|
5
|
-
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
6
5
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
7
6
|
const noop_query_executor_js_1 = require("../query-executor/noop-query-executor.js");
|
|
8
7
|
const identifier_node_js_1 = require("../operation-node/identifier-node.js");
|
|
@@ -63,7 +62,6 @@ class RawBuilderImpl {
|
|
|
63
62
|
function createRawBuilder(props) {
|
|
64
63
|
return new RawBuilderImpl(props);
|
|
65
64
|
}
|
|
66
|
-
(0, prevent_await_js_1.preventAwait)(RawBuilderImpl, "don't await RawBuilder instances directly. To execute the query you need to call `execute`");
|
|
67
65
|
class AliasedRawBuilderImpl {
|
|
68
66
|
#rawBuilder;
|
|
69
67
|
#alias;
|
|
@@ -86,4 +84,3 @@ class AliasedRawBuilderImpl {
|
|
|
86
84
|
: identifier_node_js_1.IdentifierNode.create(this.#alias));
|
|
87
85
|
}
|
|
88
86
|
}
|
|
89
|
-
(0, prevent_await_js_1.preventAwait)(AliasedRawBuilderImpl, "don't await AliasedRawBuilder instances directly. AliasedRawBuilder should never be executed directly since it's always a part of another query.");
|
|
@@ -199,7 +199,7 @@ export interface Sql {
|
|
|
199
199
|
* select first_name from "person"
|
|
200
200
|
* ```
|
|
201
201
|
*
|
|
202
|
-
* The
|
|
202
|
+
* The references can also include a schema on supported databases:
|
|
203
203
|
*
|
|
204
204
|
* ```ts
|
|
205
205
|
* const table = 'public.person'
|
|
@@ -213,7 +213,7 @@ export interface Sql {
|
|
|
213
213
|
* select first_name from "public"."person"
|
|
214
214
|
* ```
|
|
215
215
|
*/
|
|
216
|
-
table(tableReference: string): RawBuilder<
|
|
216
|
+
table<T = unknown>(tableReference: string): RawBuilder<T>;
|
|
217
217
|
/**
|
|
218
218
|
* This can be used to add arbitrary identifiers to SQL snippets.
|
|
219
219
|
*
|
|
@@ -255,7 +255,7 @@ export interface Sql {
|
|
|
255
255
|
* select "public"."person"."first_name" from "public"."person"
|
|
256
256
|
* ```
|
|
257
257
|
*/
|
|
258
|
-
id(...ids: readonly string[]): RawBuilder<
|
|
258
|
+
id<T = unknown>(...ids: readonly string[]): RawBuilder<T>;
|
|
259
259
|
/**
|
|
260
260
|
* This can be used to add literal values to SQL snippets.
|
|
261
261
|
*
|
|
@@ -361,6 +361,6 @@ export interface Sql {
|
|
|
361
361
|
* BEFORE $1::varchar, (1 == 1)::varchar, (select * from "person")::varchar, false::varchar, "first_name" AFTER
|
|
362
362
|
* ```
|
|
363
363
|
*/
|
|
364
|
-
join(array: readonly unknown[], separator?: RawBuilder<any>): RawBuilder<
|
|
364
|
+
join<T = unknown>(array: readonly unknown[], separator?: RawBuilder<any>): RawBuilder<T>;
|
|
365
365
|
}
|
|
366
366
|
export declare const sql: Sql;
|
|
@@ -62,7 +62,7 @@ exports.sql = Object.assign((sqlFragments, ...parameters) => {
|
|
|
62
62
|
});
|
|
63
63
|
},
|
|
64
64
|
join(array, separator = (0, exports.sql) `, `) {
|
|
65
|
-
const nodes = new Array(2 * array.length - 1);
|
|
65
|
+
const nodes = new Array(Math.max(2 * array.length - 1, 0));
|
|
66
66
|
const sep = separator.toOperationNode();
|
|
67
67
|
for (let i = 0; i < array.length; ++i) {
|
|
68
68
|
nodes[2 * i] = parseParameter(array[i]);
|
|
@@ -4,7 +4,6 @@ exports.AlteredColumnBuilder = exports.AlterColumnBuilder = void 0;
|
|
|
4
4
|
const alter_column_node_js_1 = require("../operation-node/alter-column-node.js");
|
|
5
5
|
const data_type_parser_js_1 = require("../parser/data-type-parser.js");
|
|
6
6
|
const default_value_parser_js_1 = require("../parser/default-value-parser.js");
|
|
7
|
-
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
8
7
|
class AlterColumnBuilder {
|
|
9
8
|
#column;
|
|
10
9
|
constructor(column) {
|
|
@@ -34,7 +33,6 @@ class AlterColumnBuilder {
|
|
|
34
33
|
}
|
|
35
34
|
}
|
|
36
35
|
exports.AlterColumnBuilder = AlterColumnBuilder;
|
|
37
|
-
(0, prevent_await_js_1.preventAwait)(AlterColumnBuilder, "don't await AlterColumnBuilder instances");
|
|
38
36
|
/**
|
|
39
37
|
* Allows us to force consumers to do exactly one alteration to a column.
|
|
40
38
|
*
|
|
@@ -74,4 +72,3 @@ class AlteredColumnBuilder {
|
|
|
74
72
|
}
|
|
75
73
|
}
|
|
76
74
|
exports.AlteredColumnBuilder = AlteredColumnBuilder;
|
|
77
|
-
(0, prevent_await_js_1.preventAwait)(AlteredColumnBuilder, "don't await AlteredColumnBuilder instances");
|
|
@@ -11,6 +11,10 @@ export declare class AlterTableAddForeignKeyConstraintBuilder implements Foreign
|
|
|
11
11
|
constructor(props: AlterTableAddForeignKeyConstraintBuilderProps);
|
|
12
12
|
onDelete(onDelete: OnModifyForeignAction): AlterTableAddForeignKeyConstraintBuilder;
|
|
13
13
|
onUpdate(onUpdate: OnModifyForeignAction): AlterTableAddForeignKeyConstraintBuilder;
|
|
14
|
+
deferrable(): AlterTableAddForeignKeyConstraintBuilder;
|
|
15
|
+
notDeferrable(): AlterTableAddForeignKeyConstraintBuilder;
|
|
16
|
+
initiallyDeferred(): AlterTableAddForeignKeyConstraintBuilder;
|
|
17
|
+
initiallyImmediate(): AlterTableAddForeignKeyConstraintBuilder;
|
|
14
18
|
/**
|
|
15
19
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
16
20
|
* what the provided function returns.
|
|
@@ -4,7 +4,6 @@ exports.AlterTableAddForeignKeyConstraintBuilder = void 0;
|
|
|
4
4
|
const add_constraint_node_js_1 = require("../operation-node/add-constraint-node.js");
|
|
5
5
|
const alter_table_node_js_1 = require("../operation-node/alter-table-node.js");
|
|
6
6
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
7
|
-
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
8
7
|
class AlterTableAddForeignKeyConstraintBuilder {
|
|
9
8
|
#props;
|
|
10
9
|
constructor(props) {
|
|
@@ -22,6 +21,30 @@ class AlterTableAddForeignKeyConstraintBuilder {
|
|
|
22
21
|
constraintBuilder: this.#props.constraintBuilder.onUpdate(onUpdate),
|
|
23
22
|
});
|
|
24
23
|
}
|
|
24
|
+
deferrable() {
|
|
25
|
+
return new AlterTableAddForeignKeyConstraintBuilder({
|
|
26
|
+
...this.#props,
|
|
27
|
+
constraintBuilder: this.#props.constraintBuilder.deferrable(),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
notDeferrable() {
|
|
31
|
+
return new AlterTableAddForeignKeyConstraintBuilder({
|
|
32
|
+
...this.#props,
|
|
33
|
+
constraintBuilder: this.#props.constraintBuilder.notDeferrable(),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
initiallyDeferred() {
|
|
37
|
+
return new AlterTableAddForeignKeyConstraintBuilder({
|
|
38
|
+
...this.#props,
|
|
39
|
+
constraintBuilder: this.#props.constraintBuilder.initiallyDeferred(),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
initiallyImmediate() {
|
|
43
|
+
return new AlterTableAddForeignKeyConstraintBuilder({
|
|
44
|
+
...this.#props,
|
|
45
|
+
constraintBuilder: this.#props.constraintBuilder.initiallyImmediate(),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
25
48
|
/**
|
|
26
49
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
27
50
|
* what the provided function returns.
|
|
@@ -42,4 +65,3 @@ class AlterTableAddForeignKeyConstraintBuilder {
|
|
|
42
65
|
}
|
|
43
66
|
}
|
|
44
67
|
exports.AlterTableAddForeignKeyConstraintBuilder = AlterTableAddForeignKeyConstraintBuilder;
|
|
45
|
-
(0, prevent_await_js_1.preventAwait)(AlterTableAddForeignKeyConstraintBuilder, "don't await AlterTableAddForeignKeyConstraintBuilder instances directly. To execute the query you need to call `execute`");
|