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.
Files changed (157) hide show
  1. package/dist/cjs/dialect/database-introspector.d.ts +1 -0
  2. package/dist/cjs/dialect/mssql/mssql-introspector.js +13 -2
  3. package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +4 -0
  4. package/dist/cjs/dialect/mssql/mssql-query-compiler.js +8 -0
  5. package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -0
  6. package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  7. package/dist/cjs/dialect/postgres/postgres-driver.js +2 -1
  8. package/dist/cjs/dialect/postgres/postgres-introspector.js +2 -0
  9. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
  10. package/dist/cjs/driver/database-connection.d.ts +1 -1
  11. package/dist/cjs/expression/expression-builder.d.ts +30 -4
  12. package/dist/cjs/expression/expression-builder.js +5 -0
  13. package/dist/cjs/index.d.ts +7 -1
  14. package/dist/cjs/index.js +6 -0
  15. package/dist/cjs/operation-node/add-index-node.js +1 -1
  16. package/dist/cjs/operation-node/cast-node.d.ts +13 -0
  17. package/dist/cjs/operation-node/cast-node.js +19 -0
  18. package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
  19. package/dist/cjs/operation-node/data-type-node.d.ts +5 -1
  20. package/dist/cjs/operation-node/data-type-node.js +55 -1
  21. package/dist/cjs/operation-node/delete-query-node.d.ts +4 -0
  22. package/dist/cjs/operation-node/delete-query-node.js +12 -0
  23. package/dist/cjs/operation-node/fetch-node.d.ts +15 -0
  24. package/dist/cjs/operation-node/fetch-node.js +19 -0
  25. package/dist/cjs/operation-node/insert-query-node.d.ts +4 -1
  26. package/dist/cjs/operation-node/insert-query-node.js +5 -0
  27. package/dist/cjs/operation-node/join-node.d.ts +1 -1
  28. package/dist/cjs/operation-node/matched-node.d.ts +13 -0
  29. package/dist/cjs/operation-node/matched-node.js +19 -0
  30. package/dist/cjs/operation-node/merge-query-node.d.ts +25 -0
  31. package/dist/cjs/operation-node/merge-query-node.js +45 -0
  32. package/dist/cjs/operation-node/operation-node-transformer.d.ts +10 -0
  33. package/dist/cjs/operation-node/operation-node-transformer.js +50 -0
  34. package/dist/cjs/operation-node/operation-node-visitor.d.ts +10 -0
  35. package/dist/cjs/operation-node/operation-node-visitor.js +5 -0
  36. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  37. package/dist/cjs/operation-node/query-node.d.ts +10 -3
  38. package/dist/cjs/operation-node/query-node.js +15 -1
  39. package/dist/cjs/operation-node/select-query-node.d.ts +5 -0
  40. package/dist/cjs/operation-node/select-query-node.js +6 -0
  41. package/dist/cjs/operation-node/top-node.d.ts +14 -0
  42. package/dist/cjs/operation-node/top-node.js +19 -0
  43. package/dist/cjs/operation-node/update-query-node.d.ts +7 -1
  44. package/dist/cjs/operation-node/update-query-node.js +11 -0
  45. package/dist/cjs/parser/binary-operation-parser.d.ts +1 -1
  46. package/dist/cjs/parser/binary-operation-parser.js +2 -2
  47. package/dist/cjs/parser/data-type-parser.js +7 -3
  48. package/dist/cjs/parser/fetch-parser.d.ts +2 -0
  49. package/dist/cjs/parser/fetch-parser.js +18 -0
  50. package/dist/cjs/parser/insert-values-parser.d.ts +3 -3
  51. package/dist/cjs/parser/merge-parser.d.ts +9 -0
  52. package/dist/cjs/parser/merge-parser.js +32 -0
  53. package/dist/cjs/parser/table-parser.d.ts +4 -3
  54. package/dist/cjs/parser/top-parser.d.ts +2 -0
  55. package/dist/cjs/parser/top-parser.js +20 -0
  56. package/dist/cjs/plugin/with-schema/with-schema-transformer.js +4 -0
  57. package/dist/cjs/query-builder/delete-query-builder.d.ts +99 -0
  58. package/dist/cjs/query-builder/delete-query-builder.js +120 -0
  59. package/dist/cjs/query-builder/insert-query-builder.d.ts +71 -0
  60. package/dist/cjs/query-builder/insert-query-builder.js +82 -0
  61. package/dist/cjs/query-builder/merge-query-builder.d.ts +557 -0
  62. package/dist/cjs/query-builder/merge-query-builder.js +518 -0
  63. package/dist/cjs/query-builder/merge-result.d.ts +4 -0
  64. package/dist/cjs/query-builder/merge-result.js +10 -0
  65. package/dist/cjs/query-builder/select-query-builder.d.ts +102 -7
  66. package/dist/cjs/query-builder/select-query-builder.js +14 -0
  67. package/dist/cjs/query-builder/update-query-builder.d.ts +80 -0
  68. package/dist/cjs/query-builder/update-query-builder.js +98 -0
  69. package/dist/cjs/query-compiler/default-query-compiler.d.ts +10 -0
  70. package/dist/cjs/query-compiler/default-query-compiler.js +94 -10
  71. package/dist/cjs/query-compiler/query-compiler.d.ts +2 -1
  72. package/dist/cjs/query-creator.d.ts +40 -2
  73. package/dist/cjs/query-creator.js +9 -0
  74. package/dist/cjs/schema/alter-table-add-index-builder.js +6 -2
  75. package/dist/cjs/schema/column-definition-builder.d.ts +13 -1
  76. package/dist/cjs/schema/column-definition-builder.js +15 -1
  77. package/dist/cjs/util/infer-result.d.ts +2 -1
  78. package/dist/cjs/util/type-utils.d.ts +3 -2
  79. package/dist/esm/dialect/database-introspector.d.ts +1 -0
  80. package/dist/esm/dialect/mssql/mssql-introspector.js +13 -2
  81. package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +4 -0
  82. package/dist/esm/dialect/mssql/mssql-query-compiler.js +8 -0
  83. package/dist/esm/dialect/mysql/mysql-introspector.js +2 -0
  84. package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
  85. package/dist/esm/dialect/postgres/postgres-driver.js +2 -1
  86. package/dist/esm/dialect/postgres/postgres-introspector.js +2 -0
  87. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
  88. package/dist/esm/driver/database-connection.d.ts +1 -1
  89. package/dist/esm/expression/expression-builder.d.ts +30 -4
  90. package/dist/esm/expression/expression-builder.js +5 -0
  91. package/dist/esm/index.d.ts +7 -1
  92. package/dist/esm/index.js +6 -0
  93. package/dist/esm/operation-node/add-index-node.js +1 -1
  94. package/dist/esm/operation-node/cast-node.d.ts +13 -0
  95. package/dist/esm/operation-node/cast-node.js +17 -0
  96. package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
  97. package/dist/esm/operation-node/data-type-node.d.ts +5 -1
  98. package/dist/esm/operation-node/data-type-node.js +53 -0
  99. package/dist/esm/operation-node/delete-query-node.d.ts +4 -0
  100. package/dist/esm/operation-node/delete-query-node.js +12 -0
  101. package/dist/esm/operation-node/fetch-node.d.ts +15 -0
  102. package/dist/esm/operation-node/fetch-node.js +17 -0
  103. package/dist/esm/operation-node/insert-query-node.d.ts +4 -1
  104. package/dist/esm/operation-node/insert-query-node.js +5 -0
  105. package/dist/esm/operation-node/join-node.d.ts +1 -1
  106. package/dist/esm/operation-node/matched-node.d.ts +13 -0
  107. package/dist/esm/operation-node/matched-node.js +17 -0
  108. package/dist/esm/operation-node/merge-query-node.d.ts +25 -0
  109. package/dist/esm/operation-node/merge-query-node.js +43 -0
  110. package/dist/esm/operation-node/operation-node-transformer.d.ts +10 -0
  111. package/dist/esm/operation-node/operation-node-transformer.js +50 -0
  112. package/dist/esm/operation-node/operation-node-visitor.d.ts +10 -0
  113. package/dist/esm/operation-node/operation-node-visitor.js +5 -0
  114. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  115. package/dist/esm/operation-node/query-node.d.ts +10 -3
  116. package/dist/esm/operation-node/query-node.js +15 -1
  117. package/dist/esm/operation-node/select-query-node.d.ts +5 -0
  118. package/dist/esm/operation-node/select-query-node.js +6 -0
  119. package/dist/esm/operation-node/top-node.d.ts +14 -0
  120. package/dist/esm/operation-node/top-node.js +17 -0
  121. package/dist/esm/operation-node/update-query-node.d.ts +7 -1
  122. package/dist/esm/operation-node/update-query-node.js +11 -0
  123. package/dist/esm/parser/binary-operation-parser.d.ts +1 -1
  124. package/dist/esm/parser/binary-operation-parser.js +2 -2
  125. package/dist/esm/parser/data-type-parser.js +8 -4
  126. package/dist/esm/parser/fetch-parser.d.ts +2 -0
  127. package/dist/esm/parser/fetch-parser.js +15 -0
  128. package/dist/esm/parser/insert-values-parser.d.ts +3 -3
  129. package/dist/esm/parser/merge-parser.d.ts +9 -0
  130. package/dist/esm/parser/merge-parser.js +28 -0
  131. package/dist/esm/parser/table-parser.d.ts +4 -3
  132. package/dist/esm/parser/top-parser.d.ts +2 -0
  133. package/dist/esm/parser/top-parser.js +17 -0
  134. package/dist/esm/plugin/with-schema/with-schema-transformer.js +4 -0
  135. package/dist/esm/query-builder/delete-query-builder.d.ts +99 -0
  136. package/dist/esm/query-builder/delete-query-builder.js +120 -0
  137. package/dist/esm/query-builder/insert-query-builder.d.ts +71 -0
  138. package/dist/esm/query-builder/insert-query-builder.js +82 -0
  139. package/dist/esm/query-builder/merge-query-builder.d.ts +557 -0
  140. package/dist/esm/query-builder/merge-query-builder.js +512 -0
  141. package/dist/esm/query-builder/merge-result.d.ts +4 -0
  142. package/dist/esm/query-builder/merge-result.js +7 -0
  143. package/dist/esm/query-builder/select-query-builder.d.ts +102 -7
  144. package/dist/esm/query-builder/select-query-builder.js +14 -0
  145. package/dist/esm/query-builder/update-query-builder.d.ts +80 -0
  146. package/dist/esm/query-builder/update-query-builder.js +98 -0
  147. package/dist/esm/query-compiler/default-query-compiler.d.ts +10 -0
  148. package/dist/esm/query-compiler/default-query-compiler.js +94 -10
  149. package/dist/esm/query-compiler/query-compiler.d.ts +2 -1
  150. package/dist/esm/query-creator.d.ts +40 -2
  151. package/dist/esm/query-creator.js +10 -1
  152. package/dist/esm/schema/alter-table-add-index-builder.js +7 -3
  153. package/dist/esm/schema/column-definition-builder.d.ts +13 -1
  154. package/dist/esm/schema/column-definition-builder.js +15 -1
  155. package/dist/esm/util/infer-result.d.ts +2 -1
  156. package/dist/esm/util/type-utils.d.ts +3 -2
  157. 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.