kysely 0.23.3 → 0.23.5

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.
Files changed (118) hide show
  1. package/README.md +25 -25
  2. package/dist/cjs/dialect/database-introspector.d.ts +4 -2
  3. package/dist/cjs/dialect/dialect-adapter-base.d.ts +32 -6
  4. package/dist/cjs/dialect/dialect-adapter.d.ts +50 -8
  5. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +32 -6
  6. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +1 -1
  7. package/dist/cjs/dialect/mysql/mysql-introspector.js +21 -15
  8. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +32 -6
  9. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
  10. package/dist/cjs/dialect/postgres/postgres-introspector.js +5 -3
  11. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +32 -6
  12. package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  13. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +8 -7
  14. package/dist/cjs/index.d.ts +1 -0
  15. package/dist/cjs/index.js +1 -0
  16. package/dist/cjs/migration/migrator.d.ts +8 -3
  17. package/dist/cjs/migration/migrator.js +15 -5
  18. package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -2
  19. package/dist/cjs/operation-node/aggregate-function-node.js +2 -2
  20. package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
  21. package/dist/cjs/operation-node/delete-query-node.d.ts +4 -1
  22. package/dist/cjs/operation-node/delete-query-node.js +11 -2
  23. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  24. package/dist/cjs/operation-node/operation-node-transformer.js +10 -1
  25. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  26. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  27. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  28. package/dist/cjs/operation-node/operator-node.d.ts +1 -1
  29. package/dist/cjs/operation-node/operator-node.js +1 -0
  30. package/dist/cjs/operation-node/using-node.d.ts +13 -0
  31. package/dist/cjs/operation-node/using-node.js +24 -0
  32. package/dist/cjs/parser/expression-parser.js +1 -1
  33. package/dist/cjs/parser/table-parser.d.ts +1 -0
  34. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  35. package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  36. package/dist/cjs/plugin/camel-case/camel-case-plugin.js +10 -4
  37. package/dist/cjs/query-builder/delete-query-builder.d.ts +103 -11
  38. package/dist/cjs/query-builder/delete-query-builder.js +40 -9
  39. package/dist/cjs/query-builder/function-module.d.ts +273 -39
  40. package/dist/cjs/query-builder/function-module.js +156 -34
  41. package/dist/cjs/query-builder/insert-query-builder.d.ts +25 -10
  42. package/dist/cjs/query-builder/insert-query-builder.js +32 -9
  43. package/dist/cjs/query-builder/select-query-builder.d.ts +51 -34
  44. package/dist/cjs/query-builder/select-query-builder.js +53 -29
  45. package/dist/cjs/query-builder/update-query-builder.d.ts +26 -10
  46. package/dist/cjs/query-builder/update-query-builder.js +33 -9
  47. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  48. package/dist/cjs/query-compiler/default-query-compiler.js +12 -1
  49. package/dist/cjs/query-creator.d.ts +29 -0
  50. package/dist/cjs/query-creator.js +2 -21
  51. package/dist/cjs/raw-builder/raw-builder.d.ts +4 -0
  52. package/dist/cjs/raw-builder/raw-builder.js +8 -2
  53. package/dist/cjs/schema/alter-table-builder.d.ts +5 -1
  54. package/dist/cjs/schema/alter-table-builder.js +8 -2
  55. package/dist/cjs/schema/create-index-builder.d.ts +6 -0
  56. package/dist/cjs/schema/create-index-builder.js +13 -0
  57. package/dist/cjs/schema/create-table-builder.d.ts +6 -2
  58. package/dist/cjs/schema/create-table-builder.js +9 -3
  59. package/dist/cjs/util/type-utils.d.ts +20 -1
  60. package/dist/esm/dialect/database-introspector.d.ts +4 -2
  61. package/dist/esm/dialect/dialect-adapter-base.d.ts +32 -6
  62. package/dist/esm/dialect/dialect-adapter.d.ts +50 -8
  63. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +32 -6
  64. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +1 -1
  65. package/dist/esm/dialect/mysql/mysql-introspector.js +21 -15
  66. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +32 -6
  67. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
  68. package/dist/esm/dialect/postgres/postgres-introspector.js +5 -3
  69. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +32 -6
  70. package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +1 -1
  71. package/dist/esm/dialect/sqlite/sqlite-introspector.js +8 -7
  72. package/dist/esm/index.d.ts +1 -0
  73. package/dist/esm/index.js +1 -0
  74. package/dist/esm/migration/migrator.d.ts +8 -3
  75. package/dist/esm/migration/migrator.js +15 -5
  76. package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -2
  77. package/dist/esm/operation-node/aggregate-function-node.js +2 -2
  78. package/dist/esm/operation-node/create-index-node.d.ts +1 -0
  79. package/dist/esm/operation-node/delete-query-node.d.ts +4 -1
  80. package/dist/esm/operation-node/delete-query-node.js +11 -2
  81. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  82. package/dist/esm/operation-node/operation-node-transformer.js +10 -1
  83. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  84. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  85. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  86. package/dist/esm/operation-node/operator-node.d.ts +1 -1
  87. package/dist/esm/operation-node/operator-node.js +1 -0
  88. package/dist/esm/operation-node/using-node.d.ts +13 -0
  89. package/dist/esm/operation-node/using-node.js +22 -0
  90. package/dist/esm/parser/expression-parser.js +2 -2
  91. package/dist/esm/parser/table-parser.d.ts +1 -0
  92. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  93. package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +7 -0
  94. package/dist/esm/plugin/camel-case/camel-case-plugin.js +10 -4
  95. package/dist/esm/query-builder/delete-query-builder.d.ts +103 -11
  96. package/dist/esm/query-builder/delete-query-builder.js +40 -9
  97. package/dist/esm/query-builder/function-module.d.ts +273 -39
  98. package/dist/esm/query-builder/function-module.js +156 -34
  99. package/dist/esm/query-builder/insert-query-builder.d.ts +25 -10
  100. package/dist/esm/query-builder/insert-query-builder.js +33 -10
  101. package/dist/esm/query-builder/select-query-builder.d.ts +51 -34
  102. package/dist/esm/query-builder/select-query-builder.js +53 -29
  103. package/dist/esm/query-builder/update-query-builder.d.ts +26 -10
  104. package/dist/esm/query-builder/update-query-builder.js +33 -9
  105. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  106. package/dist/esm/query-compiler/default-query-compiler.js +12 -1
  107. package/dist/esm/query-creator.d.ts +29 -0
  108. package/dist/esm/query-creator.js +2 -21
  109. package/dist/esm/raw-builder/raw-builder.d.ts +4 -0
  110. package/dist/esm/raw-builder/raw-builder.js +8 -2
  111. package/dist/esm/schema/alter-table-builder.d.ts +5 -1
  112. package/dist/esm/schema/alter-table-builder.js +8 -2
  113. package/dist/esm/schema/create-index-builder.d.ts +6 -0
  114. package/dist/esm/schema/create-index-builder.js +13 -0
  115. package/dist/esm/schema/create-table-builder.d.ts +6 -2
  116. package/dist/esm/schema/create-table-builder.js +9 -3
  117. package/dist/esm/util/type-utils.d.ts +20 -1
  118. package/package.json +1 -1
@@ -1,11 +1,11 @@
1
1
  import { OperationNodeSource } from '../operation-node/operation-node-source.js';
2
2
  import { CompiledQuery } from '../query-compiler/compiled-query.js';
3
3
  import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
4
- import { TableExpression } from '../parser/table-parser.js';
4
+ import { From, FromTables, TableExpression } from '../parser/table-parser.js';
5
5
  import { SelectExpression } from '../parser/select-parser.js';
6
6
  import { ReturningRow } from '../parser/returning-parser.js';
7
7
  import { ReferenceExpression } from '../parser/reference-parser.js';
8
- import { MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
8
+ import { MergePartial, Nullable, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
9
9
  import { Compilable } from '../util/compilable.js';
10
10
  import { QueryExecutor } from '../query-executor/query-executor.js';
11
11
  import { QueryId } from '../util/query-id.js';
@@ -428,6 +428,82 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
428
428
  * ```
429
429
  */
430
430
  clearWhere(): DeleteQueryBuilder<DB, TB, O>;
431
+ /**
432
+ * Adds a `using` clause to the query.
433
+ *
434
+ * This clause allows adding additional tables to the query for filtering/returning
435
+ * only. Usually a non-standard syntactic-sugar alternative to a `where` with a sub-query.
436
+ *
437
+ * ### Examples:
438
+ *
439
+ * ```ts
440
+ * await db
441
+ * .deleteFrom('pet')
442
+ * .using('person')
443
+ * .whereRef('pet.owner_id', '=', 'person.id')
444
+ * .where('person.first_name', '=', 'Bob')
445
+ * .executeTakeFirstOrThrow()
446
+ * ```
447
+ *
448
+ * The generated SQL (PostgreSQL):
449
+ *
450
+ * ```sql
451
+ * delete from "pet"
452
+ * using "person"
453
+ * where "pet"."owner_id" = "person"."id"
454
+ * and "person"."first_name" = $1
455
+ * ```
456
+ *
457
+ * On supported databases such as MySQL, this clause allows using joins, but requires
458
+ * at least one of the tables after the `from` keyword to be also named after
459
+ * the `using` keyword. See also {@link innerJoin}, {@link leftJoin}, {@link rightJoin}
460
+ * and {@link fullJoin}.
461
+ *
462
+ * ```ts
463
+ * await db
464
+ * .deleteFrom('pet')
465
+ * .using('pet')
466
+ * .leftJoin('person', 'person.id', 'pet.owner_id')
467
+ * .where('person.first_name', '=', 'Bob')
468
+ * .executeTakeFirstOrThrow()
469
+ * ```
470
+ *
471
+ * The generated SQL (MySQL):
472
+ *
473
+ * ```sql
474
+ * delete from `pet`
475
+ * using `pet`
476
+ * left join `person` on `person`.`id` = `pet`.`owner_id`
477
+ * where `person`.`first_name` = ?
478
+ * ```
479
+ *
480
+ * You can also chain multiple invocations of this method, or pass an array to
481
+ * a single invocation to name multiple tables.
482
+ *
483
+ * ```ts
484
+ * await db
485
+ * .deleteFrom('toy')
486
+ * .using(['pet', 'person'])
487
+ * .whereRef('toy.pet_id', '=', 'pet.id')
488
+ * .whereRef('pet.owner_id', '=', 'person.id')
489
+ * .where('person.first_name', '=', 'Bob')
490
+ * .returning('pet.name')
491
+ * .executeTakeFirstOrThrow()
492
+ * ```
493
+ *
494
+ * The generated SQL (PostgreSQL):
495
+ *
496
+ * ```sql
497
+ * delete from "toy"
498
+ * using "pet", "person"
499
+ * where "toy"."pet_id" = "pet"."id"
500
+ * and "pet"."owner_id" = "person"."id"
501
+ * and "person"."first_name" = $1
502
+ * returning "pet"."name"
503
+ * ```
504
+ */
505
+ using<TE extends TableExpression<DB, keyof DB>>(tables: TE[]): DeleteQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, O>;
506
+ using<TE extends TableExpression<DB, keyof DB>>(table: TE): DeleteQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, O>;
431
507
  /**
432
508
  * Joins another table to the query using an inner join.
433
509
  *
@@ -678,7 +754,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
678
754
  * Simply calls the given function passing `this` as the only argument.
679
755
  *
680
756
  * If you want to conditionally call a method on `this`, see
681
- * the {@link if} method.
757
+ * the {@link $if} method.
682
758
  *
683
759
  * ### Examples
684
760
  *
@@ -691,10 +767,14 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
691
767
  * }
692
768
  *
693
769
  * db.deleteFrom('person')
694
- * .call(log)
770
+ * .$call(log)
695
771
  * .execute()
696
772
  * ```
697
773
  */
774
+ $call<T>(func: (qb: this) => T): T;
775
+ /**
776
+ * @deprecated Use `$call` instead
777
+ */
698
778
  call<T>(func: (qb: this) => T): T;
699
779
  /**
700
780
  * Call `func(this)` if `condition` is true.
@@ -714,7 +794,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
714
794
  * .deleteFrom('person')
715
795
  * .where('id', '=', id)
716
796
  * .returning(['id', 'first_name'])
717
- * .if(returnLastName, (qb) => qb.returning('last_name'))
797
+ * .$if(returnLastName, (qb) => qb.returning('last_name'))
718
798
  * .executeTakeFirstOrThrow()
719
799
  * }
720
800
  * ```
@@ -731,6 +811,10 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
731
811
  * }
732
812
  * ```
733
813
  */
814
+ $if<O2>(condition: boolean, func: (qb: this) => DeleteQueryBuilder<DB, TB, O2>): DeleteQueryBuilder<DB, TB, O2 extends DeleteResult ? DeleteResult : O extends DeleteResult ? Partial<O2> : MergePartial<O, O2>>;
815
+ /**
816
+ * @deprecated Use `$if` instead
817
+ */
734
818
  if<O2>(condition: boolean, func: (qb: this) => DeleteQueryBuilder<DB, TB, O2>): DeleteQueryBuilder<DB, TB, O2 extends DeleteResult ? DeleteResult : O extends DeleteResult ? Partial<O2> : MergePartial<O, O2>>;
735
819
  /**
736
820
  * Change the output type of the query.
@@ -738,6 +822,10 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
738
822
  * You should only use this method as the last resort if the types
739
823
  * don't support your use case.
740
824
  */
825
+ $castTo<T>(): DeleteQueryBuilder<DB, TB, T>;
826
+ /**
827
+ * @deprecated Use `$castTo` instead.
828
+ */
741
829
  castTo<T>(): DeleteQueryBuilder<DB, TB, T>;
742
830
  /**
743
831
  * Asserts that query's output row type equals the given type `T`.
@@ -767,37 +855,41 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
767
855
  * .deleteFrom('person')
768
856
  * .where('id', '=', person.id)
769
857
  * .returning('first_name')
770
- * .assertType<{ first_name: string }>()
858
+ * .$assertType<{ first_name: string }>()
771
859
  * )
772
860
  * .with('deleted_pet', (qb) => qb
773
861
  * .deleteFrom('pet')
774
862
  * .where('owner_id', '=', person.id)
775
863
  * .returning(['name as pet_name', 'species'])
776
- * .assertType<{ pet_name: string, species: Species }>()
864
+ * .$assertType<{ pet_name: string, species: Species }>()
777
865
  * )
778
866
  * .selectFrom(['deleted_person', 'deleted_pet'])
779
867
  * .selectAll()
780
868
  * .executeTakeFirstOrThrow()
781
869
  * ```
782
870
  */
871
+ $assertType<T extends O>(): O extends T ? DeleteQueryBuilder<DB, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
872
+ /**
873
+ * @deprecated Use `$assertType` instead.
874
+ */
783
875
  assertType<T extends O>(): O extends T ? DeleteQueryBuilder<DB, TB, T> : KyselyTypeError<`assertType() call failed: The type passed in is not equal to the output type of the query.`>;
784
876
  /**
785
877
  * Returns a copy of this DeleteQueryBuilder instance with the given plugin installed.
786
878
  */
787
879
  withPlugin(plugin: KyselyPlugin): DeleteQueryBuilder<DB, TB, O>;
788
880
  toOperationNode(): DeleteQueryNode;
789
- compile(): CompiledQuery<O>;
881
+ compile(): CompiledQuery<SimplifyResult<O>>;
790
882
  /**
791
883
  * Executes the query and returns an array of rows.
792
884
  *
793
885
  * Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
794
886
  */
795
- execute(): Promise<O[]>;
887
+ execute(): Promise<SimplifyResult<O>[]>;
796
888
  /**
797
889
  * Executes the query and returns the first result or undefined if
798
890
  * the query returned no result.
799
891
  */
800
- executeTakeFirst(): Promise<SingleResultType<O>>;
892
+ executeTakeFirst(): Promise<SimplifySingleResult<O>>;
801
893
  /**
802
894
  * Executes the query and returns the first result or throws if
803
895
  * the query returned no result.
@@ -806,7 +898,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
806
898
  * provide a custom error class as the only argument to throw a different
807
899
  * error.
808
900
  */
809
- executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<O>;
901
+ executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<SimplifyResult<O>>;
810
902
  /**
811
903
  * Executes query with `explain` statement before `delete` keyword.
812
904
  *
@@ -1,5 +1,6 @@
1
1
  /// <reference types="./delete-query-builder.d.ts" />
2
2
  import { parseJoin, } from '../parser/join-parser.js';
3
+ import { parseTableExpressionOrList, } from '../parser/table-parser.js';
3
4
  import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-parser.js';
4
5
  import { QueryNode } from '../operation-node/query-node.js';
5
6
  import { preventAwait } from '../util/prevent-await.js';
@@ -71,6 +72,12 @@ export class DeleteQueryBuilder {
71
72
  queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode),
72
73
  });
73
74
  }
75
+ using(tables) {
76
+ return new DeleteQueryBuilder({
77
+ ...this.#props,
78
+ queryNode: DeleteQueryNode.cloneWithUsing(this.#props.queryNode, parseTableExpressionOrList(tables)),
79
+ });
80
+ }
74
81
  innerJoin(...args) {
75
82
  return new DeleteQueryBuilder({
76
83
  ...this.#props,
@@ -175,7 +182,7 @@ export class DeleteQueryBuilder {
175
182
  * Simply calls the given function passing `this` as the only argument.
176
183
  *
177
184
  * If you want to conditionally call a method on `this`, see
178
- * the {@link if} method.
185
+ * the {@link $if} method.
179
186
  *
180
187
  * ### Examples
181
188
  *
@@ -188,13 +195,19 @@ export class DeleteQueryBuilder {
188
195
  * }
189
196
  *
190
197
  * db.deleteFrom('person')
191
- * .call(log)
198
+ * .$call(log)
192
199
  * .execute()
193
200
  * ```
194
201
  */
195
- call(func) {
202
+ $call(func) {
196
203
  return func(this);
197
204
  }
205
+ /**
206
+ * @deprecated Use `$call` instead
207
+ */
208
+ call(func) {
209
+ return this.$call(func);
210
+ }
198
211
  /**
199
212
  * Call `func(this)` if `condition` is true.
200
213
  *
@@ -213,7 +226,7 @@ export class DeleteQueryBuilder {
213
226
  * .deleteFrom('person')
214
227
  * .where('id', '=', id)
215
228
  * .returning(['id', 'first_name'])
216
- * .if(returnLastName, (qb) => qb.returning('last_name'))
229
+ * .$if(returnLastName, (qb) => qb.returning('last_name'))
217
230
  * .executeTakeFirstOrThrow()
218
231
  * }
219
232
  * ```
@@ -230,7 +243,7 @@ export class DeleteQueryBuilder {
230
243
  * }
231
244
  * ```
232
245
  */
233
- if(condition, func) {
246
+ $if(condition, func) {
234
247
  if (condition) {
235
248
  return func(this);
236
249
  }
@@ -238,15 +251,27 @@ export class DeleteQueryBuilder {
238
251
  ...this.#props,
239
252
  });
240
253
  }
254
+ /**
255
+ * @deprecated Use `$if` instead
256
+ */
257
+ if(condition, func) {
258
+ return this.$if(condition, func);
259
+ }
241
260
  /**
242
261
  * Change the output type of the query.
243
262
  *
244
263
  * You should only use this method as the last resort if the types
245
264
  * don't support your use case.
246
265
  */
247
- castTo() {
266
+ $castTo() {
248
267
  return new DeleteQueryBuilder(this.#props);
249
268
  }
269
+ /**
270
+ * @deprecated Use `$castTo` instead.
271
+ */
272
+ castTo() {
273
+ return this.$castTo();
274
+ }
250
275
  /**
251
276
  * Asserts that query's output row type equals the given type `T`.
252
277
  *
@@ -275,19 +300,25 @@ export class DeleteQueryBuilder {
275
300
  * .deleteFrom('person')
276
301
  * .where('id', '=', person.id)
277
302
  * .returning('first_name')
278
- * .assertType<{ first_name: string }>()
303
+ * .$assertType<{ first_name: string }>()
279
304
  * )
280
305
  * .with('deleted_pet', (qb) => qb
281
306
  * .deleteFrom('pet')
282
307
  * .where('owner_id', '=', person.id)
283
308
  * .returning(['name as pet_name', 'species'])
284
- * .assertType<{ pet_name: string, species: Species }>()
309
+ * .$assertType<{ pet_name: string, species: Species }>()
285
310
  * )
286
311
  * .selectFrom(['deleted_person', 'deleted_pet'])
287
312
  * .selectAll()
288
313
  * .executeTakeFirstOrThrow()
289
314
  * ```
290
315
  */
316
+ $assertType() {
317
+ return new DeleteQueryBuilder(this.#props);
318
+ }
319
+ /**
320
+ * @deprecated Use `$assertType` instead.
321
+ */
291
322
  assertType() {
292
323
  return new DeleteQueryBuilder(this.#props);
293
324
  }
@@ -321,7 +352,7 @@ export class DeleteQueryBuilder {
321
352
  return [
322
353
  new DeleteResult(
323
354
  // TODO: remove numUpdatedOrDeletedRows.
324
- (result.numAffectedRows ?? result.numUpdatedOrDeletedRows)),
355
+ result.numAffectedRows ?? result.numUpdatedOrDeletedRows ?? 0n),
325
356
  ];
326
357
  }
327
358
  /**