kysely 0.23.2 → 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 (96) 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 +3 -3
  6. package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +32 -6
  7. package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -3
  8. package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +32 -6
  9. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +3 -3
  10. package/dist/cjs/index.d.ts +2 -1
  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/binary-operation-parser.d.ts +1 -1
  27. package/dist/cjs/parser/update-set-parser.d.ts +3 -3
  28. package/dist/cjs/parser/update-set-parser.js +2 -2
  29. package/dist/cjs/query-builder/delete-query-builder.d.ts +98 -6
  30. package/dist/cjs/query-builder/delete-query-builder.js +39 -8
  31. package/dist/cjs/query-builder/insert-query-builder.d.ts +23 -7
  32. package/dist/cjs/query-builder/insert-query-builder.js +32 -8
  33. package/dist/cjs/query-builder/on-conflict-builder.d.ts +2 -2
  34. package/dist/cjs/query-builder/select-query-builder.d.ts +43 -27
  35. package/dist/cjs/query-builder/select-query-builder.js +53 -29
  36. package/dist/cjs/query-builder/update-query-builder.d.ts +23 -7
  37. package/dist/cjs/query-builder/update-query-builder.js +32 -8
  38. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  39. package/dist/cjs/query-compiler/default-query-compiler.js +11 -0
  40. package/dist/cjs/raw-builder/raw-builder.d.ts +4 -0
  41. package/dist/cjs/raw-builder/raw-builder.js +8 -2
  42. package/dist/cjs/schema/alter-table-builder.d.ts +5 -1
  43. package/dist/cjs/schema/alter-table-builder.js +8 -2
  44. package/dist/cjs/schema/create-index-builder.d.ts +6 -0
  45. package/dist/cjs/schema/create-index-builder.js +13 -0
  46. package/dist/cjs/schema/create-table-builder.d.ts +6 -2
  47. package/dist/cjs/schema/create-table-builder.js +9 -3
  48. package/dist/cjs/util/type-utils.d.ts +18 -0
  49. package/dist/esm/dialect/dialect-adapter-base.d.ts +32 -6
  50. package/dist/esm/dialect/dialect-adapter.d.ts +50 -8
  51. package/dist/esm/dialect/mysql/mysql-adapter.d.ts +32 -6
  52. package/dist/esm/dialect/mysql/mysql-introspector.js +3 -3
  53. package/dist/esm/dialect/postgres/postgres-adapter.d.ts +32 -6
  54. package/dist/esm/dialect/postgres/postgres-introspector.js +3 -3
  55. package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +32 -6
  56. package/dist/esm/dialect/sqlite/sqlite-introspector.js +3 -3
  57. package/dist/esm/index.d.ts +2 -1
  58. package/dist/esm/index.js +1 -0
  59. package/dist/esm/migration/migrator.d.ts +8 -3
  60. package/dist/esm/migration/migrator.js +15 -5
  61. package/dist/esm/operation-node/create-index-node.d.ts +1 -0
  62. package/dist/esm/operation-node/delete-query-node.d.ts +3 -0
  63. package/dist/esm/operation-node/delete-query-node.js +9 -0
  64. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  65. package/dist/esm/operation-node/operation-node-transformer.js +9 -0
  66. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  67. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  68. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  69. package/dist/esm/operation-node/operator-node.d.ts +1 -1
  70. package/dist/esm/operation-node/operator-node.js +1 -0
  71. package/dist/esm/operation-node/using-node.d.ts +13 -0
  72. package/dist/esm/operation-node/using-node.js +22 -0
  73. package/dist/esm/parser/binary-operation-parser.d.ts +1 -1
  74. package/dist/esm/parser/update-set-parser.d.ts +3 -3
  75. package/dist/esm/parser/update-set-parser.js +2 -2
  76. package/dist/esm/query-builder/delete-query-builder.d.ts +98 -6
  77. package/dist/esm/query-builder/delete-query-builder.js +39 -8
  78. package/dist/esm/query-builder/insert-query-builder.d.ts +23 -7
  79. package/dist/esm/query-builder/insert-query-builder.js +33 -9
  80. package/dist/esm/query-builder/on-conflict-builder.d.ts +2 -2
  81. package/dist/esm/query-builder/select-query-builder.d.ts +43 -27
  82. package/dist/esm/query-builder/select-query-builder.js +53 -29
  83. package/dist/esm/query-builder/update-query-builder.d.ts +23 -7
  84. package/dist/esm/query-builder/update-query-builder.js +33 -9
  85. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  86. package/dist/esm/query-compiler/default-query-compiler.js +11 -0
  87. package/dist/esm/raw-builder/raw-builder.d.ts +4 -0
  88. package/dist/esm/raw-builder/raw-builder.js +8 -2
  89. package/dist/esm/schema/alter-table-builder.d.ts +5 -1
  90. package/dist/esm/schema/alter-table-builder.js +8 -2
  91. package/dist/esm/schema/create-index-builder.d.ts +6 -0
  92. package/dist/esm/schema/create-index-builder.js +13 -0
  93. package/dist/esm/schema/create-table-builder.d.ts +6 -2
  94. package/dist/esm/schema/create-table-builder.js +9 -3
  95. package/dist/esm/util/type-utils.d.ts +18 -0
  96. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode';
1
+ export declare type OperationNodeKind = 'IdentifierNode' | 'SchemableIdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode' | 'CreateTypeNode' | 'DropTypeNode' | 'ExplainNode' | 'DefaultInsertValueNode' | 'AggregateFunctionNode' | 'OverNode' | 'PartitionByNode' | 'PartitionByItemNode' | 'SetOperationNode' | 'BinaryOperationNode' | 'UnaryOperationNode' | 'UsingNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -1,5 +1,5 @@
1
1
  import { OperationNode } from './operation-node.js';
2
- export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "&&", "||", "@@", "@@@", "!!", "<->"];
2
+ export declare const COMPARISON_OPERATORS: readonly ["=", "==", "!=", "<>", ">", ">=", "<", "<=", "in", "not in", "is", "is not", "like", "not like", "match", "ilike", "not ilike", "@>", "<@", "?", "?&", "!<", "!>", "<=>", "!~", "~", "~*", "!~*", "&&", "||", "@@", "@@@", "!!", "<->"];
3
3
  export declare const UNARY_FILTER_OPERATORS: readonly ["exists", "not exists"];
4
4
  export declare type ComparisonOperator = typeof COMPARISON_OPERATORS[number];
5
5
  export declare type UnaryFilterOperator = typeof UNARY_FILTER_OPERATORS[number];
@@ -15,6 +15,7 @@ export const COMPARISON_OPERATORS = [
15
15
  'is not',
16
16
  'like',
17
17
  'not like',
18
+ 'match',
18
19
  'ilike',
19
20
  'not ilike',
20
21
  '@>',
@@ -0,0 +1,13 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ export interface UsingNode extends OperationNode {
3
+ readonly kind: 'UsingNode';
4
+ readonly tables: ReadonlyArray<OperationNode>;
5
+ }
6
+ /**
7
+ * @internal
8
+ */
9
+ export declare const UsingNode: Readonly<{
10
+ is(node: OperationNode): node is UsingNode;
11
+ create(tables: ReadonlyArray<OperationNode>): UsingNode;
12
+ cloneWithTables(using: UsingNode, tables: ReadonlyArray<OperationNode>): UsingNode;
13
+ }>;
@@ -0,0 +1,22 @@
1
+ /// <reference types="./using-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const UsingNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'UsingNode';
9
+ },
10
+ create(tables) {
11
+ return freeze({
12
+ kind: 'UsingNode',
13
+ tables: freeze(tables),
14
+ });
15
+ },
16
+ cloneWithTables(using, tables) {
17
+ return freeze({
18
+ ...using,
19
+ tables: freeze([...using.tables, ...tables]),
20
+ });
21
+ },
22
+ });
@@ -7,7 +7,7 @@ import { HavingInterface } from '../query-builder/having-interface.js';
7
7
  import { OperationNode } from '../operation-node/operation-node.js';
8
8
  import { Expression } from '../expression/expression.js';
9
9
  export declare type OperandValueExpression<DB, TB extends keyof DB, RE> = ValueExpression<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
10
- export declare type OperandValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpressionOrList<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
10
+ export declare type OperandValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpressionOrList<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE> | null>;
11
11
  export declare type WhereGrouper<DB, TB extends keyof DB> = (qb: WhereInterface<DB, TB>) => WhereInterface<DB, TB>;
12
12
  export declare type HavingGrouper<DB, TB extends keyof DB> = (qb: HavingInterface<DB, TB>) => HavingInterface<DB, TB>;
13
13
  export declare type ComparisonOperatorExpression = ComparisonOperator | Expression<any>;
@@ -1,7 +1,7 @@
1
1
  import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
2
2
  import { UpdateKeys, UpdateType } from '../util/column-type.js';
3
3
  import { ValueExpression } from './value-parser.js';
4
- export declare type MutationObject<DB, TB extends keyof DB, TM extends keyof DB> = {
5
- [C in UpdateKeys<DB[TM]>]?: ValueExpression<DB, TB, UpdateType<DB[TM][C]>> | undefined;
4
+ export declare type UpdateObject<DB, TB extends keyof DB, UT extends keyof DB = TB> = {
5
+ [C in UpdateKeys<DB[UT]>]?: ValueExpression<DB, TB, UpdateType<DB[UT][C]>> | undefined;
6
6
  };
7
- export declare function parseUpdateObject(row: MutationObject<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
7
+ export declare function parseUpdateObject(update: UpdateObject<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
@@ -2,8 +2,8 @@
2
2
  import { ColumnNode } from '../operation-node/column-node.js';
3
3
  import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
4
4
  import { parseValueExpression } from './value-parser.js';
5
- export function parseUpdateObject(row) {
6
- return Object.entries(row)
5
+ export function parseUpdateObject(update) {
6
+ return Object.entries(update)
7
7
  .filter(([_, value]) => value !== undefined)
8
8
  .map(([key, value]) => {
9
9
  return ColumnUpdateNode.create(ColumnNode.create(key), parseValueExpression(value));
@@ -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
  }
@@ -4,7 +4,7 @@ import { SelectExpression } from '../parser/select-parser.js';
4
4
  import { InsertObject } from '../parser/insert-values-parser.js';
5
5
  import { InsertQueryNode } from '../operation-node/insert-query-node.js';
6
6
  import { MergePartial, SingleResultType } from '../util/type-utils.js';
7
- import { MutationObject } from '../parser/update-set-parser.js';
7
+ import { UpdateObject } from '../parser/update-set-parser.js';
8
8
  import { Compilable } from '../util/compilable.js';
9
9
  import { QueryExecutor } from '../query-executor/query-executor.js';
10
10
  import { QueryId } from '../util/query-id.js';
@@ -385,7 +385,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
385
385
  * .onDuplicateKeyUpdate({ species: 'hamster' })
386
386
  * ```
387
387
  */
388
- onDuplicateKeyUpdate(updates: MutationObject<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
388
+ onDuplicateKeyUpdate(updates: UpdateObject<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
389
389
  /**
390
390
  * Allows you to return data from modified rows.
391
391
  *
@@ -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
  }
@@ -4,7 +4,7 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
4
4
  import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
5
5
  import { ExpressionOrFactory } from '../parser/expression-parser.js';
6
6
  import { ReferenceExpression } from '../parser/reference-parser.js';
7
- import { MutationObject } from '../parser/update-set-parser.js';
7
+ import { UpdateObject } from '../parser/update-set-parser.js';
8
8
  import { AnyColumn } from '../util/type-utils.js';
9
9
  import { WhereInterface } from './where-interface.js';
10
10
  export declare class OnConflictBuilder<DB, TB extends keyof DB> implements WhereInterface<DB, TB> {
@@ -406,7 +406,7 @@ export declare class OnConflictBuilder<DB, TB extends keyof DB> implements Where
406
406
  * do update set "first_name" = $3
407
407
  * ```
408
408
  */
409
- doUpdateSet(updates: MutationObject<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
409
+ doUpdateSet(updates: UpdateObject<OnConflictDatabase<DB, TB>, OnConflictTables<TB>, OnConflictTables<TB>>): OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>>;
410
410
  }
411
411
  export interface OnConflictBuilderProps {
412
412
  readonly onConflictNode: OnConflictNode;