kysely 0.7.1 → 0.7.5

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 (194) hide show
  1. package/README.md +24 -19
  2. package/dist/cjs/dialect/dialect-adapter.d.ts +11 -9
  3. package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -1
  4. package/dist/cjs/dialect/mysql/mysql-driver.js +1 -0
  5. package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +0 -1
  6. package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -2
  7. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -4
  8. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -18
  9. package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +0 -1
  10. package/dist/cjs/dialect/postgres/postgres-introspector.js +2 -2
  11. package/dist/cjs/driver/database-connection.d.ts +2 -1
  12. package/dist/cjs/driver/driver.d.ts +1 -1
  13. package/dist/cjs/driver/single-connection-provider.d.ts +0 -1
  14. package/dist/cjs/driver/single-connection-provider.js +2 -2
  15. package/dist/cjs/index.d.ts +2 -1
  16. package/dist/cjs/index.js +2 -1
  17. package/dist/cjs/kysely.d.ts +7 -6
  18. package/dist/cjs/kysely.js +8 -6
  19. package/dist/cjs/migration/migration.js +11 -10
  20. package/dist/cjs/operation-node/alter-column-node.d.ts +2 -2
  21. package/dist/cjs/operation-node/alter-column-node.js +2 -2
  22. package/dist/cjs/operation-node/alter-table-node.d.ts +2 -2
  23. package/dist/cjs/operation-node/alter-table-node.js +2 -2
  24. package/dist/cjs/operation-node/column-definition-node.d.ts +2 -2
  25. package/dist/cjs/operation-node/column-definition-node.js +2 -2
  26. package/dist/cjs/operation-node/create-index-node.d.ts +2 -2
  27. package/dist/cjs/operation-node/create-index-node.js +2 -2
  28. package/dist/cjs/operation-node/create-table-node.d.ts +2 -1
  29. package/dist/cjs/operation-node/create-table-node.js +1 -5
  30. package/dist/cjs/operation-node/drop-index-node.d.ts +3 -3
  31. package/dist/cjs/operation-node/drop-index-node.js +2 -2
  32. package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +12 -1
  33. package/dist/cjs/operation-node/foreign-key-constraint-node.js +6 -0
  34. package/dist/cjs/operation-node/insert-query-node.d.ts +5 -2
  35. package/dist/cjs/operation-node/insert-query-node.js +2 -9
  36. package/dist/cjs/operation-node/join-node.d.ts +1 -0
  37. package/dist/cjs/operation-node/join-node.js +8 -0
  38. package/dist/cjs/operation-node/on-conflict-node.d.ts +2 -2
  39. package/dist/cjs/operation-node/on-conflict-node.js +2 -2
  40. package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +14 -0
  41. package/dist/cjs/operation-node/on-duplicate-key-node.js +18 -0
  42. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  43. package/dist/cjs/operation-node/operation-node-transformer.js +12 -0
  44. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  45. package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
  46. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  47. package/dist/cjs/operation-node/references-node.d.ts +5 -3
  48. package/dist/cjs/operation-node/references-node.js +6 -0
  49. package/dist/cjs/operation-node/table-node.js +2 -2
  50. package/dist/cjs/parser/data-type-parser.d.ts +5 -0
  51. package/dist/cjs/parser/data-type-parser.js +11 -0
  52. package/dist/cjs/parser/default-value-parser.d.ts +6 -0
  53. package/dist/cjs/parser/default-value-parser.js +11 -0
  54. package/dist/cjs/parser/filter-parser.d.ts +2 -2
  55. package/dist/cjs/parser/filter-parser.js +34 -36
  56. package/dist/cjs/parser/join-parser.d.ts +1 -1
  57. package/dist/cjs/parser/join-parser.js +9 -11
  58. package/dist/cjs/parser/parse-context.d.ts +34 -7
  59. package/dist/cjs/parser/parse-context.js +42 -34
  60. package/dist/cjs/parser/reference-parser.d.ts +2 -2
  61. package/dist/cjs/parser/reference-parser.js +16 -12
  62. package/dist/cjs/parser/select-parser.d.ts +1 -2
  63. package/dist/cjs/parser/select-parser.js +4 -5
  64. package/dist/cjs/parser/table-parser.js +11 -6
  65. package/dist/cjs/parser/update-set-parser.js +1 -1
  66. package/dist/cjs/parser/value-parser.js +1 -1
  67. package/dist/cjs/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +7 -7
  68. package/dist/cjs/query-builder/{sub-query-builder.js → expression-builder.js} +6 -10
  69. package/dist/cjs/query-builder/join-builder.d.ts +2 -2
  70. package/dist/cjs/query-builder/join-builder.js +8 -12
  71. package/dist/cjs/query-builder/query-builder.d.ts +47 -8
  72. package/dist/cjs/query-builder/query-builder.js +163 -91
  73. package/dist/cjs/query-builder/type-utils.d.ts +5 -5
  74. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -1
  75. package/dist/cjs/query-compiler/default-query-compiler.js +26 -6
  76. package/dist/cjs/query-creator.d.ts +2 -2
  77. package/dist/cjs/query-creator.js +8 -12
  78. package/dist/cjs/schema/alter-table-builder.d.ts +31 -8
  79. package/dist/cjs/schema/alter-table-builder.js +80 -7
  80. package/dist/cjs/schema/column-definition-builder.d.ts +10 -4
  81. package/dist/cjs/schema/column-definition-builder.js +11 -6
  82. package/dist/cjs/schema/create-index-builder.d.ts +5 -5
  83. package/dist/cjs/schema/create-index-builder.js +19 -28
  84. package/dist/cjs/schema/create-schema-builder.d.ts +5 -5
  85. package/dist/cjs/schema/create-schema-builder.js +9 -13
  86. package/dist/cjs/schema/create-table-builder.d.ts +22 -10
  87. package/dist/cjs/schema/create-table-builder.js +41 -34
  88. package/dist/cjs/schema/drop-index-builder.d.ts +5 -5
  89. package/dist/cjs/schema/drop-index-builder.js +11 -16
  90. package/dist/cjs/schema/drop-schema-builder.d.ts +5 -5
  91. package/dist/cjs/schema/drop-schema-builder.js +9 -13
  92. package/dist/cjs/schema/drop-table-builder.d.ts +5 -5
  93. package/dist/cjs/schema/drop-table-builder.js +9 -13
  94. package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +14 -0
  95. package/dist/cjs/schema/foreign-key-constraint-builder.js +26 -0
  96. package/dist/cjs/transformers/with-schema-transformer.d.ts +0 -5
  97. package/dist/cjs/transformers/with-schema-transformer.js +21 -21
  98. package/dist/esm/dialect/dialect-adapter.d.ts +11 -9
  99. package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -1
  100. package/dist/esm/dialect/mysql/mysql-driver.js +1 -0
  101. package/dist/esm/dialect/mysql/mysql-introspector.d.ts +0 -1
  102. package/dist/esm/dialect/mysql/mysql-introspector.js +2 -2
  103. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -4
  104. package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -18
  105. package/dist/esm/dialect/postgres/postgres-introspector.d.ts +0 -1
  106. package/dist/esm/dialect/postgres/postgres-introspector.js +2 -2
  107. package/dist/esm/driver/database-connection.d.ts +2 -1
  108. package/dist/esm/driver/driver.d.ts +1 -1
  109. package/dist/esm/driver/single-connection-provider.d.ts +0 -1
  110. package/dist/esm/driver/single-connection-provider.js +2 -2
  111. package/dist/esm/index.d.ts +2 -1
  112. package/dist/esm/index.js +2 -1
  113. package/dist/esm/kysely.d.ts +7 -6
  114. package/dist/esm/kysely.js +8 -6
  115. package/dist/esm/migration/migration.js +12 -11
  116. package/dist/esm/operation-node/alter-column-node.d.ts +2 -2
  117. package/dist/esm/operation-node/alter-column-node.js +2 -2
  118. package/dist/esm/operation-node/alter-table-node.d.ts +2 -2
  119. package/dist/esm/operation-node/alter-table-node.js +2 -2
  120. package/dist/esm/operation-node/column-definition-node.d.ts +2 -2
  121. package/dist/esm/operation-node/column-definition-node.js +2 -2
  122. package/dist/esm/operation-node/create-index-node.d.ts +2 -2
  123. package/dist/esm/operation-node/create-index-node.js +2 -2
  124. package/dist/esm/operation-node/create-table-node.d.ts +2 -1
  125. package/dist/esm/operation-node/create-table-node.js +1 -5
  126. package/dist/esm/operation-node/drop-index-node.d.ts +3 -3
  127. package/dist/esm/operation-node/drop-index-node.js +2 -2
  128. package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +12 -1
  129. package/dist/esm/operation-node/foreign-key-constraint-node.js +6 -0
  130. package/dist/esm/operation-node/insert-query-node.d.ts +5 -2
  131. package/dist/esm/operation-node/insert-query-node.js +2 -9
  132. package/dist/esm/operation-node/join-node.d.ts +1 -0
  133. package/dist/esm/operation-node/join-node.js +8 -0
  134. package/dist/esm/operation-node/on-conflict-node.d.ts +2 -2
  135. package/dist/esm/operation-node/on-conflict-node.js +2 -2
  136. package/dist/esm/operation-node/on-duplicate-key-node.d.ts +14 -0
  137. package/dist/esm/operation-node/on-duplicate-key-node.js +15 -0
  138. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  139. package/dist/esm/operation-node/operation-node-transformer.js +12 -0
  140. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  141. package/dist/esm/operation-node/operation-node-visitor.js +4 -0
  142. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  143. package/dist/esm/operation-node/references-node.d.ts +5 -3
  144. package/dist/esm/operation-node/references-node.js +6 -0
  145. package/dist/esm/operation-node/table-node.js +2 -2
  146. package/dist/esm/parser/data-type-parser.d.ts +5 -0
  147. package/dist/esm/parser/data-type-parser.js +7 -0
  148. package/dist/esm/parser/default-value-parser.d.ts +6 -0
  149. package/dist/esm/parser/default-value-parser.js +7 -0
  150. package/dist/esm/parser/filter-parser.d.ts +2 -2
  151. package/dist/esm/parser/filter-parser.js +31 -33
  152. package/dist/esm/parser/join-parser.d.ts +1 -1
  153. package/dist/esm/parser/join-parser.js +7 -9
  154. package/dist/esm/parser/parse-context.d.ts +34 -7
  155. package/dist/esm/parser/parse-context.js +40 -32
  156. package/dist/esm/parser/reference-parser.d.ts +2 -2
  157. package/dist/esm/parser/reference-parser.js +16 -12
  158. package/dist/esm/parser/select-parser.d.ts +1 -2
  159. package/dist/esm/parser/select-parser.js +3 -3
  160. package/dist/esm/parser/table-parser.js +11 -6
  161. package/dist/esm/parser/update-set-parser.js +1 -1
  162. package/dist/esm/parser/value-parser.js +1 -1
  163. package/dist/esm/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +7 -7
  164. package/dist/esm/query-builder/{sub-query-builder.js → expression-builder.js} +4 -8
  165. package/dist/esm/query-builder/join-builder.d.ts +2 -2
  166. package/dist/esm/query-builder/join-builder.js +9 -13
  167. package/dist/esm/query-builder/query-builder.d.ts +47 -8
  168. package/dist/esm/query-builder/query-builder.js +165 -93
  169. package/dist/esm/query-builder/type-utils.d.ts +5 -5
  170. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -1
  171. package/dist/esm/query-compiler/default-query-compiler.js +27 -7
  172. package/dist/esm/query-creator.d.ts +2 -2
  173. package/dist/esm/query-creator.js +8 -12
  174. package/dist/esm/schema/alter-table-builder.d.ts +31 -8
  175. package/dist/esm/schema/alter-table-builder.js +78 -6
  176. package/dist/esm/schema/column-definition-builder.d.ts +10 -4
  177. package/dist/esm/schema/column-definition-builder.js +12 -7
  178. package/dist/esm/schema/create-index-builder.d.ts +5 -5
  179. package/dist/esm/schema/create-index-builder.js +19 -28
  180. package/dist/esm/schema/create-schema-builder.d.ts +5 -5
  181. package/dist/esm/schema/create-schema-builder.js +9 -13
  182. package/dist/esm/schema/create-table-builder.d.ts +22 -10
  183. package/dist/esm/schema/create-table-builder.js +41 -34
  184. package/dist/esm/schema/drop-index-builder.d.ts +5 -5
  185. package/dist/esm/schema/drop-index-builder.js +11 -16
  186. package/dist/esm/schema/drop-schema-builder.d.ts +5 -5
  187. package/dist/esm/schema/drop-schema-builder.js +9 -13
  188. package/dist/esm/schema/drop-table-builder.d.ts +5 -5
  189. package/dist/esm/schema/drop-table-builder.js +9 -13
  190. package/dist/esm/schema/foreign-key-constraint-builder.d.ts +14 -0
  191. package/dist/esm/schema/foreign-key-constraint-builder.js +22 -0
  192. package/dist/esm/transformers/with-schema-transformer.d.ts +0 -5
  193. package/dist/esm/transformers/with-schema-transformer.js +21 -21
  194. package/package.json +1 -1
@@ -18,9 +18,9 @@ const prevent_await_js_1 = require("../util/prevent-await.js");
18
18
  const limit_node_js_1 = require("../operation-node/limit-node.js");
19
19
  const offset_node_js_1 = require("../operation-node/offset-node.js");
20
20
  const on_conflict_parser_js_1 = require("../parser/on-conflict-parser.js");
21
- const index_js_1 = require("../index.js");
22
21
  const object_utils_js_1 = require("../util/object-utils.js");
23
- const parse_context_js_1 = require("../parser/parse-context.js");
22
+ const delete_query_node_js_1 = require("../operation-node/delete-query-node.js");
23
+ const on_duplicate_key_node_js_1 = require("../operation-node/on-duplicate-key-node.js");
24
24
  /**
25
25
  * The main query builder class.
26
26
  *
@@ -42,10 +42,10 @@ class QueryBuilder {
42
42
  this.#props = (0, object_utils_js_1.freeze)(props);
43
43
  }
44
44
  where(...args) {
45
- ensureCanHaveWhereClause(this.#props.queryNode);
45
+ assertCanHaveWhereClause(this.#props.queryNode);
46
46
  return new QueryBuilder({
47
47
  ...this.#props,
48
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseWhereFilter)(this.#parseContext, args)),
48
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
49
49
  });
50
50
  }
51
51
  /**
@@ -100,17 +100,17 @@ class QueryBuilder {
100
100
  * from "person"
101
101
  */
102
102
  whereRef(lhs, op, rhs) {
103
- ensureCanHaveWhereClause(this.#props.queryNode);
103
+ assertCanHaveWhereClause(this.#props.queryNode);
104
104
  return new QueryBuilder({
105
105
  ...this.#props,
106
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseReferenceFilter)(this.#parseContext, lhs, op, rhs)),
106
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
107
107
  });
108
108
  }
109
109
  orWhere(...args) {
110
- ensureCanHaveWhereClause(this.#props.queryNode);
110
+ assertCanHaveWhereClause(this.#props.queryNode);
111
111
  return new QueryBuilder({
112
112
  ...this.#props,
113
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseWhereFilter)(this.#parseContext, args)),
113
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseWhereFilter)(this.#props.parseContext, args)),
114
114
  });
115
115
  }
116
116
  /**
@@ -120,10 +120,10 @@ class QueryBuilder {
120
120
  * Also see {@link QueryBuilder.orWhere | orWhere} and {@link QueryBuilder.where | where}.
121
121
  */
122
122
  orWhereRef(lhs, op, rhs) {
123
- ensureCanHaveWhereClause(this.#props.queryNode);
123
+ assertCanHaveWhereClause(this.#props.queryNode);
124
124
  return new QueryBuilder({
125
125
  ...this.#props,
126
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseReferenceFilter)(this.#parseContext, lhs, op, rhs)),
126
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
127
127
  });
128
128
  }
129
129
  /**
@@ -186,47 +186,47 @@ class QueryBuilder {
186
186
  * ```
187
187
  */
188
188
  whereExists(arg) {
189
- ensureCanHaveWhereClause(this.#props.queryNode);
189
+ assertCanHaveWhereClause(this.#props.queryNode);
190
190
  return new QueryBuilder({
191
191
  ...this.#props,
192
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseExistExpression)(this.#parseContext, arg)),
192
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
193
193
  });
194
194
  }
195
195
  /**
196
196
  * Just like {@link QueryBuilder.whereExists | whereExists} but creates a `not exists` clause.
197
197
  */
198
198
  whereNotExists(arg) {
199
- ensureCanHaveWhereClause(this.#props.queryNode);
199
+ assertCanHaveWhereClause(this.#props.queryNode);
200
200
  return new QueryBuilder({
201
201
  ...this.#props,
202
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseNotExistExpression)(this.#parseContext, arg)),
202
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
203
203
  });
204
204
  }
205
205
  /**
206
206
  * Just like {@link QueryBuilder.whereExists | whereExists} but creates a `or exists` clause.
207
207
  */
208
208
  orWhereExists(arg) {
209
- ensureCanHaveWhereClause(this.#props.queryNode);
209
+ assertCanHaveWhereClause(this.#props.queryNode);
210
210
  return new QueryBuilder({
211
211
  ...this.#props,
212
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseExistExpression)(this.#parseContext, arg)),
212
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
213
213
  });
214
214
  }
215
215
  /**
216
216
  * Just like {@link QueryBuilder.whereExists | whereExists} but creates a `or not exists` clause.
217
217
  */
218
218
  orWhereNotExists(arg) {
219
- ensureCanHaveWhereClause(this.#props.queryNode);
219
+ assertCanHaveWhereClause(this.#props.queryNode);
220
220
  return new QueryBuilder({
221
221
  ...this.#props,
222
- queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseNotExistExpression)(this.#parseContext, arg)),
222
+ queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
223
223
  });
224
224
  }
225
225
  having(...args) {
226
- ensureCanHaveHavingClause(this.#props.queryNode);
226
+ assertCanHaveHavingClause(this.#props.queryNode);
227
227
  return new QueryBuilder({
228
228
  ...this.#props,
229
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseHavingFilter)(this.#parseContext, args)),
229
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseHavingFilter)(this.#props.parseContext, args)),
230
230
  });
231
231
  }
232
232
  /**
@@ -234,17 +234,17 @@ class QueryBuilder {
234
234
  * instead of a `where` statement.
235
235
  */
236
236
  havingRef(lhs, op, rhs) {
237
- ensureCanHaveHavingClause(this.#props.queryNode);
237
+ assertCanHaveHavingClause(this.#props.queryNode);
238
238
  return new QueryBuilder({
239
239
  ...this.#props,
240
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseReferenceFilter)(this.#parseContext, lhs, op, rhs)),
240
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
241
241
  });
242
242
  }
243
243
  orHaving(...args) {
244
- ensureCanHaveHavingClause(this.#props.queryNode);
244
+ assertCanHaveHavingClause(this.#props.queryNode);
245
245
  return new QueryBuilder({
246
246
  ...this.#props,
247
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseHavingFilter)(this.#parseContext, args)),
247
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseHavingFilter)(this.#props.parseContext, args)),
248
248
  });
249
249
  }
250
250
  /**
@@ -252,10 +252,10 @@ class QueryBuilder {
252
252
  * instead of a `where` statement.
253
253
  */
254
254
  orHavingRef(lhs, op, rhs) {
255
- ensureCanHaveHavingClause(this.#props.queryNode);
255
+ assertCanHaveHavingClause(this.#props.queryNode);
256
256
  return new QueryBuilder({
257
257
  ...this.#props,
258
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseReferenceFilter)(this.#parseContext, lhs, op, rhs)),
258
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseReferenceFilter)(this.#props.parseContext, lhs, op, rhs)),
259
259
  });
260
260
  }
261
261
  /**
@@ -263,10 +263,10 @@ class QueryBuilder {
263
263
  * instead of a `where` statement.
264
264
  */
265
265
  havingExists(arg) {
266
- ensureCanHaveHavingClause(this.#props.queryNode);
266
+ assertCanHaveHavingClause(this.#props.queryNode);
267
267
  return new QueryBuilder({
268
268
  ...this.#props,
269
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseExistExpression)(this.#parseContext, arg)),
269
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
270
270
  });
271
271
  }
272
272
  /**
@@ -274,10 +274,10 @@ class QueryBuilder {
274
274
  * instead of a `where` statement.
275
275
  */
276
276
  havingNotExist(arg) {
277
- ensureCanHaveHavingClause(this.#props.queryNode);
277
+ assertCanHaveHavingClause(this.#props.queryNode);
278
278
  return new QueryBuilder({
279
279
  ...this.#props,
280
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseNotExistExpression)(this.#parseContext, arg)),
280
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'And', (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
281
281
  });
282
282
  }
283
283
  /**
@@ -285,10 +285,10 @@ class QueryBuilder {
285
285
  * instead of a `where` statement.
286
286
  */
287
287
  orHavingExists(arg) {
288
- ensureCanHaveHavingClause(this.#props.queryNode);
288
+ assertCanHaveHavingClause(this.#props.queryNode);
289
289
  return new QueryBuilder({
290
290
  ...this.#props,
291
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseExistExpression)(this.#parseContext, arg)),
291
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseExistFilter)(this.#props.parseContext, arg)),
292
292
  });
293
293
  }
294
294
  /**
@@ -296,24 +296,24 @@ class QueryBuilder {
296
296
  * instead of a `where` statement.
297
297
  */
298
298
  orHavingNotExists(arg) {
299
- ensureCanHaveHavingClause(this.#props.queryNode);
299
+ assertCanHaveHavingClause(this.#props.queryNode);
300
300
  return new QueryBuilder({
301
301
  ...this.#props,
302
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseNotExistExpression)(this.#parseContext, arg)),
302
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, 'Or', (0, filter_parser_js_1.parseNotExistFilter)(this.#props.parseContext, arg)),
303
303
  });
304
304
  }
305
305
  select(selection) {
306
- ensureCanHaveSelectClause(this.#props.queryNode);
306
+ assertCanHaveSelectClause(this.#props.queryNode);
307
307
  return new QueryBuilder({
308
308
  ...this.#props,
309
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSelections(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(this.#parseContext, selection)),
309
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSelections(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(this.#props.parseContext, selection)),
310
310
  });
311
311
  }
312
312
  distinctOn(selection) {
313
- ensureCanHaveSelectClause(this.#props.queryNode);
313
+ assertCanHaveSelectClause(this.#props.queryNode);
314
314
  return new QueryBuilder({
315
315
  ...this.#props,
316
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithDistinctOnSelections(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(this.#parseContext, selection)),
316
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithDistinctOnSelections(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(this.#props.parseContext, selection)),
317
317
  });
318
318
  }
319
319
  /**
@@ -334,7 +334,7 @@ class QueryBuilder {
334
334
  * ```
335
335
  */
336
336
  distinct() {
337
- ensureCanHaveSelectClause(this.#props.queryNode);
337
+ assertCanHaveSelectClause(this.#props.queryNode);
338
338
  return new QueryBuilder({
339
339
  ...this.#props,
340
340
  queryNode: select_query_node_js_1.SelectQueryNode.cloneWithDistinct(this.#props.queryNode),
@@ -344,7 +344,7 @@ class QueryBuilder {
344
344
  * Adds the `for update` option to a select query on supported databases.
345
345
  */
346
346
  forUpdate() {
347
- ensureCanHaveSelectClause(this.#props.queryNode);
347
+ assertCanHaveSelectClause(this.#props.queryNode);
348
348
  return new QueryBuilder({
349
349
  ...this.#props,
350
350
  queryNode: select_query_node_js_1.SelectQueryNode.cloneWithModifier(this.#props.queryNode, 'ForUpdate'),
@@ -354,7 +354,7 @@ class QueryBuilder {
354
354
  * Adds the `for share` option to a select query on supported databases.
355
355
  */
356
356
  forShare() {
357
- ensureCanHaveSelectClause(this.#props.queryNode);
357
+ assertCanHaveSelectClause(this.#props.queryNode);
358
358
  return new QueryBuilder({
359
359
  ...this.#props,
360
360
  queryNode: select_query_node_js_1.SelectQueryNode.cloneWithModifier(this.#props.queryNode, 'ForShare'),
@@ -364,7 +364,7 @@ class QueryBuilder {
364
364
  * Adds the `for key share` option to a select query on supported databases.
365
365
  */
366
366
  forKeyShare() {
367
- ensureCanHaveSelectClause(this.#props.queryNode);
367
+ assertCanHaveSelectClause(this.#props.queryNode);
368
368
  return new QueryBuilder({
369
369
  ...this.#props,
370
370
  queryNode: select_query_node_js_1.SelectQueryNode.cloneWithModifier(this.#props.queryNode, 'ForKeyShare'),
@@ -374,7 +374,7 @@ class QueryBuilder {
374
374
  * Adds the `for no key update` option to a select query on supported databases.
375
375
  */
376
376
  forNoKeyUpdate() {
377
- ensureCanHaveSelectClause(this.#props.queryNode);
377
+ assertCanHaveSelectClause(this.#props.queryNode);
378
378
  return new QueryBuilder({
379
379
  ...this.#props,
380
380
  queryNode: select_query_node_js_1.SelectQueryNode.cloneWithModifier(this.#props.queryNode, 'ForNoKeyUpdate'),
@@ -384,7 +384,7 @@ class QueryBuilder {
384
384
  * Adds the `skip locked` option to a select query on supported databases.
385
385
  */
386
386
  skipLocked() {
387
- ensureCanHaveSelectClause(this.#props.queryNode);
387
+ assertCanHaveSelectClause(this.#props.queryNode);
388
388
  return new QueryBuilder({
389
389
  ...this.#props,
390
390
  queryNode: select_query_node_js_1.SelectQueryNode.cloneWithModifier(this.#props.queryNode, 'SkipLocked'),
@@ -394,66 +394,129 @@ class QueryBuilder {
394
394
  * Adds the `nowait` option to a select query on supported databases.
395
395
  */
396
396
  noWait() {
397
- ensureCanHaveSelectClause(this.#props.queryNode);
397
+ assertCanHaveSelectClause(this.#props.queryNode);
398
398
  return new QueryBuilder({
399
399
  ...this.#props,
400
400
  queryNode: select_query_node_js_1.SelectQueryNode.cloneWithModifier(this.#props.queryNode, 'NoWait'),
401
401
  });
402
402
  }
403
403
  selectAll(table) {
404
- ensureCanHaveSelectClause(this.#props.queryNode);
404
+ assertCanHaveSelectClause(this.#props.queryNode);
405
405
  return new QueryBuilder({
406
406
  ...this.#props,
407
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSelections(this.#props.queryNode, (0, select_parser_js_1.parseSelectAllArgs)(table)),
407
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSelections(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)(table)),
408
408
  });
409
409
  }
410
410
  innerJoin(...args) {
411
- ensureCanHaveJoins(this.#props.queryNode);
411
+ assertCanHaveJoins(this.#props.queryNode);
412
412
  return new QueryBuilder({
413
413
  ...this.#props,
414
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoinArgs)(this.#parseContext, 'InnerJoin', args)),
414
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'InnerJoin', args)),
415
415
  });
416
416
  }
417
417
  leftJoin(...args) {
418
- ensureCanHaveJoins(this.#props.queryNode);
418
+ assertCanHaveJoins(this.#props.queryNode);
419
419
  return new QueryBuilder({
420
420
  ...this.#props,
421
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoinArgs)(this.#parseContext, 'LeftJoin', args)),
421
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'LeftJoin', args)),
422
422
  });
423
423
  }
424
424
  rightJoin(...args) {
425
- ensureCanHaveJoins(this.#props.queryNode);
425
+ assertCanHaveJoins(this.#props.queryNode);
426
426
  return new QueryBuilder({
427
427
  ...this.#props,
428
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoinArgs)(this.#parseContext, 'RightJoin', args)),
428
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'RightJoin', args)),
429
429
  });
430
430
  }
431
431
  fullJoin(...args) {
432
- ensureCanHaveJoins(this.#props.queryNode);
432
+ assertCanHaveJoins(this.#props.queryNode);
433
433
  return new QueryBuilder({
434
434
  ...this.#props,
435
- queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoinArgs)(this.#parseContext, 'FullJoin', args)),
435
+ queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)(this.#props.parseContext, 'FullJoin', args)),
436
436
  });
437
437
  }
438
438
  values(args) {
439
- ensureCanHaveInsertValues(this.#props.queryNode);
439
+ assertCanHaveInsertValues(this.#props.queryNode);
440
+ const [columns, values] = (0, insert_values_parser_js_1.parseInsertObjectOrList)(args);
440
441
  return new QueryBuilder({
441
442
  ...this.#props,
442
- queryNode: insert_query_node_js_1.InsertQueryNode.cloneWithColumnsAndValues(this.#props.queryNode, ...(0, insert_values_parser_js_1.parseInsertObjectOrList)(args)),
443
+ queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
444
+ columns,
445
+ values,
446
+ }),
443
447
  });
444
448
  }
445
449
  onConflictDoNothing(target) {
446
- ensureCanHaveOnConflict(this.#props.queryNode);
450
+ assertCanHaveOnConflict(this.#props.queryNode);
447
451
  return new QueryBuilder({
448
452
  ...this.#props,
449
- queryNode: insert_query_node_js_1.InsertQueryNode.cloneWithOnConflict(this.#props.queryNode, (0, on_conflict_parser_js_1.parseOnConflictDoNothing)(target)),
453
+ queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
454
+ onConflict: (0, on_conflict_parser_js_1.parseOnConflictDoNothing)(target),
455
+ }),
456
+ });
457
+ }
458
+ /**
459
+ * Changes an `insert into` query to an `insert ignore into` query.
460
+ *
461
+ * If you use the ignore modifier, ignorable errors that occur while executing the
462
+ * insert statement are ignored. For example, without ignore, a row that duplicates
463
+ * an existing unique index or primary key value in the table causes a duplicate-key
464
+ * error and the statement is aborted. With ignore, the row is discarded and no error
465
+ * occurs.
466
+ *
467
+ * This is only supported on some dialects like MySQL. On most dialects you should
468
+ * use the {@link onConflictDoNothing} method.
469
+ *
470
+ * @example
471
+ * ```ts
472
+ * await db.insertInto('person')
473
+ * .ignore()
474
+ * .values(values)
475
+ * .execute()
476
+ * ```
477
+ */
478
+ ignore() {
479
+ assertCanHaveInsertIgnore(this.#props.queryNode);
480
+ return new QueryBuilder({
481
+ ...this.#props,
482
+ queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
483
+ ignore: true,
484
+ }),
450
485
  });
451
486
  }
452
487
  onConflictUpdate(target, updates) {
453
- ensureCanHaveOnConflict(this.#props.queryNode);
488
+ assertCanHaveOnConflict(this.#props.queryNode);
454
489
  return new QueryBuilder({
455
490
  ...this.#props,
456
- queryNode: insert_query_node_js_1.InsertQueryNode.cloneWithOnConflict(this.#props.queryNode, (0, on_conflict_parser_js_1.parseOnConflictUpdate)(this.#parseContext, target, updates)),
491
+ queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
492
+ onConflict: (0, on_conflict_parser_js_1.parseOnConflictUpdate)(this.#props.parseContext, target, updates),
493
+ }),
494
+ });
495
+ }
496
+ /**
497
+ * Adds `on duplicate key update` to an insert query.
498
+ *
499
+ * If you specify `on duplicate key update`, and a row is inserted that would cause
500
+ * a duplicate value in a unique index or primary key, an update of the old row occurs.
501
+ *
502
+ * This is only implemented by some dialects like MySQL. On most dialects you should
503
+ * use {@link onConflictUpdate} instead.
504
+ *
505
+ * @example
506
+ * ```ts
507
+ * await db
508
+ * .insertInto('person')
509
+ * .values(values)
510
+ * .onDuplicateKeyUpdate({ species: 'hamster' })
511
+ * ```
512
+ */
513
+ onDuplicateKeyUpdate(updates) {
514
+ assertCanHaveOnDuplicateKey(this.#props.queryNode);
515
+ return new QueryBuilder({
516
+ ...this.#props,
517
+ queryNode: insert_query_node_js_1.InsertQueryNode.cloneWith(this.#props.queryNode, {
518
+ onDuplicateKey: on_duplicate_key_node_js_1.OnDuplicateKeyNode.create((0, update_set_parser_js_1.parseUpdateObject)(this.#props.parseContext, updates)),
519
+ }),
457
520
  });
458
521
  }
459
522
  /**
@@ -539,17 +602,17 @@ class QueryBuilder {
539
602
  * ```
540
603
  */
541
604
  set(row) {
542
- ensureCanHaveUpdates(this.#props.queryNode);
605
+ assertCanHaveUpdates(this.#props.queryNode);
543
606
  return new QueryBuilder({
544
607
  ...this.#props,
545
- queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, (0, update_set_parser_js_1.parseUpdateObject)(this.#parseContext, row)),
608
+ queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithUpdates(this.#props.queryNode, (0, update_set_parser_js_1.parseUpdateObject)(this.#props.parseContext, row)),
546
609
  });
547
610
  }
548
611
  returning(selection) {
549
- ensureCanHaveReturningClause(this.#props.queryNode);
612
+ assertCanHaveReturningClause(this.#props.queryNode);
550
613
  return new QueryBuilder({
551
614
  ...this.#props,
552
- queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(this.#parseContext, selection)),
615
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectExpressionOrList)(this.#props.parseContext, selection)),
553
616
  });
554
617
  }
555
618
  /**
@@ -557,10 +620,10 @@ class QueryBuilder {
557
620
  * that support `returning` such as postgres.
558
621
  */
559
622
  returningAll() {
560
- ensureCanHaveReturningClause(this.#props.queryNode);
623
+ assertCanHaveReturningClause(this.#props.queryNode);
561
624
  return new QueryBuilder({
562
625
  ...this.#props,
563
- queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAllArgs)()),
626
+ queryNode: query_node_js_1.QueryNode.cloneWithReturning(this.#props.queryNode, (0, select_parser_js_1.parseSelectAll)()),
564
627
  });
565
628
  }
566
629
  /**
@@ -650,17 +713,17 @@ class QueryBuilder {
650
713
  * ```
651
714
  */
652
715
  orderBy(orderBy, direction = 'asc') {
653
- ensureCanHaveOrderByClause(this.#props.queryNode);
716
+ assertCanHaveOrderByClause(this.#props.queryNode);
654
717
  return new QueryBuilder({
655
718
  ...this.#props,
656
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrderByItem(this.#props.queryNode, order_by_item_node_js_1.OrderByItemNode.create((0, reference_parser_js_1.parseReferenceExpression)(this.#parseContext, orderBy), direction)),
719
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrderByItem(this.#props.queryNode, order_by_item_node_js_1.OrderByItemNode.create((0, reference_parser_js_1.parseReferenceExpression)(this.#props.parseContext, orderBy), direction)),
657
720
  });
658
721
  }
659
722
  groupBy(orderBy) {
660
- ensureCanHaveGroupByClause(this.#props.queryNode);
723
+ assertCanHaveGroupByClause(this.#props.queryNode);
661
724
  return new QueryBuilder({
662
725
  ...this.#props,
663
- queryNode: select_query_node_js_1.SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, (0, reference_parser_js_1.parseReferenceExpressionOrList)(this.#parseContext, orderBy).map(group_by_item_node_js_1.GroupByItemNode.create)),
726
+ queryNode: select_query_node_js_1.SelectQueryNode.cloneWithGroupByItems(this.#props.queryNode, (0, reference_parser_js_1.parseReferenceExpressionOrList)(this.#props.parseContext, orderBy).map(group_by_item_node_js_1.GroupByItemNode.create)),
664
727
  });
665
728
  }
666
729
  /**
@@ -688,7 +751,7 @@ class QueryBuilder {
688
751
  * ```
689
752
  */
690
753
  limit(limit) {
691
- ensureCanHaveLimit(this.#props.queryNode);
754
+ assertCanHaveLimit(this.#props.queryNode);
692
755
  return new QueryBuilder({
693
756
  ...this.#props,
694
757
  queryNode: select_query_node_js_1.SelectQueryNode.cloneWithLimit(this.#props.queryNode, limit_node_js_1.LimitNode.create(limit)),
@@ -709,7 +772,7 @@ class QueryBuilder {
709
772
  * ```
710
773
  */
711
774
  offset(offset) {
712
- ensureCanHaveOffset(this.#props.queryNode);
775
+ assertCanHaveOffset(this.#props.queryNode);
713
776
  return new QueryBuilder({
714
777
  ...this.#props,
715
778
  queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOffset(this.#props.queryNode, offset_node_js_1.OffsetNode.create(offset)),
@@ -759,7 +822,8 @@ class QueryBuilder {
759
822
  const compildQuery = this.#props.executor.compileQuery(node, this.#props.queryId);
760
823
  const result = await this.#props.executor.executeQuery(compildQuery, this.#props.queryId);
761
824
  if (insert_query_node_js_1.InsertQueryNode.is(node)) {
762
- if (this.#props.adapter.supportsReturning && node.returning) {
825
+ if (this.#props.parseContext.adapter.supportsReturning &&
826
+ node.returning) {
763
827
  return result.rows;
764
828
  }
765
829
  else if (result.insertedPrimaryKey != null) {
@@ -769,8 +833,9 @@ class QueryBuilder {
769
833
  return [];
770
834
  }
771
835
  }
772
- else if (update_query_node_js_1.UpdateQueryNode.is(node) || index_js_1.DeleteQueryNode.is(node)) {
773
- if (this.#props.adapter.supportsReturning && node.returning) {
836
+ else if (update_query_node_js_1.UpdateQueryNode.is(node) || delete_query_node_js_1.DeleteQueryNode.is(node)) {
837
+ if (this.#props.parseContext.adapter.supportsReturning &&
838
+ node.returning) {
774
839
  return result.rows;
775
840
  }
776
841
  else if (result.numUpdatedOrDeletedRows != null) {
@@ -807,9 +872,6 @@ class QueryBuilder {
807
872
  }
808
873
  return result;
809
874
  }
810
- get #parseContext() {
811
- return (0, parse_context_js_1.createParseContext)(this.#props.adapter);
812
- }
813
875
  }
814
876
  exports.QueryBuilder = QueryBuilder;
815
877
  (0, prevent_await_js_1.preventAwait)(QueryBuilder, "don't await QueryBuilder instances directly. To execute the query you need to call `execute` or `executeTakeFirst`.");
@@ -854,62 +916,72 @@ class NoResultError extends Error {
854
916
  }
855
917
  }
856
918
  exports.NoResultError = NoResultError;
857
- function ensureCanHaveWhereClause(node) {
919
+ function assertCanHaveWhereClause(node) {
858
920
  if (!query_node_js_1.QueryNode.isFilterable(node)) {
859
921
  throw new Error('only select, delete and update queries can have a where clause');
860
922
  }
861
923
  }
862
- function ensureCanHaveHavingClause(node) {
924
+ function assertCanHaveHavingClause(node) {
863
925
  if (!select_query_node_js_1.SelectQueryNode.is(node)) {
864
926
  throw new Error('only select queries can have a having clause');
865
927
  }
866
928
  }
867
- function ensureCanHaveSelectClause(node) {
929
+ function assertCanHaveSelectClause(node) {
868
930
  if (!select_query_node_js_1.SelectQueryNode.is(node)) {
869
931
  throw new Error('only a select query can have selections');
870
932
  }
871
933
  }
872
- function ensureCanHaveJoins(node) {
934
+ function assertCanHaveJoins(node) {
873
935
  if (!query_node_js_1.QueryNode.isFilterable(node)) {
874
936
  throw new Error('only select, delete and update queries can have joins');
875
937
  }
876
938
  }
877
- function ensureCanHaveInsertValues(node) {
939
+ function assertCanHaveInsertValues(node) {
878
940
  if (!insert_query_node_js_1.InsertQueryNode.is(node)) {
879
941
  throw new Error('only an insert query can have insert values');
880
942
  }
881
943
  }
882
- function ensureCanHaveOnConflict(node) {
944
+ function assertCanHaveInsertIgnore(node) {
945
+ if (!insert_query_node_js_1.InsertQueryNode.is(node)) {
946
+ throw new Error('only an insert query can have the ignore clause');
947
+ }
948
+ }
949
+ function assertCanHaveOnConflict(node) {
883
950
  if (!insert_query_node_js_1.InsertQueryNode.is(node)) {
884
951
  throw new Error('only an insert query can have an on conflict clause');
885
952
  }
886
953
  }
887
- function ensureCanHaveUpdates(node) {
954
+ function assertCanHaveOnDuplicateKey(node) {
955
+ if (!insert_query_node_js_1.InsertQueryNode.is(node)) {
956
+ throw new Error('only an insert query can have an on duplicate key clause');
957
+ }
958
+ }
959
+ function assertCanHaveUpdates(node) {
888
960
  if (!update_query_node_js_1.UpdateQueryNode.is(node)) {
889
961
  throw new Error('only an update query can set values');
890
962
  }
891
963
  }
892
- function ensureCanHaveReturningClause(node) {
964
+ function assertCanHaveReturningClause(node) {
893
965
  if (!query_node_js_1.QueryNode.isMutating(node)) {
894
966
  throw new Error('only an insert, delete and update queries can have a returning clause');
895
967
  }
896
968
  }
897
- function ensureCanHaveOrderByClause(node) {
969
+ function assertCanHaveOrderByClause(node) {
898
970
  if (!select_query_node_js_1.SelectQueryNode.is(node)) {
899
971
  throw new Error('only a select query can have an order by clause');
900
972
  }
901
973
  }
902
- function ensureCanHaveGroupByClause(node) {
974
+ function assertCanHaveGroupByClause(node) {
903
975
  if (!select_query_node_js_1.SelectQueryNode.is(node)) {
904
976
  throw new Error('only a select query can have a group by clause');
905
977
  }
906
978
  }
907
- function ensureCanHaveLimit(node) {
979
+ function assertCanHaveLimit(node) {
908
980
  if (!select_query_node_js_1.SelectQueryNode.is(node)) {
909
981
  throw new Error('only a select query can have a limit');
910
982
  }
911
983
  }
912
- function ensureCanHaveOffset(node) {
984
+ function assertCanHaveOffset(node) {
913
985
  if (!select_query_node_js_1.SelectQueryNode.is(node)) {
914
986
  throw new Error('only a select query can have an offset');
915
987
  }
@@ -1,6 +1,6 @@
1
1
  import { AliasedRawBuilder, RawBuilder } from '../raw-builder/raw-builder.js';
2
2
  import { AliasedQueryBuilder, QueryBuilder } from './query-builder.js';
3
- import { SubQueryBuilder } from './sub-query-builder.js';
3
+ import { ExpressionBuilder } from './expression-builder.js';
4
4
  export declare type ValueType<T> = T[keyof T];
5
5
  /**
6
6
  * Given a database type and a union of table names returns the row type
@@ -127,10 +127,10 @@ export declare type AnyQueryBuilder = QueryBuilder<any, any, any>;
127
127
  export declare type AnyAliasedQueryBuilder = AliasedQueryBuilder<any, any, any, any>;
128
128
  export declare type AnyRawBuilder = RawBuilder<any>;
129
129
  export declare type AnyAliasedRawBuilder = AliasedRawBuilder<any, any>;
130
- export declare type QueryBuilderFactory<DB, TB extends keyof DB> = (qb: SubQueryBuilder<DB, TB>) => QueryBuilder<any, any, any>;
131
- export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: SubQueryBuilder<DB, TB>) => AnyAliasedQueryBuilder;
132
- export declare type RawBuilderFactory<DB, TB extends keyof DB> = (qb: SubQueryBuilder<DB, TB>) => AnyRawBuilder;
133
- export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: SubQueryBuilder<DB, TB>) => AnyAliasedRawBuilder;
130
+ export declare type QueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => QueryBuilder<any, any, any>;
131
+ export declare type AliasedQueryBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedQueryBuilder;
132
+ export declare type RawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyRawBuilder;
133
+ export declare type AliasedRawBuilderFactory<DB, TB extends keyof DB> = (qb: ExpressionBuilder<DB, TB>) => AnyAliasedRawBuilder;
134
134
  export interface InsertResultTypeTag {
135
135
  /** @internal */
136
136
  __isInsertResultTypeTag__: true;
@@ -59,6 +59,7 @@ import { DropConstraintNode } from '../operation-node/drop-constraint-node.js';
59
59
  import { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';
60
60
  import { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';
61
61
  import { ModifyColumnNode } from '../operation-node/modify-column-node.js';
62
+ import { OnDuplicateKeyNode } from '../operation-node/on-duplicate-key-node.js';
62
63
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
63
64
  #private;
64
65
  protected get numBindings(): number;
@@ -71,7 +72,6 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
71
72
  protected visitWhere(node: WhereNode): void;
72
73
  protected visitHaving(node: HavingNode): void;
73
74
  protected visitInsertQuery(node: InsertQueryNode): void;
74
- protected getInsertInto(node: InsertQueryNode): string;
75
75
  protected visitDeleteQuery(node: DeleteQueryNode): void;
76
76
  protected visitReturning(node: ReturningNode): void;
77
77
  protected visitAlias(node: AliasNode): void;
@@ -104,6 +104,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
104
104
  protected visitLimit(node: LimitNode): void;
105
105
  protected visitOffset(node: OffsetNode): void;
106
106
  protected visitOnConflict(node: OnConflictNode): void;
107
+ protected visitOnDuplicateKey(node: OnDuplicateKeyNode): void;
107
108
  protected visitCreateIndex(node: CreateIndexNode): void;
108
109
  protected visitDropIndex(node: DropIndexNode): void;
109
110
  protected visitCreateSchema(node: CreateSchemaNode): void;