kysely 0.23.3 → 0.23.4

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 (90) hide show
  1. package/README.md +22 -24
  2. package/dist/cjs/dialect/dialect-adapter-base.d.ts +32 -6
  3. package/dist/cjs/dialect/dialect-adapter.d.ts +50 -8
  4. package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +32 -6
  5. package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -2
  6. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +32 -6
  7. package/dist/cjs/dialect/postgres/postgres-introspector.js +2 -2
  8. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +32 -6
  9. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -2
  10. package/dist/cjs/index.d.ts +1 -0
  11. package/dist/cjs/index.js +1 -0
  12. package/dist/cjs/migration/migrator.d.ts +8 -3
  13. package/dist/cjs/migration/migrator.js +15 -5
  14. package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
  15. package/dist/cjs/operation-node/delete-query-node.d.ts +3 -0
  16. package/dist/cjs/operation-node/delete-query-node.js +9 -0
  17. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  18. package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
  19. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  20. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  21. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  22. package/dist/cjs/operation-node/operator-node.d.ts +1 -1
  23. package/dist/cjs/operation-node/operator-node.js +1 -0
  24. package/dist/cjs/operation-node/using-node.d.ts +13 -0
  25. package/dist/cjs/operation-node/using-node.js +24 -0
  26. package/dist/cjs/parser/update-set-parser.d.ts +1 -1
  27. package/dist/cjs/query-builder/delete-query-builder.d.ts +98 -6
  28. package/dist/cjs/query-builder/delete-query-builder.js +39 -8
  29. package/dist/cjs/query-builder/insert-query-builder.d.ts +21 -5
  30. package/dist/cjs/query-builder/insert-query-builder.js +32 -8
  31. package/dist/cjs/query-builder/select-query-builder.d.ts +43 -27
  32. package/dist/cjs/query-builder/select-query-builder.js +53 -29
  33. package/dist/cjs/query-builder/update-query-builder.d.ts +21 -5
  34. package/dist/cjs/query-builder/update-query-builder.js +32 -8
  35. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  36. package/dist/cjs/query-compiler/default-query-compiler.js +11 -0
  37. package/dist/cjs/raw-builder/raw-builder.d.ts +4 -0
  38. package/dist/cjs/raw-builder/raw-builder.js +8 -2
  39. package/dist/cjs/schema/alter-table-builder.d.ts +5 -1
  40. package/dist/cjs/schema/alter-table-builder.js +8 -2
  41. package/dist/cjs/schema/create-index-builder.d.ts +6 -0
  42. package/dist/cjs/schema/create-index-builder.js +13 -0
  43. package/dist/cjs/schema/create-table-builder.d.ts +6 -2
  44. package/dist/cjs/schema/create-table-builder.js +9 -3
  45. package/dist/cjs/util/type-utils.d.ts +18 -0
  46. package/dist/esm/dialect/dialect-adapter-base.d.ts +32 -6
  47. package/dist/esm/dialect/dialect-adapter.d.ts +50 -8
  48. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +32 -6
  49. package/dist/esm/dialect/mysql/mysql-introspector.js +2 -2
  50. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +32 -6
  51. package/dist/esm/dialect/postgres/postgres-introspector.js +2 -2
  52. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +32 -6
  53. package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -2
  54. package/dist/esm/index.d.ts +1 -0
  55. package/dist/esm/index.js +1 -0
  56. package/dist/esm/migration/migrator.d.ts +8 -3
  57. package/dist/esm/migration/migrator.js +15 -5
  58. package/dist/esm/operation-node/create-index-node.d.ts +1 -0
  59. package/dist/esm/operation-node/delete-query-node.d.ts +3 -0
  60. package/dist/esm/operation-node/delete-query-node.js +9 -0
  61. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  62. package/dist/esm/operation-node/operation-node-transformer.js +9 -0
  63. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  64. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  65. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  66. package/dist/esm/operation-node/operator-node.d.ts +1 -1
  67. package/dist/esm/operation-node/operator-node.js +1 -0
  68. package/dist/esm/operation-node/using-node.d.ts +13 -0
  69. package/dist/esm/operation-node/using-node.js +22 -0
  70. package/dist/esm/parser/update-set-parser.d.ts +1 -1
  71. package/dist/esm/query-builder/delete-query-builder.d.ts +98 -6
  72. package/dist/esm/query-builder/delete-query-builder.js +39 -8
  73. package/dist/esm/query-builder/insert-query-builder.d.ts +21 -5
  74. package/dist/esm/query-builder/insert-query-builder.js +33 -9
  75. package/dist/esm/query-builder/select-query-builder.d.ts +43 -27
  76. package/dist/esm/query-builder/select-query-builder.js +53 -29
  77. package/dist/esm/query-builder/update-query-builder.d.ts +21 -5
  78. package/dist/esm/query-builder/update-query-builder.js +32 -8
  79. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  80. package/dist/esm/query-compiler/default-query-compiler.js +11 -0
  81. package/dist/esm/raw-builder/raw-builder.d.ts +4 -0
  82. package/dist/esm/raw-builder/raw-builder.js +8 -2
  83. package/dist/esm/schema/alter-table-builder.d.ts +5 -1
  84. package/dist/esm/schema/alter-table-builder.js +8 -2
  85. package/dist/esm/schema/create-index-builder.d.ts +6 -0
  86. package/dist/esm/schema/create-index-builder.js +13 -0
  87. package/dist/esm/schema/create-table-builder.d.ts +6 -2
  88. package/dist/esm/schema/create-table-builder.js +9 -3
  89. package/dist/esm/util/type-utils.d.ts +18 -0
  90. package/package.json +1 -1
@@ -1,7 +1,7 @@
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';
@@ -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,19 +855,23 @@ 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.
@@ -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
  }
@@ -456,7 +456,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
456
456
  * Simply calls the given function passing `this` as the only argument.
457
457
  *
458
458
  * If you want to conditionally call a method on `this`, see
459
- * the {@link if} method.
459
+ * the {@link $if} method.
460
460
  *
461
461
  * ### Examples
462
462
  *
@@ -470,10 +470,14 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
470
470
  *
471
471
  * db.updateTable('person')
472
472
  * .set(values)
473
- * .call(log)
473
+ * .$call(log)
474
474
  * .execute()
475
475
  * ```
476
476
  */
477
+ $call<T>(func: (qb: this) => T): T;
478
+ /**
479
+ * @deprecated Use `$call` instead
480
+ */
477
481
  call<T>(func: (qb: this) => T): T;
478
482
  /**
479
483
  * Call `func(this)` if `condition` is true.
@@ -493,7 +497,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
493
497
  * .insertInto('person')
494
498
  * .values(values)
495
499
  * .returning(['id', 'first_name'])
496
- * .if(returnLastName, (qb) => qb.returning('last_name'))
500
+ * .$if(returnLastName, (qb) => qb.returning('last_name'))
497
501
  * .executeTakeFirstOrThrow()
498
502
  * }
499
503
  * ```
@@ -510,6 +514,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
510
514
  * }
511
515
  * ```
512
516
  */
517
+ $if<O2>(condition: boolean, func: (qb: this) => InsertQueryBuilder<DB, TB, O2>): InsertQueryBuilder<DB, TB, O2 extends InsertResult ? InsertResult : O extends InsertResult ? Partial<O2> : MergePartial<O, O2>>;
518
+ /**
519
+ * @deprecated Use `$if` instead
520
+ */
513
521
  if<O2>(condition: boolean, func: (qb: this) => InsertQueryBuilder<DB, TB, O2>): InsertQueryBuilder<DB, TB, O2 extends InsertResult ? InsertResult : O extends InsertResult ? Partial<O2> : MergePartial<O, O2>>;
514
522
  /**
515
523
  * Change the output type of the query.
@@ -517,6 +525,10 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
517
525
  * You should only use this method as the last resort if the types
518
526
  * don't support your use case.
519
527
  */
528
+ $castTo<T>(): InsertQueryBuilder<DB, TB, T>;
529
+ /**
530
+ * @deprecated Use `$castTo` instead.
531
+ */
520
532
  castTo<T>(): InsertQueryBuilder<DB, TB, T>;
521
533
  /**
522
534
  * Asserts that query's output row type equals the given type `T`.
@@ -546,19 +558,23 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
546
558
  * .insertInto('person')
547
559
  * .values(person)
548
560
  * .returning('id')
549
- * .assertType<{ id: string }>()
561
+ * .$assertType<{ id: string }>()
550
562
  * )
551
563
  * .with('new_pet', (qb) => qb
552
564
  * .insertInto('pet')
553
565
  * .values({ owner_id: (eb) => eb.selectFrom('new_person').select('id'), ...pet })
554
566
  * .returning(['name as pet_name', 'species'])
555
- * .assertType<{ pet_name: string, species: Species }>()
567
+ * .$assertType<{ pet_name: string, species: Species }>()
556
568
  * )
557
569
  * .selectFrom(['new_person', 'new_pet'])
558
570
  * .selectAll()
559
571
  * .executeTakeFirstOrThrow()
560
572
  * ```
561
573
  */
574
+ $assertType<T extends O>(): O extends T ? InsertQueryBuilder<DB, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
575
+ /**
576
+ * @deprecated Use `$assertType` instead.
577
+ */
562
578
  assertType<T extends O>(): O extends T ? InsertQueryBuilder<DB, TB, T> : KyselyTypeError<`assertType() call failed: The type passed in is not equal to the output type of the query.`>;
563
579
  /**
564
580
  * Returns a copy of this InsertQueryBuilder instance with the given plugin installed.
@@ -3,7 +3,7 @@ import { parseSelectExpressionOrList, parseSelectAll, } from '../parser/select-p
3
3
  import { parseInsertObjectOrList, } from '../parser/insert-values-parser.js';
4
4
  import { InsertQueryNode } from '../operation-node/insert-query-node.js';
5
5
  import { QueryNode } from '../operation-node/query-node.js';
6
- import { parseUpdateObject, } from '../parser/update-set-parser.js';
6
+ import { parseUpdateObject } from '../parser/update-set-parser.js';
7
7
  import { preventAwait } from '../util/prevent-await.js';
8
8
  import { freeze } from '../util/object-utils.js';
9
9
  import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
@@ -318,7 +318,7 @@ export class InsertQueryBuilder {
318
318
  * Simply calls the given function passing `this` as the only argument.
319
319
  *
320
320
  * If you want to conditionally call a method on `this`, see
321
- * the {@link if} method.
321
+ * the {@link $if} method.
322
322
  *
323
323
  * ### Examples
324
324
  *
@@ -332,13 +332,19 @@ export class InsertQueryBuilder {
332
332
  *
333
333
  * db.updateTable('person')
334
334
  * .set(values)
335
- * .call(log)
335
+ * .$call(log)
336
336
  * .execute()
337
337
  * ```
338
338
  */
339
- call(func) {
339
+ $call(func) {
340
340
  return func(this);
341
341
  }
342
+ /**
343
+ * @deprecated Use `$call` instead
344
+ */
345
+ call(func) {
346
+ return this.$call(func);
347
+ }
342
348
  /**
343
349
  * Call `func(this)` if `condition` is true.
344
350
  *
@@ -357,7 +363,7 @@ export class InsertQueryBuilder {
357
363
  * .insertInto('person')
358
364
  * .values(values)
359
365
  * .returning(['id', 'first_name'])
360
- * .if(returnLastName, (qb) => qb.returning('last_name'))
366
+ * .$if(returnLastName, (qb) => qb.returning('last_name'))
361
367
  * .executeTakeFirstOrThrow()
362
368
  * }
363
369
  * ```
@@ -374,7 +380,7 @@ export class InsertQueryBuilder {
374
380
  * }
375
381
  * ```
376
382
  */
377
- if(condition, func) {
383
+ $if(condition, func) {
378
384
  if (condition) {
379
385
  return func(this);
380
386
  }
@@ -382,15 +388,27 @@ export class InsertQueryBuilder {
382
388
  ...this.#props,
383
389
  });
384
390
  }
391
+ /**
392
+ * @deprecated Use `$if` instead
393
+ */
394
+ if(condition, func) {
395
+ return this.$if(condition, func);
396
+ }
385
397
  /**
386
398
  * Change the output type of the query.
387
399
  *
388
400
  * You should only use this method as the last resort if the types
389
401
  * don't support your use case.
390
402
  */
391
- castTo() {
403
+ $castTo() {
392
404
  return new InsertQueryBuilder(this.#props);
393
405
  }
406
+ /**
407
+ * @deprecated Use `$castTo` instead.
408
+ */
409
+ castTo() {
410
+ return this.$castTo();
411
+ }
394
412
  /**
395
413
  * Asserts that query's output row type equals the given type `T`.
396
414
  *
@@ -419,19 +437,25 @@ export class InsertQueryBuilder {
419
437
  * .insertInto('person')
420
438
  * .values(person)
421
439
  * .returning('id')
422
- * .assertType<{ id: string }>()
440
+ * .$assertType<{ id: string }>()
423
441
  * )
424
442
  * .with('new_pet', (qb) => qb
425
443
  * .insertInto('pet')
426
444
  * .values({ owner_id: (eb) => eb.selectFrom('new_person').select('id'), ...pet })
427
445
  * .returning(['name as pet_name', 'species'])
428
- * .assertType<{ pet_name: string, species: Species }>()
446
+ * .$assertType<{ pet_name: string, species: Species }>()
429
447
  * )
430
448
  * .selectFrom(['new_person', 'new_pet'])
431
449
  * .selectAll()
432
450
  * .executeTakeFirstOrThrow()
433
451
  * ```
434
452
  */
453
+ $assertType() {
454
+ return new InsertQueryBuilder(this.#props);
455
+ }
456
+ /**
457
+ * @deprecated Use `$assertType` instead.
458
+ */
435
459
  assertType() {
436
460
  return new InsertQueryBuilder(this.#props);
437
461
  }
@@ -488,7 +488,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
488
488
  * To select all columns of the query or specific tables see the
489
489
  * {@link selectAll} method.
490
490
  *
491
- * See the {@link if} method if you are looking for a way to add selections
491
+ * See the {@link $if} method if you are looking for a way to add selections
492
492
  * based on a runtime condition.
493
493
  *
494
494
  * ### Examples
@@ -1292,6 +1292,26 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1292
1292
  * ```
1293
1293
  */
1294
1294
  exceptAll(expression: Expression<O>): SelectQueryBuilder<DB, TB, O>;
1295
+ /**
1296
+ * Gives an alias for the query. This method is only useful for sub queries.
1297
+ *
1298
+ * ### Examples
1299
+ *
1300
+ * ```ts
1301
+ * const pets = await db.selectFrom('pet')
1302
+ * .selectAll('pet')
1303
+ * .select(
1304
+ * (qb) => qb.selectFrom('person')
1305
+ * .select('first_name')
1306
+ * .whereRef('pet.owner_id', '=', 'person.id')
1307
+ * .as('owner_first_name')
1308
+ * )
1309
+ * .execute()
1310
+ *
1311
+ * pets[0].owner_first_name
1312
+ * ```
1313
+ */
1314
+ as<A extends string>(alias: A): AliasedSelectQueryBuilder<DB, TB, O, A>;
1295
1315
  /**
1296
1316
  * Clears all select clauses from the query.
1297
1317
  *
@@ -1392,7 +1412,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1392
1412
  * Simply calls the given function passing `this` as the only argument.
1393
1413
  *
1394
1414
  * If you want to conditionally call a method on `this`, see
1395
- * the {@link if} method.
1415
+ * the {@link $if} method.
1396
1416
  *
1397
1417
  * ### Examples
1398
1418
  *
@@ -1406,10 +1426,14 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1406
1426
  *
1407
1427
  * db.selectFrom('person')
1408
1428
  * .selectAll()
1409
- * .call(log)
1429
+ * .$call(log)
1410
1430
  * .execute()
1411
1431
  * ```
1412
1432
  */
1433
+ $call<T>(func: (qb: this) => T): T;
1434
+ /**
1435
+ * @deprecated Use `$call` instead
1436
+ */
1413
1437
  call<T>(func: (qb: this) => T): T;
1414
1438
  /**
1415
1439
  * Call `func(this)` if `condition` is true.
@@ -1428,7 +1452,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1428
1452
  * return await db
1429
1453
  * .selectFrom('person')
1430
1454
  * .select(['id', 'first_name'])
1431
- * .if(withLastName, (qb) => qb.select('last_name'))
1455
+ * .$if(withLastName, (qb) => qb.select('last_name'))
1432
1456
  * .where('id', '=', id)
1433
1457
  * .executeTakeFirstOrThrow()
1434
1458
  * }
@@ -1453,41 +1477,29 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1453
1477
  *
1454
1478
  * db.selectFrom('person')
1455
1479
  * .select('person.id')
1456
- * .if(filterByFirstName, (qb) => qb.where('first_name', '=', firstName))
1457
- * .if(filterByPetCount, (qb) => qb
1480
+ * .$if(filterByFirstName, (qb) => qb.where('first_name', '=', firstName))
1481
+ * .$if(filterByPetCount, (qb) => qb
1458
1482
  * .innerJoin('pet', 'pet.owner_id', 'person.id')
1459
1483
  * .having(count('pet.id'), '>', petCountLimit)
1460
1484
  * .groupBy('person.id')
1461
1485
  * )
1462
1486
  * ```
1463
1487
  */
1464
- if<O2 extends O>(condition: boolean, func: (qb: this) => SelectQueryBuilder<DB, TB, O2>): SelectQueryBuilder<DB, TB, MergePartial<O, O2>>;
1488
+ $if<O2 extends O>(condition: boolean, func: (qb: this) => SelectQueryBuilder<DB, TB, O2>): SelectQueryBuilder<DB, TB, MergePartial<O, O2>>;
1465
1489
  /**
1466
- * Gives an alias for the query. This method is only useful for sub queries.
1467
- *
1468
- * ### Examples
1469
- *
1470
- * ```ts
1471
- * const pets = await db.selectFrom('pet')
1472
- * .selectAll('pet')
1473
- * .select(
1474
- * (qb) => qb.selectFrom('person')
1475
- * .select('first_name')
1476
- * .whereRef('pet.owner_id', '=', 'person.id')
1477
- * .as('owner_first_name')
1478
- * )
1479
- * .execute()
1480
- *
1481
- * pets[0].owner_first_name
1482
- * ```
1490
+ * @deprecated Use `$if` instead
1483
1491
  */
1484
- as<A extends string>(alias: A): AliasedSelectQueryBuilder<DB, TB, O, A>;
1492
+ if<O2 extends O>(condition: boolean, func: (qb: this) => SelectQueryBuilder<DB, TB, O2>): SelectQueryBuilder<DB, TB, MergePartial<O, O2>>;
1485
1493
  /**
1486
1494
  * Change the output type of the query.
1487
1495
  *
1488
1496
  * You should only use this method as the last resort if the types
1489
1497
  * don't support your use case.
1490
1498
  */
1499
+ $castTo<T>(): SelectQueryBuilder<DB, TB, T>;
1500
+ /**
1501
+ * @deprecated Use `$castTo` instead.
1502
+ */
1491
1503
  castTo<T>(): SelectQueryBuilder<DB, TB, T>;
1492
1504
  /**
1493
1505
  * Asserts that query's output row type equals the given type `T`.
@@ -1516,18 +1528,22 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
1516
1528
  * .with('first_and_last', (qb) => qb
1517
1529
  * .selectFrom('person')
1518
1530
  * .select(['first_name', 'last_name'])
1519
- * .assertType<{ first_name: string, last_name: string }>()
1531
+ * .$assertType<{ first_name: string, last_name: string }>()
1520
1532
  * )
1521
1533
  * .with('age', (qb) => qb
1522
1534
  * .selectFrom('person')
1523
1535
  * .select('age')
1524
- * .assertType<{ age: number }>()
1536
+ * .$assertType<{ age: number }>()
1525
1537
  * )
1526
1538
  * .selectFrom(['first_and_last', 'age'])
1527
1539
  * .selectAll()
1528
1540
  * .executeTakeFirstOrThrow()
1529
1541
  * ```
1530
1542
  */
1543
+ $assertType<T extends O>(): O extends T ? SelectQueryBuilder<DB, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
1544
+ /**
1545
+ * @deprecated Use `$assertType` instead.
1546
+ */
1531
1547
  assertType<T extends O>(): O extends T ? SelectQueryBuilder<DB, TB, T> : KyselyTypeError<`assertType() call failed: The type passed in is not equal to the output type of the query.`>;
1532
1548
  /**
1533
1549
  * Returns a copy of this SelectQueryBuilder instance with the given plugin installed.