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
|
@@ -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];
|
|
@@ -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
|
|
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>;
|
|
@@ -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(
|
|
6
|
-
return Object.entries(
|
|
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
|
-
*
|
|
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.
|
|
@@ -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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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 {
|
|
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.
|
|
@@ -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
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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
|
-
*
|
|
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 {
|
|
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;
|