kysely 0.27.2 → 0.27.3
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/dist/cjs/dialect/database-introspector.d.ts +1 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.js +13 -2
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +4 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +8 -0
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-driver.js +2 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +2 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/cjs/driver/database-connection.d.ts +1 -1
- package/dist/cjs/expression/expression-builder.d.ts +30 -4
- package/dist/cjs/expression/expression-builder.js +5 -0
- package/dist/cjs/index.d.ts +7 -1
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/operation-node/add-index-node.js +1 -1
- package/dist/cjs/operation-node/cast-node.d.ts +13 -0
- package/dist/cjs/operation-node/cast-node.js +19 -0
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
- package/dist/cjs/operation-node/data-type-node.d.ts +5 -1
- package/dist/cjs/operation-node/data-type-node.js +55 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +4 -0
- package/dist/cjs/operation-node/delete-query-node.js +12 -0
- package/dist/cjs/operation-node/fetch-node.d.ts +15 -0
- package/dist/cjs/operation-node/fetch-node.js +19 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +4 -1
- package/dist/cjs/operation-node/insert-query-node.js +5 -0
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/matched-node.d.ts +13 -0
- package/dist/cjs/operation-node/matched-node.js +19 -0
- package/dist/cjs/operation-node/merge-query-node.d.ts +25 -0
- package/dist/cjs/operation-node/merge-query-node.js +45 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +50 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +10 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +5 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/query-node.d.ts +10 -3
- package/dist/cjs/operation-node/query-node.js +15 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -0
- package/dist/cjs/operation-node/select-query-node.js +6 -0
- package/dist/cjs/operation-node/top-node.d.ts +14 -0
- package/dist/cjs/operation-node/top-node.js +19 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +7 -1
- package/dist/cjs/operation-node/update-query-node.js +11 -0
- package/dist/cjs/parser/binary-operation-parser.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.js +2 -2
- package/dist/cjs/parser/data-type-parser.js +7 -3
- package/dist/cjs/parser/fetch-parser.d.ts +2 -0
- package/dist/cjs/parser/fetch-parser.js +18 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +3 -3
- package/dist/cjs/parser/merge-parser.d.ts +9 -0
- package/dist/cjs/parser/merge-parser.js +32 -0
- package/dist/cjs/parser/table-parser.d.ts +4 -3
- package/dist/cjs/parser/top-parser.d.ts +2 -0
- package/dist/cjs/parser/top-parser.js +20 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +4 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +99 -0
- package/dist/cjs/query-builder/delete-query-builder.js +120 -0
- package/dist/cjs/query-builder/insert-query-builder.d.ts +71 -0
- package/dist/cjs/query-builder/insert-query-builder.js +82 -0
- package/dist/cjs/query-builder/merge-query-builder.d.ts +557 -0
- package/dist/cjs/query-builder/merge-query-builder.js +518 -0
- package/dist/cjs/query-builder/merge-result.d.ts +4 -0
- package/dist/cjs/query-builder/merge-result.js +10 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +102 -7
- package/dist/cjs/query-builder/select-query-builder.js +14 -0
- package/dist/cjs/query-builder/update-query-builder.d.ts +80 -0
- package/dist/cjs/query-builder/update-query-builder.js +98 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +94 -10
- package/dist/cjs/query-compiler/query-compiler.d.ts +2 -1
- package/dist/cjs/query-creator.d.ts +40 -2
- package/dist/cjs/query-creator.js +9 -0
- package/dist/cjs/schema/alter-table-add-index-builder.js +6 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +13 -1
- package/dist/cjs/schema/column-definition-builder.js +15 -1
- package/dist/cjs/util/infer-result.d.ts +2 -1
- package/dist/cjs/util/type-utils.d.ts +3 -2
- package/dist/esm/dialect/database-introspector.d.ts +1 -0
- package/dist/esm/dialect/mssql/mssql-introspector.js +13 -2
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +4 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +8 -0
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -0
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +2 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +2 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/driver/database-connection.d.ts +1 -1
- package/dist/esm/expression/expression-builder.d.ts +30 -4
- package/dist/esm/expression/expression-builder.js +5 -0
- package/dist/esm/index.d.ts +7 -1
- package/dist/esm/index.js +6 -0
- package/dist/esm/operation-node/add-index-node.js +1 -1
- package/dist/esm/operation-node/cast-node.d.ts +13 -0
- package/dist/esm/operation-node/cast-node.js +17 -0
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
- package/dist/esm/operation-node/data-type-node.d.ts +5 -1
- package/dist/esm/operation-node/data-type-node.js +53 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +4 -0
- package/dist/esm/operation-node/delete-query-node.js +12 -0
- package/dist/esm/operation-node/fetch-node.d.ts +15 -0
- package/dist/esm/operation-node/fetch-node.js +17 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +4 -1
- package/dist/esm/operation-node/insert-query-node.js +5 -0
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/matched-node.d.ts +13 -0
- package/dist/esm/operation-node/matched-node.js +17 -0
- package/dist/esm/operation-node/merge-query-node.d.ts +25 -0
- package/dist/esm/operation-node/merge-query-node.js +43 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +10 -0
- package/dist/esm/operation-node/operation-node-transformer.js +50 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +10 -0
- package/dist/esm/operation-node/operation-node-visitor.js +5 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/query-node.d.ts +10 -3
- package/dist/esm/operation-node/query-node.js +15 -1
- package/dist/esm/operation-node/select-query-node.d.ts +5 -0
- package/dist/esm/operation-node/select-query-node.js +6 -0
- package/dist/esm/operation-node/top-node.d.ts +14 -0
- package/dist/esm/operation-node/top-node.js +17 -0
- package/dist/esm/operation-node/update-query-node.d.ts +7 -1
- package/dist/esm/operation-node/update-query-node.js +11 -0
- package/dist/esm/parser/binary-operation-parser.d.ts +1 -1
- package/dist/esm/parser/binary-operation-parser.js +2 -2
- package/dist/esm/parser/data-type-parser.js +8 -4
- package/dist/esm/parser/fetch-parser.d.ts +2 -0
- package/dist/esm/parser/fetch-parser.js +15 -0
- package/dist/esm/parser/insert-values-parser.d.ts +3 -3
- package/dist/esm/parser/merge-parser.d.ts +9 -0
- package/dist/esm/parser/merge-parser.js +28 -0
- package/dist/esm/parser/table-parser.d.ts +4 -3
- package/dist/esm/parser/top-parser.d.ts +2 -0
- package/dist/esm/parser/top-parser.js +17 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +4 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +99 -0
- package/dist/esm/query-builder/delete-query-builder.js +120 -0
- package/dist/esm/query-builder/insert-query-builder.d.ts +71 -0
- package/dist/esm/query-builder/insert-query-builder.js +82 -0
- package/dist/esm/query-builder/merge-query-builder.d.ts +557 -0
- package/dist/esm/query-builder/merge-query-builder.js +512 -0
- package/dist/esm/query-builder/merge-result.d.ts +4 -0
- package/dist/esm/query-builder/merge-result.js +7 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +102 -7
- package/dist/esm/query-builder/select-query-builder.js +14 -0
- package/dist/esm/query-builder/update-query-builder.d.ts +80 -0
- package/dist/esm/query-builder/update-query-builder.js +98 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +10 -0
- package/dist/esm/query-compiler/default-query-compiler.js +94 -10
- package/dist/esm/query-compiler/query-compiler.d.ts +2 -1
- package/dist/esm/query-creator.d.ts +40 -2
- package/dist/esm/query-creator.js +10 -1
- package/dist/esm/schema/alter-table-add-index-builder.js +7 -3
- package/dist/esm/schema/column-definition-builder.d.ts +13 -1
- package/dist/esm/schema/column-definition-builder.js +15 -1
- package/dist/esm/util/infer-result.d.ts +2 -1
- package/dist/esm/util/type-utils.d.ts +3 -2
- package/package.json +22 -21
|
@@ -27,6 +27,7 @@ const ROOT_OPERATION_NODES = freeze({
|
|
|
27
27
|
RawNode: true,
|
|
28
28
|
SelectQueryNode: true,
|
|
29
29
|
UpdateQueryNode: true,
|
|
30
|
+
MergeQueryNode: true,
|
|
30
31
|
});
|
|
31
32
|
export class WithSchemaTransformer extends OperationNodeTransformer {
|
|
32
33
|
#schema;
|
|
@@ -101,6 +102,9 @@ export class WithSchemaTransformer extends OperationNodeTransformer {
|
|
|
101
102
|
this.#collectSchemableIdsFromTableExpr(join.table, schemableIds);
|
|
102
103
|
}
|
|
103
104
|
}
|
|
105
|
+
if ('using' in node && node.using) {
|
|
106
|
+
this.#collectSchemableIdsFromTableExpr(node.using, schemableIds);
|
|
107
|
+
}
|
|
104
108
|
return schemableIds;
|
|
105
109
|
}
|
|
106
110
|
#collectCTEs(node) {
|
|
@@ -399,6 +399,46 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
399
399
|
* ```
|
|
400
400
|
*/
|
|
401
401
|
clearWhere(): DeleteQueryBuilder<DB, TB, O>;
|
|
402
|
+
/**
|
|
403
|
+
* Changes a `delete from` query into a `delete top from` query.
|
|
404
|
+
*
|
|
405
|
+
* `top` clause is only supported by some dialects like MS SQL Server.
|
|
406
|
+
*
|
|
407
|
+
* ### Examples
|
|
408
|
+
*
|
|
409
|
+
* Delete the first 5 rows:
|
|
410
|
+
*
|
|
411
|
+
* ```ts
|
|
412
|
+
* await db
|
|
413
|
+
* .deleteFrom('person')
|
|
414
|
+
* .top(5)
|
|
415
|
+
* .where('age', '>', 18)
|
|
416
|
+
* .executeTakeFirstOrThrow()
|
|
417
|
+
* ```
|
|
418
|
+
*
|
|
419
|
+
* The generated SQL (MS SQL Server):
|
|
420
|
+
*
|
|
421
|
+
* ```sql
|
|
422
|
+
* delete top(5) from "person" where "age" > @1
|
|
423
|
+
* ```
|
|
424
|
+
*
|
|
425
|
+
* Delete the first 50% of rows:
|
|
426
|
+
*
|
|
427
|
+
* ```ts
|
|
428
|
+
* await db
|
|
429
|
+
* .deleteFrom('person')
|
|
430
|
+
* .top(50, 'percent')
|
|
431
|
+
* .where('age', '>', 18)
|
|
432
|
+
* .executeTakeFirstOrThrow()
|
|
433
|
+
* ```
|
|
434
|
+
*
|
|
435
|
+
* The generated SQL (MS SQL Server):
|
|
436
|
+
*
|
|
437
|
+
* ```sql
|
|
438
|
+
* delete top(50) percent from "person" where "age" > @1
|
|
439
|
+
* ```
|
|
440
|
+
*/
|
|
441
|
+
top(expression: number | bigint, modifiers?: 'percent'): DeleteQueryBuilder<DB, TB, O>;
|
|
402
442
|
/**
|
|
403
443
|
* Adds a `using` clause to the query.
|
|
404
444
|
*
|
|
@@ -762,6 +802,65 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
762
802
|
*/
|
|
763
803
|
returningAll<T extends TB>(table: T): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, T, O>>;
|
|
764
804
|
returningAll(): DeleteQueryBuilder<DB, TB, ReturningAllRow<DB, TB, O>>;
|
|
805
|
+
/**
|
|
806
|
+
* Clears all `returning` clauses from the query.
|
|
807
|
+
*
|
|
808
|
+
* ### Examples
|
|
809
|
+
*
|
|
810
|
+
* ```ts
|
|
811
|
+
* db.deleteFrom('pet')
|
|
812
|
+
* .returningAll()
|
|
813
|
+
* .where('name', '=', 'Max')
|
|
814
|
+
* .clearReturning()
|
|
815
|
+
* ```
|
|
816
|
+
*
|
|
817
|
+
* The generated SQL(PostgreSQL):
|
|
818
|
+
*
|
|
819
|
+
* ```sql
|
|
820
|
+
* delete from "pet" where "name" = "Max"
|
|
821
|
+
* ```
|
|
822
|
+
*/
|
|
823
|
+
clearReturning(): DeleteQueryBuilder<DB, TB, DeleteResult>;
|
|
824
|
+
/**
|
|
825
|
+
* Clears the `limit` clause from the query.
|
|
826
|
+
*
|
|
827
|
+
* ### Examples
|
|
828
|
+
*
|
|
829
|
+
* ```ts
|
|
830
|
+
* db.deleteFrom('pet')
|
|
831
|
+
* .returningAll()
|
|
832
|
+
* .where('name', '=', 'Max')
|
|
833
|
+
* .limit(5)
|
|
834
|
+
* .clearLimit()
|
|
835
|
+
* ```
|
|
836
|
+
*
|
|
837
|
+
* The generated SQL(PostgreSQL):
|
|
838
|
+
*
|
|
839
|
+
* ```sql
|
|
840
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
841
|
+
* ```
|
|
842
|
+
*/
|
|
843
|
+
clearLimit(): DeleteQueryBuilder<DB, TB, O>;
|
|
844
|
+
/**
|
|
845
|
+
* Clears the `order by` clause from the query.
|
|
846
|
+
*
|
|
847
|
+
* ### Examples
|
|
848
|
+
*
|
|
849
|
+
* ```ts
|
|
850
|
+
* db.deleteFrom('pet')
|
|
851
|
+
* .returningAll()
|
|
852
|
+
* .where('name', '=', 'Max')
|
|
853
|
+
* .orderBy('id')
|
|
854
|
+
* .clearOrderBy()
|
|
855
|
+
* ```
|
|
856
|
+
*
|
|
857
|
+
* The generated SQL(PostgreSQL):
|
|
858
|
+
*
|
|
859
|
+
* ```sql
|
|
860
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
861
|
+
* ```
|
|
862
|
+
*/
|
|
863
|
+
clearOrderBy(): DeleteQueryBuilder<DB, TB, O>;
|
|
765
864
|
/**
|
|
766
865
|
* Adds an `order by` clause to the query.
|
|
767
866
|
*
|
|
@@ -12,6 +12,7 @@ import { LimitNode } from '../operation-node/limit-node.js';
|
|
|
12
12
|
import { parseOrderBy, } from '../parser/order-by-parser.js';
|
|
13
13
|
import { parseValueBinaryOperationOrExpression, parseReferentialBinaryOperation, } from '../parser/binary-operation-parser.js';
|
|
14
14
|
import { parseValueExpression, } from '../parser/value-parser.js';
|
|
15
|
+
import { parseTop } from '../parser/top-parser.js';
|
|
15
16
|
export class DeleteQueryBuilder {
|
|
16
17
|
#props;
|
|
17
18
|
constructor(props) {
|
|
@@ -35,6 +36,51 @@ export class DeleteQueryBuilder {
|
|
|
35
36
|
queryNode: QueryNode.cloneWithoutWhere(this.#props.queryNode),
|
|
36
37
|
});
|
|
37
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Changes a `delete from` query into a `delete top from` query.
|
|
41
|
+
*
|
|
42
|
+
* `top` clause is only supported by some dialects like MS SQL Server.
|
|
43
|
+
*
|
|
44
|
+
* ### Examples
|
|
45
|
+
*
|
|
46
|
+
* Delete the first 5 rows:
|
|
47
|
+
*
|
|
48
|
+
* ```ts
|
|
49
|
+
* await db
|
|
50
|
+
* .deleteFrom('person')
|
|
51
|
+
* .top(5)
|
|
52
|
+
* .where('age', '>', 18)
|
|
53
|
+
* .executeTakeFirstOrThrow()
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* The generated SQL (MS SQL Server):
|
|
57
|
+
*
|
|
58
|
+
* ```sql
|
|
59
|
+
* delete top(5) from "person" where "age" > @1
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* Delete the first 50% of rows:
|
|
63
|
+
*
|
|
64
|
+
* ```ts
|
|
65
|
+
* await db
|
|
66
|
+
* .deleteFrom('person')
|
|
67
|
+
* .top(50, 'percent')
|
|
68
|
+
* .where('age', '>', 18)
|
|
69
|
+
* .executeTakeFirstOrThrow()
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* The generated SQL (MS SQL Server):
|
|
73
|
+
*
|
|
74
|
+
* ```sql
|
|
75
|
+
* delete top(50) percent from "person" where "age" > @1
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
top(expression, modifiers) {
|
|
79
|
+
return new DeleteQueryBuilder({
|
|
80
|
+
...this.#props,
|
|
81
|
+
queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),
|
|
82
|
+
});
|
|
83
|
+
}
|
|
38
84
|
using(tables) {
|
|
39
85
|
return new DeleteQueryBuilder({
|
|
40
86
|
...this.#props,
|
|
@@ -77,6 +123,80 @@ export class DeleteQueryBuilder {
|
|
|
77
123
|
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll(table)),
|
|
78
124
|
});
|
|
79
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Clears all `returning` clauses from the query.
|
|
128
|
+
*
|
|
129
|
+
* ### Examples
|
|
130
|
+
*
|
|
131
|
+
* ```ts
|
|
132
|
+
* db.deleteFrom('pet')
|
|
133
|
+
* .returningAll()
|
|
134
|
+
* .where('name', '=', 'Max')
|
|
135
|
+
* .clearReturning()
|
|
136
|
+
* ```
|
|
137
|
+
*
|
|
138
|
+
* The generated SQL(PostgreSQL):
|
|
139
|
+
*
|
|
140
|
+
* ```sql
|
|
141
|
+
* delete from "pet" where "name" = "Max"
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
clearReturning() {
|
|
145
|
+
return new DeleteQueryBuilder({
|
|
146
|
+
...this.#props,
|
|
147
|
+
queryNode: QueryNode.cloneWithoutReturning(this.#props.queryNode),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Clears the `limit` clause from the query.
|
|
152
|
+
*
|
|
153
|
+
* ### Examples
|
|
154
|
+
*
|
|
155
|
+
* ```ts
|
|
156
|
+
* db.deleteFrom('pet')
|
|
157
|
+
* .returningAll()
|
|
158
|
+
* .where('name', '=', 'Max')
|
|
159
|
+
* .limit(5)
|
|
160
|
+
* .clearLimit()
|
|
161
|
+
* ```
|
|
162
|
+
*
|
|
163
|
+
* The generated SQL(PostgreSQL):
|
|
164
|
+
*
|
|
165
|
+
* ```sql
|
|
166
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
clearLimit() {
|
|
170
|
+
return new DeleteQueryBuilder({
|
|
171
|
+
...this.#props,
|
|
172
|
+
queryNode: DeleteQueryNode.cloneWithoutLimit(this.#props.queryNode),
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Clears the `order by` clause from the query.
|
|
177
|
+
*
|
|
178
|
+
* ### Examples
|
|
179
|
+
*
|
|
180
|
+
* ```ts
|
|
181
|
+
* db.deleteFrom('pet')
|
|
182
|
+
* .returningAll()
|
|
183
|
+
* .where('name', '=', 'Max')
|
|
184
|
+
* .orderBy('id')
|
|
185
|
+
* .clearOrderBy()
|
|
186
|
+
* ```
|
|
187
|
+
*
|
|
188
|
+
* The generated SQL(PostgreSQL):
|
|
189
|
+
*
|
|
190
|
+
* ```sql
|
|
191
|
+
* delete from "pet" where "name" = "Max" returning *
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
clearOrderBy() {
|
|
195
|
+
return new DeleteQueryBuilder({
|
|
196
|
+
...this.#props,
|
|
197
|
+
queryNode: DeleteQueryNode.cloneWithoutOrderBy(this.#props.queryNode),
|
|
198
|
+
});
|
|
199
|
+
}
|
|
80
200
|
/**
|
|
81
201
|
* Adds an `order by` clause to the query.
|
|
82
202
|
*
|
|
@@ -241,6 +241,14 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
241
241
|
expression(expression: ExpressionOrFactory<DB, TB, any>): InsertQueryBuilder<DB, TB, O>;
|
|
242
242
|
/**
|
|
243
243
|
* Creates an `insert into "person" default values` query.
|
|
244
|
+
*
|
|
245
|
+
* ### Examples
|
|
246
|
+
*
|
|
247
|
+
* ```ts
|
|
248
|
+
* await db.insertInto('person')
|
|
249
|
+
* .defaultValues()
|
|
250
|
+
* .execute()
|
|
251
|
+
* ```
|
|
244
252
|
*/
|
|
245
253
|
defaultValues(): InsertQueryBuilder<DB, TB, O>;
|
|
246
254
|
/**
|
|
@@ -265,6 +273,50 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
265
273
|
* ```
|
|
266
274
|
*/
|
|
267
275
|
ignore(): InsertQueryBuilder<DB, TB, O>;
|
|
276
|
+
/**
|
|
277
|
+
* Changes an `insert into` query to an `insert top into` query.
|
|
278
|
+
*
|
|
279
|
+
* `top` clause is only supported by some dialects like MS SQL Server.
|
|
280
|
+
*
|
|
281
|
+
* ### Examples
|
|
282
|
+
*
|
|
283
|
+
* Insert the first 5 rows:
|
|
284
|
+
*
|
|
285
|
+
* ```ts
|
|
286
|
+
* await db.insertInto('person')
|
|
287
|
+
* .top(5)
|
|
288
|
+
* .columns(['first_name', 'gender'])
|
|
289
|
+
* .expression(
|
|
290
|
+
* (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])
|
|
291
|
+
* )
|
|
292
|
+
* .execute()
|
|
293
|
+
* ```
|
|
294
|
+
*
|
|
295
|
+
* The generated SQL (MS SQL Server):
|
|
296
|
+
*
|
|
297
|
+
* ```sql
|
|
298
|
+
* insert top(5) into "person" ("first_name", "gender") select "name", 'other' as "gender" from "pet"
|
|
299
|
+
* ```
|
|
300
|
+
*
|
|
301
|
+
* Insert the first 50 percent of rows:
|
|
302
|
+
*
|
|
303
|
+
* ```ts
|
|
304
|
+
* await db.insertInto('person')
|
|
305
|
+
* .top(50, 'percent')
|
|
306
|
+
* .columns(['first_name', 'gender'])
|
|
307
|
+
* .expression(
|
|
308
|
+
* (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])
|
|
309
|
+
* )
|
|
310
|
+
* .execute()
|
|
311
|
+
* ```
|
|
312
|
+
*
|
|
313
|
+
* The generated SQL (MS SQL Server):
|
|
314
|
+
*
|
|
315
|
+
* ```sql
|
|
316
|
+
* insert top(50) percent into "person" ("first_name", "gender") select "name", 'other' as "gender" from "pet"
|
|
317
|
+
* ```
|
|
318
|
+
*/
|
|
319
|
+
top(expression: number | bigint, modifiers?: 'percent'): InsertQueryBuilder<DB, TB, O>;
|
|
268
320
|
/**
|
|
269
321
|
* Adds an `on conflict` clause to the query.
|
|
270
322
|
*
|
|
@@ -503,6 +555,25 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
503
555
|
* that support `returning` such as PostgreSQL.
|
|
504
556
|
*/
|
|
505
557
|
returningAll(): InsertQueryBuilder<DB, TB, Selectable<DB[TB]>>;
|
|
558
|
+
/**
|
|
559
|
+
* Clears all `returning` clauses from the query.
|
|
560
|
+
*
|
|
561
|
+
* ### Examples
|
|
562
|
+
*
|
|
563
|
+
* ```ts
|
|
564
|
+
* db.insertInto('person')
|
|
565
|
+
* .values({ first_name: 'James', last_name: 'Smith', age: 42 })
|
|
566
|
+
* .returning(['first_name'])
|
|
567
|
+
* .clearReturning()
|
|
568
|
+
* ```
|
|
569
|
+
*
|
|
570
|
+
* The generated SQL(PostgreSQL):
|
|
571
|
+
*
|
|
572
|
+
* ```sql
|
|
573
|
+
* insert into "person" ("James", "Smith", 42)
|
|
574
|
+
* ```
|
|
575
|
+
*/
|
|
576
|
+
clearReturning(): InsertQueryBuilder<DB, TB, InsertResult>;
|
|
506
577
|
/**
|
|
507
578
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
508
579
|
* what the provided function returns.
|
|
@@ -13,6 +13,7 @@ import { parseExpression, } from '../parser/expression-parser.js';
|
|
|
13
13
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
14
14
|
import { OnConflictBuilder, } from './on-conflict-builder.js';
|
|
15
15
|
import { OnConflictNode } from '../operation-node/on-conflict-node.js';
|
|
16
|
+
import { parseTop } from '../parser/top-parser.js';
|
|
16
17
|
export class InsertQueryBuilder {
|
|
17
18
|
#props;
|
|
18
19
|
constructor(props) {
|
|
@@ -258,6 +259,14 @@ export class InsertQueryBuilder {
|
|
|
258
259
|
}
|
|
259
260
|
/**
|
|
260
261
|
* Creates an `insert into "person" default values` query.
|
|
262
|
+
*
|
|
263
|
+
* ### Examples
|
|
264
|
+
*
|
|
265
|
+
* ```ts
|
|
266
|
+
* await db.insertInto('person')
|
|
267
|
+
* .defaultValues()
|
|
268
|
+
* .execute()
|
|
269
|
+
* ```
|
|
261
270
|
*/
|
|
262
271
|
defaultValues() {
|
|
263
272
|
return new InsertQueryBuilder({
|
|
@@ -296,6 +305,55 @@ export class InsertQueryBuilder {
|
|
|
296
305
|
}),
|
|
297
306
|
});
|
|
298
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Changes an `insert into` query to an `insert top into` query.
|
|
310
|
+
*
|
|
311
|
+
* `top` clause is only supported by some dialects like MS SQL Server.
|
|
312
|
+
*
|
|
313
|
+
* ### Examples
|
|
314
|
+
*
|
|
315
|
+
* Insert the first 5 rows:
|
|
316
|
+
*
|
|
317
|
+
* ```ts
|
|
318
|
+
* await db.insertInto('person')
|
|
319
|
+
* .top(5)
|
|
320
|
+
* .columns(['first_name', 'gender'])
|
|
321
|
+
* .expression(
|
|
322
|
+
* (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])
|
|
323
|
+
* )
|
|
324
|
+
* .execute()
|
|
325
|
+
* ```
|
|
326
|
+
*
|
|
327
|
+
* The generated SQL (MS SQL Server):
|
|
328
|
+
*
|
|
329
|
+
* ```sql
|
|
330
|
+
* insert top(5) into "person" ("first_name", "gender") select "name", 'other' as "gender" from "pet"
|
|
331
|
+
* ```
|
|
332
|
+
*
|
|
333
|
+
* Insert the first 50 percent of rows:
|
|
334
|
+
*
|
|
335
|
+
* ```ts
|
|
336
|
+
* await db.insertInto('person')
|
|
337
|
+
* .top(50, 'percent')
|
|
338
|
+
* .columns(['first_name', 'gender'])
|
|
339
|
+
* .expression(
|
|
340
|
+
* (eb) => eb.selectFrom('pet').select(['name', sql.lit('other').as('gender')])
|
|
341
|
+
* )
|
|
342
|
+
* .execute()
|
|
343
|
+
* ```
|
|
344
|
+
*
|
|
345
|
+
* The generated SQL (MS SQL Server):
|
|
346
|
+
*
|
|
347
|
+
* ```sql
|
|
348
|
+
* insert top(50) percent into "person" ("first_name", "gender") select "name", 'other' as "gender" from "pet"
|
|
349
|
+
* ```
|
|
350
|
+
*/
|
|
351
|
+
top(expression, modifiers) {
|
|
352
|
+
return new InsertQueryBuilder({
|
|
353
|
+
...this.#props,
|
|
354
|
+
queryNode: QueryNode.cloneWithTop(this.#props.queryNode, parseTop(expression, modifiers)),
|
|
355
|
+
});
|
|
356
|
+
}
|
|
299
357
|
/**
|
|
300
358
|
* Adds an `on conflict` clause to the query.
|
|
301
359
|
*
|
|
@@ -495,6 +553,30 @@ export class InsertQueryBuilder {
|
|
|
495
553
|
queryNode: QueryNode.cloneWithReturning(this.#props.queryNode, parseSelectAll()),
|
|
496
554
|
});
|
|
497
555
|
}
|
|
556
|
+
/**
|
|
557
|
+
* Clears all `returning` clauses from the query.
|
|
558
|
+
*
|
|
559
|
+
* ### Examples
|
|
560
|
+
*
|
|
561
|
+
* ```ts
|
|
562
|
+
* db.insertInto('person')
|
|
563
|
+
* .values({ first_name: 'James', last_name: 'Smith', age: 42 })
|
|
564
|
+
* .returning(['first_name'])
|
|
565
|
+
* .clearReturning()
|
|
566
|
+
* ```
|
|
567
|
+
*
|
|
568
|
+
* The generated SQL(PostgreSQL):
|
|
569
|
+
*
|
|
570
|
+
* ```sql
|
|
571
|
+
* insert into "person" ("James", "Smith", 42)
|
|
572
|
+
* ```
|
|
573
|
+
*/
|
|
574
|
+
clearReturning() {
|
|
575
|
+
return new InsertQueryBuilder({
|
|
576
|
+
...this.#props,
|
|
577
|
+
queryNode: QueryNode.cloneWithoutReturning(this.#props.queryNode),
|
|
578
|
+
});
|
|
579
|
+
}
|
|
498
580
|
/**
|
|
499
581
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
500
582
|
* what the provided function returns.
|