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.
- package/README.md +22 -24
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +32 -6
- package/dist/cjs/dialect/dialect-adapter.d.ts +50 -8
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +32 -6
- package/dist/cjs/dialect/mysql/mysql-introspector.js +3 -3
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +32 -6
- package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -3
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +32 -6
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +3 -3
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/migration/migrator.d.ts +8 -3
- package/dist/cjs/migration/migrator.js +15 -5
- package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +3 -0
- package/dist/cjs/operation-node/delete-query-node.js +9 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.js +1 -0
- package/dist/cjs/operation-node/using-node.d.ts +13 -0
- package/dist/cjs/operation-node/using-node.js +24 -0
- package/dist/cjs/parser/binary-operation-parser.d.ts +1 -1
- package/dist/cjs/parser/update-set-parser.d.ts +3 -3
- package/dist/cjs/parser/update-set-parser.js +2 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +98 -6
- package/dist/cjs/query-builder/delete-query-builder.js +39 -8
- package/dist/cjs/query-builder/insert-query-builder.d.ts +23 -7
- package/dist/cjs/query-builder/insert-query-builder.js +32 -8
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +2 -2
- package/dist/cjs/query-builder/select-query-builder.d.ts +43 -27
- package/dist/cjs/query-builder/select-query-builder.js +53 -29
- package/dist/cjs/query-builder/update-query-builder.d.ts +23 -7
- package/dist/cjs/query-builder/update-query-builder.js +32 -8
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +11 -0
- package/dist/cjs/raw-builder/raw-builder.d.ts +4 -0
- package/dist/cjs/raw-builder/raw-builder.js +8 -2
- package/dist/cjs/schema/alter-table-builder.d.ts +5 -1
- package/dist/cjs/schema/alter-table-builder.js +8 -2
- package/dist/cjs/schema/create-index-builder.d.ts +6 -0
- package/dist/cjs/schema/create-index-builder.js +13 -0
- package/dist/cjs/schema/create-table-builder.d.ts +6 -2
- package/dist/cjs/schema/create-table-builder.js +9 -3
- package/dist/cjs/util/type-utils.d.ts +18 -0
- package/dist/esm/dialect/dialect-adapter-base.d.ts +32 -6
- package/dist/esm/dialect/dialect-adapter.d.ts +50 -8
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +32 -6
- package/dist/esm/dialect/mysql/mysql-introspector.js +3 -3
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +32 -6
- package/dist/esm/dialect/postgres/postgres-introspector.js +3 -3
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +32 -6
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +3 -3
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/migration/migrator.d.ts +8 -3
- package/dist/esm/migration/migrator.js +15 -5
- package/dist/esm/operation-node/create-index-node.d.ts +1 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +3 -0
- package/dist/esm/operation-node/delete-query-node.js +9 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +9 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.js +1 -0
- package/dist/esm/operation-node/using-node.d.ts +13 -0
- package/dist/esm/operation-node/using-node.js +22 -0
- package/dist/esm/parser/binary-operation-parser.d.ts +1 -1
- package/dist/esm/parser/update-set-parser.d.ts +3 -3
- package/dist/esm/parser/update-set-parser.js +2 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +98 -6
- package/dist/esm/query-builder/delete-query-builder.js +39 -8
- package/dist/esm/query-builder/insert-query-builder.d.ts +23 -7
- package/dist/esm/query-builder/insert-query-builder.js +33 -9
- package/dist/esm/query-builder/on-conflict-builder.d.ts +2 -2
- package/dist/esm/query-builder/select-query-builder.d.ts +43 -27
- package/dist/esm/query-builder/select-query-builder.js +53 -29
- package/dist/esm/query-builder/update-query-builder.d.ts +23 -7
- package/dist/esm/query-builder/update-query-builder.js +33 -9
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
- package/dist/esm/query-compiler/default-query-compiler.js +11 -0
- package/dist/esm/raw-builder/raw-builder.d.ts +4 -0
- package/dist/esm/raw-builder/raw-builder.js +8 -2
- package/dist/esm/schema/alter-table-builder.d.ts +5 -1
- package/dist/esm/schema/alter-table-builder.js +8 -2
- package/dist/esm/schema/create-index-builder.d.ts +6 -0
- package/dist/esm/schema/create-index-builder.js +13 -0
- package/dist/esm/schema/create-table-builder.d.ts +6 -2
- package/dist/esm/schema/create-table-builder.js +9 -3
- package/dist/esm/util/type-utils.d.ts +18 -0
- package/package.json +1 -1
|
@@ -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,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UsingNode = void 0;
|
|
4
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* @internal
|
|
7
|
+
*/
|
|
8
|
+
exports.UsingNode = (0, object_utils_js_1.freeze)({
|
|
9
|
+
is(node) {
|
|
10
|
+
return node.kind === 'UsingNode';
|
|
11
|
+
},
|
|
12
|
+
create(tables) {
|
|
13
|
+
return (0, object_utils_js_1.freeze)({
|
|
14
|
+
kind: 'UsingNode',
|
|
15
|
+
tables: (0, object_utils_js_1.freeze)(tables),
|
|
16
|
+
});
|
|
17
|
+
},
|
|
18
|
+
cloneWithTables(using, tables) {
|
|
19
|
+
return (0, object_utils_js_1.freeze)({
|
|
20
|
+
...using,
|
|
21
|
+
tables: (0, object_utils_js_1.freeze)([...using.tables, ...tables]),
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
});
|
|
@@ -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
|
|
5
|
-
[C in UpdateKeys<DB[
|
|
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(
|
|
7
|
+
export declare function parseUpdateObject(update: UpdateObject<any, any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|
@@ -4,8 +4,8 @@ exports.parseUpdateObject = void 0;
|
|
|
4
4
|
const column_node_js_1 = require("../operation-node/column-node.js");
|
|
5
5
|
const column_update_node_js_1 = require("../operation-node/column-update-node.js");
|
|
6
6
|
const value_parser_js_1 = require("./value-parser.js");
|
|
7
|
-
function parseUpdateObject(
|
|
8
|
-
return Object.entries(
|
|
7
|
+
function parseUpdateObject(update) {
|
|
8
|
+
return Object.entries(update)
|
|
9
9
|
.filter(([_, value]) => value !== undefined)
|
|
10
10
|
.map(([key, value]) => {
|
|
11
11
|
return column_update_node_js_1.ColumnUpdateNode.create(column_node_js_1.ColumnNode.create(key), (0, value_parser_js_1.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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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.
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DeleteQueryBuilder = void 0;
|
|
4
4
|
const join_parser_js_1 = require("../parser/join-parser.js");
|
|
5
|
+
const table_parser_js_1 = require("../parser/table-parser.js");
|
|
5
6
|
const select_parser_js_1 = require("../parser/select-parser.js");
|
|
6
7
|
const query_node_js_1 = require("../operation-node/query-node.js");
|
|
7
8
|
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
@@ -73,6 +74,12 @@ class DeleteQueryBuilder {
|
|
|
73
74
|
queryNode: query_node_js_1.QueryNode.cloneWithoutWhere(this.#props.queryNode),
|
|
74
75
|
});
|
|
75
76
|
}
|
|
77
|
+
using(tables) {
|
|
78
|
+
return new DeleteQueryBuilder({
|
|
79
|
+
...this.#props,
|
|
80
|
+
queryNode: delete_query_node_js_1.DeleteQueryNode.cloneWithUsing(this.#props.queryNode, (0, table_parser_js_1.parseTableExpressionOrList)(tables)),
|
|
81
|
+
});
|
|
82
|
+
}
|
|
76
83
|
innerJoin(...args) {
|
|
77
84
|
return new DeleteQueryBuilder({
|
|
78
85
|
...this.#props,
|
|
@@ -177,7 +184,7 @@ class DeleteQueryBuilder {
|
|
|
177
184
|
* Simply calls the given function passing `this` as the only argument.
|
|
178
185
|
*
|
|
179
186
|
* If you want to conditionally call a method on `this`, see
|
|
180
|
-
* the {@link if} method.
|
|
187
|
+
* the {@link $if} method.
|
|
181
188
|
*
|
|
182
189
|
* ### Examples
|
|
183
190
|
*
|
|
@@ -190,13 +197,19 @@ class DeleteQueryBuilder {
|
|
|
190
197
|
* }
|
|
191
198
|
*
|
|
192
199
|
* db.deleteFrom('person')
|
|
193
|
-
*
|
|
200
|
+
* .$call(log)
|
|
194
201
|
* .execute()
|
|
195
202
|
* ```
|
|
196
203
|
*/
|
|
197
|
-
call(func) {
|
|
204
|
+
$call(func) {
|
|
198
205
|
return func(this);
|
|
199
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* @deprecated Use `$call` instead
|
|
209
|
+
*/
|
|
210
|
+
call(func) {
|
|
211
|
+
return this.$call(func);
|
|
212
|
+
}
|
|
200
213
|
/**
|
|
201
214
|
* Call `func(this)` if `condition` is true.
|
|
202
215
|
*
|
|
@@ -215,7 +228,7 @@ class DeleteQueryBuilder {
|
|
|
215
228
|
* .deleteFrom('person')
|
|
216
229
|
* .where('id', '=', id)
|
|
217
230
|
* .returning(['id', 'first_name'])
|
|
218
|
-
*
|
|
231
|
+
* .$if(returnLastName, (qb) => qb.returning('last_name'))
|
|
219
232
|
* .executeTakeFirstOrThrow()
|
|
220
233
|
* }
|
|
221
234
|
* ```
|
|
@@ -232,7 +245,7 @@ class DeleteQueryBuilder {
|
|
|
232
245
|
* }
|
|
233
246
|
* ```
|
|
234
247
|
*/
|
|
235
|
-
if(condition, func) {
|
|
248
|
+
$if(condition, func) {
|
|
236
249
|
if (condition) {
|
|
237
250
|
return func(this);
|
|
238
251
|
}
|
|
@@ -240,15 +253,27 @@ class DeleteQueryBuilder {
|
|
|
240
253
|
...this.#props,
|
|
241
254
|
});
|
|
242
255
|
}
|
|
256
|
+
/**
|
|
257
|
+
* @deprecated Use `$if` instead
|
|
258
|
+
*/
|
|
259
|
+
if(condition, func) {
|
|
260
|
+
return this.$if(condition, func);
|
|
261
|
+
}
|
|
243
262
|
/**
|
|
244
263
|
* Change the output type of the query.
|
|
245
264
|
*
|
|
246
265
|
* You should only use this method as the last resort if the types
|
|
247
266
|
* don't support your use case.
|
|
248
267
|
*/
|
|
249
|
-
castTo() {
|
|
268
|
+
$castTo() {
|
|
250
269
|
return new DeleteQueryBuilder(this.#props);
|
|
251
270
|
}
|
|
271
|
+
/**
|
|
272
|
+
* @deprecated Use `$castTo` instead.
|
|
273
|
+
*/
|
|
274
|
+
castTo() {
|
|
275
|
+
return this.$castTo();
|
|
276
|
+
}
|
|
252
277
|
/**
|
|
253
278
|
* Asserts that query's output row type equals the given type `T`.
|
|
254
279
|
*
|
|
@@ -277,19 +302,25 @@ class DeleteQueryBuilder {
|
|
|
277
302
|
* .deleteFrom('person')
|
|
278
303
|
* .where('id', '=', person.id)
|
|
279
304
|
* .returning('first_name')
|
|
280
|
-
*
|
|
305
|
+
* .$assertType<{ first_name: string }>()
|
|
281
306
|
* )
|
|
282
307
|
* .with('deleted_pet', (qb) => qb
|
|
283
308
|
* .deleteFrom('pet')
|
|
284
309
|
* .where('owner_id', '=', person.id)
|
|
285
310
|
* .returning(['name as pet_name', 'species'])
|
|
286
|
-
*
|
|
311
|
+
* .$assertType<{ pet_name: string, species: Species }>()
|
|
287
312
|
* )
|
|
288
313
|
* .selectFrom(['deleted_person', 'deleted_pet'])
|
|
289
314
|
* .selectAll()
|
|
290
315
|
* .executeTakeFirstOrThrow()
|
|
291
316
|
* ```
|
|
292
317
|
*/
|
|
318
|
+
$assertType() {
|
|
319
|
+
return new DeleteQueryBuilder(this.#props);
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* @deprecated Use `$assertType` instead.
|
|
323
|
+
*/
|
|
293
324
|
assertType() {
|
|
294
325
|
return new DeleteQueryBuilder(this.#props);
|
|
295
326
|
}
|
|
@@ -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 {
|
|
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:
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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.
|
|
@@ -320,7 +320,7 @@ class InsertQueryBuilder {
|
|
|
320
320
|
* Simply calls the given function passing `this` as the only argument.
|
|
321
321
|
*
|
|
322
322
|
* If you want to conditionally call a method on `this`, see
|
|
323
|
-
* the {@link if} method.
|
|
323
|
+
* the {@link $if} method.
|
|
324
324
|
*
|
|
325
325
|
* ### Examples
|
|
326
326
|
*
|
|
@@ -334,13 +334,19 @@ class InsertQueryBuilder {
|
|
|
334
334
|
*
|
|
335
335
|
* db.updateTable('person')
|
|
336
336
|
* .set(values)
|
|
337
|
-
*
|
|
337
|
+
* .$call(log)
|
|
338
338
|
* .execute()
|
|
339
339
|
* ```
|
|
340
340
|
*/
|
|
341
|
-
call(func) {
|
|
341
|
+
$call(func) {
|
|
342
342
|
return func(this);
|
|
343
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* @deprecated Use `$call` instead
|
|
346
|
+
*/
|
|
347
|
+
call(func) {
|
|
348
|
+
return this.$call(func);
|
|
349
|
+
}
|
|
344
350
|
/**
|
|
345
351
|
* Call `func(this)` if `condition` is true.
|
|
346
352
|
*
|
|
@@ -359,7 +365,7 @@ class InsertQueryBuilder {
|
|
|
359
365
|
* .insertInto('person')
|
|
360
366
|
* .values(values)
|
|
361
367
|
* .returning(['id', 'first_name'])
|
|
362
|
-
*
|
|
368
|
+
* .$if(returnLastName, (qb) => qb.returning('last_name'))
|
|
363
369
|
* .executeTakeFirstOrThrow()
|
|
364
370
|
* }
|
|
365
371
|
* ```
|
|
@@ -376,7 +382,7 @@ class InsertQueryBuilder {
|
|
|
376
382
|
* }
|
|
377
383
|
* ```
|
|
378
384
|
*/
|
|
379
|
-
if(condition, func) {
|
|
385
|
+
$if(condition, func) {
|
|
380
386
|
if (condition) {
|
|
381
387
|
return func(this);
|
|
382
388
|
}
|
|
@@ -384,15 +390,27 @@ class InsertQueryBuilder {
|
|
|
384
390
|
...this.#props,
|
|
385
391
|
});
|
|
386
392
|
}
|
|
393
|
+
/**
|
|
394
|
+
* @deprecated Use `$if` instead
|
|
395
|
+
*/
|
|
396
|
+
if(condition, func) {
|
|
397
|
+
return this.$if(condition, func);
|
|
398
|
+
}
|
|
387
399
|
/**
|
|
388
400
|
* Change the output type of the query.
|
|
389
401
|
*
|
|
390
402
|
* You should only use this method as the last resort if the types
|
|
391
403
|
* don't support your use case.
|
|
392
404
|
*/
|
|
393
|
-
castTo() {
|
|
405
|
+
$castTo() {
|
|
394
406
|
return new InsertQueryBuilder(this.#props);
|
|
395
407
|
}
|
|
408
|
+
/**
|
|
409
|
+
* @deprecated Use `$castTo` instead.
|
|
410
|
+
*/
|
|
411
|
+
castTo() {
|
|
412
|
+
return this.$castTo();
|
|
413
|
+
}
|
|
396
414
|
/**
|
|
397
415
|
* Asserts that query's output row type equals the given type `T`.
|
|
398
416
|
*
|
|
@@ -421,19 +439,25 @@ class InsertQueryBuilder {
|
|
|
421
439
|
* .insertInto('person')
|
|
422
440
|
* .values(person)
|
|
423
441
|
* .returning('id')
|
|
424
|
-
*
|
|
442
|
+
* .$assertType<{ id: string }>()
|
|
425
443
|
* )
|
|
426
444
|
* .with('new_pet', (qb) => qb
|
|
427
445
|
* .insertInto('pet')
|
|
428
446
|
* .values({ owner_id: (eb) => eb.selectFrom('new_person').select('id'), ...pet })
|
|
429
447
|
* .returning(['name as pet_name', 'species'])
|
|
430
|
-
*
|
|
448
|
+
* .$assertType<{ pet_name: string, species: Species }>()
|
|
431
449
|
* )
|
|
432
450
|
* .selectFrom(['new_person', 'new_pet'])
|
|
433
451
|
* .selectAll()
|
|
434
452
|
* .executeTakeFirstOrThrow()
|
|
435
453
|
* ```
|
|
436
454
|
*/
|
|
455
|
+
$assertType() {
|
|
456
|
+
return new InsertQueryBuilder(this.#props);
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* @deprecated Use `$assertType` instead.
|
|
460
|
+
*/
|
|
437
461
|
assertType() {
|
|
438
462
|
return new InsertQueryBuilder(this.#props);
|
|
439
463
|
}
|
|
@@ -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 {
|
|
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:
|
|
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;
|