kysely 0.11.1 → 0.12.0

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 (216) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  3. package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -6
  4. package/dist/cjs/dialect/postgres/postgres-query-compiler.d.ts +3 -0
  5. package/dist/cjs/dialect/postgres/postgres-query-compiler.js +9 -1
  6. package/dist/cjs/dialect/sqlite/sqlite-adapter.js +6 -2
  7. package/dist/cjs/dialect/sqlite/sqlite-driver.js +7 -7
  8. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
  9. package/dist/cjs/dialect/sqlite/sqlite-query-compiler.js +6 -6
  10. package/dist/cjs/driver/runtime-driver.js +1 -1
  11. package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +1 -0
  12. package/dist/cjs/dynamic/dynamic-reference-builder.js +9 -1
  13. package/dist/cjs/dynamic/dynamic.d.ts +6 -7
  14. package/dist/cjs/dynamic/dynamic.js +6 -7
  15. package/dist/cjs/index.d.ts +51 -33
  16. package/dist/cjs/index.js +48 -30
  17. package/dist/cjs/kysely.d.ts +39 -15
  18. package/dist/cjs/kysely.js +32 -9
  19. package/dist/cjs/migration/migration.d.ts +2 -2
  20. package/dist/cjs/operation-node/alias-node.d.ts +1 -1
  21. package/dist/cjs/operation-node/create-table-node.d.ts +6 -2
  22. package/dist/cjs/operation-node/create-table-node.js +6 -6
  23. package/dist/cjs/operation-node/create-view-node.d.ts +1 -0
  24. package/dist/cjs/operation-node/insert-query-node.d.ts +4 -4
  25. package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
  26. package/dist/cjs/operation-node/operation-node-transformer.js +11 -1
  27. package/dist/cjs/operation-node/operation-node-utils.d.ts +1 -1
  28. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  29. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  30. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  31. package/dist/cjs/operation-node/query-node.d.ts +0 -2
  32. package/dist/cjs/operation-node/query-node.js +0 -10
  33. package/dist/cjs/operation-node/values-node.d.ts +15 -0
  34. package/dist/cjs/operation-node/values-node.js +18 -0
  35. package/dist/cjs/parser/complex-expression-parser.d.ts +9 -0
  36. package/dist/cjs/parser/complex-expression-parser.js +25 -0
  37. package/dist/cjs/parser/filter-parser.d.ts +13 -3
  38. package/dist/cjs/parser/filter-parser.js +56 -62
  39. package/dist/cjs/parser/insert-values-parser.d.ts +7 -10
  40. package/dist/cjs/parser/insert-values-parser.js +31 -39
  41. package/dist/cjs/parser/order-by-parser.d.ts +1 -1
  42. package/dist/cjs/parser/parse-context.d.ts +8 -8
  43. package/dist/cjs/parser/parse-context.js +10 -10
  44. package/dist/cjs/parser/reference-parser.d.ts +8 -7
  45. package/dist/cjs/parser/reference-parser.js +8 -17
  46. package/dist/cjs/parser/returning-parser.d.ts +1 -5
  47. package/dist/cjs/parser/select-parser.d.ts +12 -14
  48. package/dist/cjs/parser/select-parser.js +5 -9
  49. package/dist/cjs/parser/table-parser.d.ts +9 -11
  50. package/dist/cjs/parser/table-parser.js +2 -8
  51. package/dist/cjs/parser/union-parser.d.ts +2 -2
  52. package/dist/cjs/parser/union-parser.js +1 -6
  53. package/dist/cjs/parser/update-set-parser.d.ts +2 -8
  54. package/dist/cjs/parser/update-set-parser.js +6 -26
  55. package/dist/cjs/parser/value-parser.d.ts +9 -6
  56. package/dist/cjs/parser/value-parser.js +7 -30
  57. package/dist/cjs/parser/with-parser.d.ts +6 -3
  58. package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  59. package/dist/cjs/query-builder/delete-query-builder.d.ts +102 -0
  60. package/dist/cjs/query-builder/delete-query-builder.js +185 -0
  61. package/dist/cjs/query-builder/expression-builder.d.ts +8 -6
  62. package/dist/cjs/query-builder/expression-builder.js +3 -3
  63. package/dist/cjs/query-builder/function-builder.d.ts +2 -1
  64. package/dist/cjs/query-builder/function-builder.js +2 -1
  65. package/dist/cjs/query-builder/having-interface.d.ts +49 -0
  66. package/dist/cjs/query-builder/having-interface.js +2 -0
  67. package/dist/cjs/query-builder/insert-query-builder.d.ts +439 -0
  68. package/dist/cjs/query-builder/insert-query-builder.js +256 -0
  69. package/dist/cjs/query-builder/insert-result.d.ts +3 -2
  70. package/dist/cjs/query-builder/insert-result.js +3 -2
  71. package/dist/cjs/query-builder/join-builder.d.ts +22 -20
  72. package/dist/cjs/query-builder/join-builder.js +12 -12
  73. package/dist/cjs/query-builder/join-interface.d.ts +133 -0
  74. package/dist/cjs/query-builder/join-interface.js +2 -0
  75. package/dist/cjs/query-builder/no-result-error.d.ts +9 -0
  76. package/dist/cjs/query-builder/no-result-error.js +14 -0
  77. package/dist/cjs/query-builder/returning-interface.d.ts +73 -0
  78. package/dist/cjs/query-builder/returning-interface.js +2 -0
  79. package/dist/cjs/query-builder/select-query-builder.d.ts +711 -0
  80. package/dist/cjs/query-builder/select-query-builder.js +571 -0
  81. package/dist/cjs/query-builder/update-query-builder.d.ts +190 -0
  82. package/dist/cjs/query-builder/update-query-builder.js +279 -0
  83. package/dist/cjs/query-builder/where-interface.d.ts +381 -0
  84. package/dist/cjs/query-builder/where-interface.js +2 -0
  85. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  86. package/dist/cjs/query-compiler/default-query-compiler.js +22 -5
  87. package/dist/cjs/query-creator.d.ts +42 -40
  88. package/dist/cjs/query-creator.js +33 -28
  89. package/dist/cjs/query-executor/query-executor.d.ts +1 -1
  90. package/dist/cjs/query-executor/query-executor.js +1 -1
  91. package/dist/cjs/raw-builder/raw-builder.d.ts +2 -0
  92. package/dist/cjs/raw-builder/raw-builder.js +6 -0
  93. package/dist/cjs/schema/alter-table-builder.d.ts +2 -2
  94. package/dist/cjs/schema/column-definition-builder.d.ts +27 -20
  95. package/dist/cjs/schema/create-index-builder.d.ts +2 -1
  96. package/dist/cjs/schema/create-index-builder.js +2 -1
  97. package/dist/cjs/schema/create-table-builder.d.ts +26 -9
  98. package/dist/cjs/schema/create-table-builder.js +42 -9
  99. package/dist/cjs/schema/create-view-builder.d.ts +17 -3
  100. package/dist/cjs/schema/create-view-builder.js +25 -16
  101. package/dist/cjs/schema/schema.d.ts +18 -11
  102. package/dist/cjs/schema/schema.js +18 -11
  103. package/dist/cjs/util/dynamic-import.js +1 -1
  104. package/dist/cjs/util/log.d.ts +11 -8
  105. package/dist/cjs/util/log.js +25 -12
  106. package/dist/cjs/util/type-utils.d.ts +7 -7
  107. package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -2
  108. package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -6
  109. package/dist/esm/dialect/postgres/postgres-query-compiler.d.ts +3 -0
  110. package/dist/esm/dialect/postgres/postgres-query-compiler.js +9 -1
  111. package/dist/esm/dialect/sqlite/sqlite-adapter.js +6 -2
  112. package/dist/esm/dialect/sqlite/sqlite-driver.js +7 -7
  113. package/dist/esm/dialect/sqlite/sqlite-query-compiler.d.ts +2 -2
  114. package/dist/esm/dialect/sqlite/sqlite-query-compiler.js +6 -6
  115. package/dist/esm/driver/runtime-driver.js +1 -1
  116. package/dist/esm/dynamic/dynamic-reference-builder.d.ts +1 -0
  117. package/dist/esm/dynamic/dynamic-reference-builder.js +7 -0
  118. package/dist/esm/dynamic/dynamic.d.ts +6 -7
  119. package/dist/esm/dynamic/dynamic.js +6 -7
  120. package/dist/esm/index.d.ts +51 -33
  121. package/dist/esm/index.js +48 -30
  122. package/dist/esm/kysely.d.ts +39 -15
  123. package/dist/esm/kysely.js +32 -9
  124. package/dist/esm/migration/migration.d.ts +2 -2
  125. package/dist/esm/operation-node/alias-node.d.ts +1 -1
  126. package/dist/esm/operation-node/create-table-node.d.ts +6 -2
  127. package/dist/esm/operation-node/create-table-node.js +6 -6
  128. package/dist/esm/operation-node/create-view-node.d.ts +1 -0
  129. package/dist/esm/operation-node/insert-query-node.d.ts +4 -4
  130. package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
  131. package/dist/esm/operation-node/operation-node-transformer.js +11 -1
  132. package/dist/esm/operation-node/operation-node-utils.d.ts +1 -1
  133. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  134. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  135. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  136. package/dist/esm/operation-node/query-node.d.ts +0 -2
  137. package/dist/esm/operation-node/query-node.js +0 -10
  138. package/dist/esm/operation-node/values-node.d.ts +15 -0
  139. package/dist/esm/operation-node/values-node.js +15 -0
  140. package/dist/esm/parser/complex-expression-parser.d.ts +9 -0
  141. package/dist/esm/parser/complex-expression-parser.js +20 -0
  142. package/dist/esm/parser/filter-parser.d.ts +13 -3
  143. package/dist/esm/parser/filter-parser.js +55 -62
  144. package/dist/esm/parser/insert-values-parser.d.ts +7 -10
  145. package/dist/esm/parser/insert-values-parser.js +31 -38
  146. package/dist/esm/parser/order-by-parser.d.ts +1 -1
  147. package/dist/esm/parser/parse-context.d.ts +8 -8
  148. package/dist/esm/parser/parse-context.js +10 -10
  149. package/dist/esm/parser/reference-parser.d.ts +8 -7
  150. package/dist/esm/parser/reference-parser.js +9 -18
  151. package/dist/esm/parser/returning-parser.d.ts +1 -5
  152. package/dist/esm/parser/select-parser.d.ts +12 -14
  153. package/dist/esm/parser/select-parser.js +6 -10
  154. package/dist/esm/parser/table-parser.d.ts +9 -11
  155. package/dist/esm/parser/table-parser.js +3 -9
  156. package/dist/esm/parser/union-parser.d.ts +2 -2
  157. package/dist/esm/parser/union-parser.js +1 -6
  158. package/dist/esm/parser/update-set-parser.d.ts +2 -8
  159. package/dist/esm/parser/update-set-parser.js +5 -24
  160. package/dist/esm/parser/value-parser.d.ts +9 -6
  161. package/dist/esm/parser/value-parser.js +8 -31
  162. package/dist/esm/parser/with-parser.d.ts +6 -3
  163. package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
  164. package/dist/esm/query-builder/delete-query-builder.d.ts +102 -0
  165. package/dist/esm/query-builder/delete-query-builder.js +181 -0
  166. package/dist/esm/query-builder/expression-builder.d.ts +8 -6
  167. package/dist/esm/query-builder/expression-builder.js +3 -3
  168. package/dist/esm/query-builder/function-builder.d.ts +2 -1
  169. package/dist/esm/query-builder/function-builder.js +2 -1
  170. package/dist/esm/query-builder/having-interface.d.ts +49 -0
  171. package/dist/esm/query-builder/having-interface.js +1 -0
  172. package/dist/esm/query-builder/insert-query-builder.d.ts +439 -0
  173. package/dist/esm/query-builder/insert-query-builder.js +252 -0
  174. package/dist/esm/query-builder/insert-result.d.ts +3 -2
  175. package/dist/esm/query-builder/insert-result.js +3 -2
  176. package/dist/esm/query-builder/join-builder.d.ts +22 -20
  177. package/dist/esm/query-builder/join-builder.js +12 -12
  178. package/dist/esm/query-builder/join-interface.d.ts +133 -0
  179. package/dist/esm/query-builder/join-interface.js +1 -0
  180. package/dist/esm/query-builder/no-result-error.d.ts +9 -0
  181. package/dist/esm/query-builder/no-result-error.js +10 -0
  182. package/dist/esm/query-builder/returning-interface.d.ts +73 -0
  183. package/dist/esm/query-builder/returning-interface.js +1 -0
  184. package/dist/esm/query-builder/select-query-builder.d.ts +711 -0
  185. package/dist/esm/query-builder/select-query-builder.js +566 -0
  186. package/dist/esm/query-builder/update-query-builder.d.ts +190 -0
  187. package/dist/esm/query-builder/update-query-builder.js +275 -0
  188. package/dist/esm/query-builder/where-interface.d.ts +381 -0
  189. package/dist/esm/query-builder/where-interface.js +1 -0
  190. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  191. package/dist/esm/query-compiler/default-query-compiler.js +22 -5
  192. package/dist/esm/query-creator.d.ts +42 -40
  193. package/dist/esm/query-creator.js +33 -28
  194. package/dist/esm/query-executor/query-executor.d.ts +1 -1
  195. package/dist/esm/query-executor/query-executor.js +1 -1
  196. package/dist/esm/raw-builder/raw-builder.d.ts +2 -0
  197. package/dist/esm/raw-builder/raw-builder.js +6 -0
  198. package/dist/esm/schema/alter-table-builder.d.ts +2 -2
  199. package/dist/esm/schema/column-definition-builder.d.ts +27 -20
  200. package/dist/esm/schema/create-index-builder.d.ts +2 -1
  201. package/dist/esm/schema/create-index-builder.js +2 -1
  202. package/dist/esm/schema/create-table-builder.d.ts +26 -9
  203. package/dist/esm/schema/create-table-builder.js +43 -10
  204. package/dist/esm/schema/create-view-builder.d.ts +17 -3
  205. package/dist/esm/schema/create-view-builder.js +25 -16
  206. package/dist/esm/schema/schema.d.ts +18 -11
  207. package/dist/esm/schema/schema.js +18 -11
  208. package/dist/esm/util/dynamic-import.js +1 -1
  209. package/dist/esm/util/log.d.ts +11 -8
  210. package/dist/esm/util/log.js +25 -12
  211. package/dist/esm/util/type-utils.d.ts +7 -7
  212. package/package.json +3 -3
  213. package/dist/cjs/query-builder/query-builder.d.ts +0 -1707
  214. package/dist/cjs/query-builder/query-builder.js +0 -1067
  215. package/dist/esm/query-builder/query-builder.d.ts +0 -1707
  216. package/dist/esm/query-builder/query-builder.js +0 -1061
@@ -0,0 +1,381 @@
1
+ import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
2
+ import { ReferenceExpression } from '../parser/reference-parser.js';
3
+ import { AnyRawBuilder } from '../util/type-utils.js';
4
+ export interface WhereInterface<DB, TB extends keyof DB> {
5
+ /**
6
+ * Adds a `where` clause to the query.
7
+ *
8
+ * Also see {@link WhereInterface.whereExists | whereExists}, {@link WhereInterface.whereRef | whereRef}
9
+ * and {@link WhereInterface.whereRef | orWhere}.
10
+ *
11
+ * ### Examples
12
+ *
13
+ * Find a row by column value:
14
+ *
15
+ * ```ts
16
+ * const person = await db
17
+ * .selectFrom('person')
18
+ * .selectAll()
19
+ * .where('id', '=', 100)
20
+ * .executeTakeFirst()
21
+ * ```
22
+ *
23
+ * The generated SQL (PostgreSQL):
24
+ *
25
+ * ```sql
26
+ * select * from "person" where "id" = $1
27
+ * ```
28
+ *
29
+ * Operator can be any supported operator or if the typings don't support it
30
+ * you can always use `db.raw('your operator')`.
31
+ *
32
+ * ```ts
33
+ * const persons = await db
34
+ * .selectFrom('person')
35
+ * .selectAll()
36
+ * .where('id', '>', 100)
37
+ * .execute()
38
+ * ```
39
+ *
40
+ * The generated SQL (PostgreSQL):
41
+ *
42
+ * ```sql
43
+ * select * from "person" where "id" > $1
44
+ * ```
45
+ *
46
+ * The `where` methods don't change the type of the query. You can add
47
+ * conditional `where`s easily by doing something like this:
48
+ *
49
+ * ```ts
50
+ * let query = db
51
+ * .selectFrom('person')
52
+ * .selectAll()
53
+ *
54
+ * if (firstName) {
55
+ * query = query.where('first_name', '=', firstName)
56
+ * }
57
+ *
58
+ * const persons = await query.execute()
59
+ * ```
60
+ *
61
+ * This is true for basically all methods execpt the `select` and
62
+ * `returning` methods, which DO change the return type of the
63
+ * query.
64
+ *
65
+ * Both the first and third argument can also be subqueries.
66
+ * A subquery is defined by passing a function and calling
67
+ * the `selectFrom` method of the object passed into the
68
+ * function:
69
+ *
70
+ * ```ts
71
+ * const persons = await db
72
+ * .selectFrom('person')
73
+ * .selectAll()
74
+ * .where(
75
+ * (qb) => qb.selectFrom('pet')
76
+ * .select('pet.name')
77
+ * .whereRef('pet.owner_id', '=', 'person.id')
78
+ * .limit(1),
79
+ * '=',
80
+ * 'Fluffy'
81
+ * )
82
+ * .execute()
83
+ * ```
84
+ *
85
+ * The generated SQL (PostgreSQL):
86
+ *
87
+ * ```sql
88
+ * select *
89
+ * from "person"
90
+ * where (
91
+ * select "pet"."name"
92
+ * from "pet"
93
+ * where "pet"."owner_id" = "person"."id"
94
+ * limit $1
95
+ * ) = $2
96
+ * ```
97
+ *
98
+ * A `where in` query can be built by using the `in` operator and an array
99
+ * of values. The values in the array can also be subqueries or raw
100
+ * instances.
101
+ *
102
+ * ```ts
103
+ * const persons = await db
104
+ * .selectFrom('person')
105
+ * .selectAll()
106
+ * .where('person.id', 'in', [100, 200, 300])
107
+ * .execute()
108
+ * ```
109
+ *
110
+ * The generated SQL (PostgreSQL):
111
+ *
112
+ * ```sql
113
+ * select * from "person" where "id" in ($1, $2, $3)
114
+ * ```
115
+ *
116
+ * If everything else fails, you can always pass {@link Kysely.raw | raw}
117
+ * as any of the arguments, including the operator:
118
+ *
119
+ * ```ts
120
+ * const persons = await db
121
+ * .selectFrom('person')
122
+ * .selectAll()
123
+ * .where(
124
+ * db.raw('coalesce(first_name, last_name)'),
125
+ * 'like',
126
+ * '%' + name + '%',
127
+ * )
128
+ * .execute()
129
+ * ```
130
+ *
131
+ * The generated SQL (PostgreSQL):
132
+ *
133
+ * ```sql
134
+ * select * from "person"
135
+ * where coalesce(first_name, last_name) like $1
136
+ * ```
137
+ *
138
+ * If you only pass one function argument to this method, it can be
139
+ * used to create parentheses around other where statements:
140
+ *
141
+ * ```ts
142
+ * const persons = await db
143
+ * .selectFrom('person')
144
+ * .selectAll()
145
+ * .where((qb) => qb
146
+ * .where('id', '=', 1)
147
+ * .orWhere('id', '=', 2)
148
+ * )
149
+ * .execute()
150
+ * ```
151
+ *
152
+ * The generated SQL (PostgreSQL):
153
+ *
154
+ * ```sql
155
+ * select * from "person" (where "id" = 1 or "id" = 2)
156
+ * ```
157
+ *
158
+ * In all examples above the columns were known at compile time
159
+ * (except for the `raw` expressions). By default kysely only allows
160
+ * you to refer to columns that exist in the database **and** can be
161
+ * referred to in the current query and context.
162
+ *
163
+ * Sometimes you may want to refer to columns that come from the user
164
+ * input and thus are not available at compile time.
165
+ *
166
+ * You have two options, `db.raw` or `db.dynamic`. The example below
167
+ * uses both:
168
+ *
169
+ * ```ts
170
+ * const { ref } = db.dynamic
171
+ *
172
+ * const persons = await db
173
+ * .selectFrom('person')
174
+ * .selectAll()
175
+ * .where(ref(columnFromUserInput), '=', 1)
176
+ * .orWhere(db.raw('??', [columnFromUserInput]), '=', 2)
177
+ * .execute()
178
+ * ```
179
+ */
180
+ where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
181
+ where(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
182
+ where(raw: AnyRawBuilder): WhereInterface<DB, TB>;
183
+ /**
184
+ * Adds a `where` clause where both sides of the operator are references
185
+ * to columns.
186
+ *
187
+ * The normal `where` method treats the right hand side argument as a
188
+ * value by default. `whereRef` treats it as a column reference. This method is
189
+ * expecially useful with joins and correclated subqueries.
190
+ *
191
+ * ### Examples
192
+ *
193
+ * Usage with a join:
194
+ *
195
+ * ```ts
196
+ * db.selectFrom(['person', 'pet'])
197
+ * .selectAll()
198
+ * .whereRef('person.first_name', '=', 'pet.name')
199
+ * ```
200
+ *
201
+ * The generated SQL (PostgreSQL):
202
+ *
203
+ * ```sql
204
+ * select * from "person", "pet" where "person"."first_name" = "pet"."name"
205
+ * ```
206
+ *
207
+ * Usage in a subquery:
208
+ *
209
+ * ```ts
210
+ * const persons = await db
211
+ * .selectFrom('person')
212
+ * .selectAll('person')
213
+ * .select((qb) => qb
214
+ * .selectFrom('pet')
215
+ * .select('name')
216
+ * .whereRef('pet.owner_id', '=', 'person.id')
217
+ * .limit(1)
218
+ * .as('pet_name')
219
+ * )
220
+ * .execute()
221
+ * ```
222
+ *
223
+ * The generated SQL (PostgreSQL):
224
+ *
225
+ * ```sql
226
+ * select "person".*, (
227
+ * select "name"
228
+ * from "pet"
229
+ * where "pet"."owner_id" = "person"."id"
230
+ * limit $1
231
+ * ) as "pet_name"
232
+ * from "person"
233
+ */
234
+ whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
235
+ /**
236
+ * Adds an `or where` clause to the query. Otherwise works just like
237
+ * {@link WhereInterface.where | where}.
238
+ *
239
+ * It's often necessary to wrap `or where` clauses in parentheses to control
240
+ * precendence. You can use the one argument version of the `where` method
241
+ * for that. See the examples.
242
+ *
243
+ * ### Examples
244
+ *
245
+ * ```ts
246
+ * const persons = await db
247
+ * .selectFrom('person')
248
+ * .selectAll()
249
+ * .where('id', '=', 1)
250
+ * .orWhere('id', '=', 2)
251
+ * .execute()
252
+ * ```
253
+ *
254
+ * The generated SQL (PostgreSQL):
255
+ *
256
+ * ```sql
257
+ * select * from "person" where "id" = 1 or "id" = 2
258
+ * ```
259
+ *
260
+ * Grouping with parentheses:
261
+ *
262
+ * ```ts
263
+ * const persons = await db
264
+ * .selectFrom('person')
265
+ * .selectAll()
266
+ * .where((qb) => qb
267
+ * .where('id', '=', 1)
268
+ * .orWhere('id', '=', 2)
269
+ * )
270
+ * .execute()
271
+ * ```
272
+ *
273
+ * The generated SQL (PostgreSQL):
274
+ *
275
+ * ```sql
276
+ * select * from "person" (where "id" = 1 or "id" = 2)
277
+ * ```
278
+ *
279
+ * Even the first `where` can be an `orWhere`. This is useful
280
+ * if you are looping through a set of conditions:
281
+ *
282
+ * ```ts
283
+ * const persons = await db
284
+ * .selectFrom('person')
285
+ * .selectAll()
286
+ * .where((qb) => qb
287
+ * .orWhere('id', '=', 1)
288
+ * .orWhere('id', '=', 2)
289
+ * )
290
+ * .execute()
291
+ * ```
292
+ *
293
+ * The generated SQL (PostgreSQL):
294
+ *
295
+ * ```sql
296
+ * select * from "person" (where "id" = 1 or "id" = 2)
297
+ * ```
298
+ */
299
+ orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): WhereInterface<DB, TB>;
300
+ orWhere(grouper: WhereGrouper<DB, TB>): WhereInterface<DB, TB>;
301
+ orWhere(raw: AnyRawBuilder): WhereInterface<DB, TB>;
302
+ /**
303
+ * Adds an `or where` clause to the query. Otherwise works just like
304
+ * {@link WhereInterface.whereRef | whereRef}.
305
+ *
306
+ * Also see {@link WhereInterface.orWhere | orWhere} and {@link WhereInterface.where | where}.
307
+ */
308
+ orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): WhereInterface<DB, TB>;
309
+ /**
310
+ * Adds a `where exists` clause to the query.
311
+ *
312
+ * You can either use a subquery or a raw instance.
313
+ *
314
+ * ### Examples
315
+ *
316
+ * The query below selets all persons that own a pet named Catto:
317
+ *
318
+ * ```ts
319
+ * const persons = await db
320
+ * .selectFrom('person')
321
+ * .selectAll()
322
+ * .whereExists((qb) => qb
323
+ * .selectFrom('pet')
324
+ * .select('pet.id')
325
+ * .whereRef('person.id', '=', 'pet.owner_id')
326
+ * .where('pet.name', '=', 'Catto')
327
+ * )
328
+ * .execute()
329
+ * ```
330
+ *
331
+ * The generated SQL (PostgreSQL):
332
+ *
333
+ * ```sql
334
+ * select * from "person"
335
+ * where exists (
336
+ * select "pet"."id"
337
+ * from "pet"
338
+ * where "person"."id" = "pet"."owner_id"
339
+ * and "pet"."name" = $1
340
+ * )
341
+ * ```
342
+ *
343
+ * The same query as in the previous example but with using raw:
344
+ *
345
+ * ```ts
346
+ * db.selectFrom('person')
347
+ * .selectAll()
348
+ * .whereExists(
349
+ * db.raw(
350
+ * '(select pet.id from pet where person.id = pet.owner_id and pet.name = ?)',
351
+ * ['Catto']
352
+ * )
353
+ * )
354
+ * ```
355
+ *
356
+ * The generated SQL (PostgreSQL):
357
+ *
358
+ * ```sql
359
+ * select * from "person"
360
+ * where exists (
361
+ * select pet.id
362
+ * from pet
363
+ * where person.id = pet.owner_id
364
+ * and pet.name = $1
365
+ * )
366
+ * ```
367
+ */
368
+ whereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
369
+ /**
370
+ * Just like {@link WhereInterface.whereExists | whereExists} but creates a `not exists` clause.
371
+ */
372
+ whereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
373
+ /**
374
+ * Just like {@link WhereInterface.whereExists | whereExists} but creates a `or exists` clause.
375
+ */
376
+ orWhereExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
377
+ /**
378
+ * Just like {@link WhereInterface.whereExists | whereExists} but creates a `or not exists` clause.
379
+ */
380
+ orWhereNotExists(arg: ExistsExpression<DB, TB>): WhereInterface<DB, TB>;
381
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -67,6 +67,7 @@ import { DropViewNode } from '../operation-node/drop-view-node.js';
67
67
  import { GeneratedAlwaysAsNode } from '../operation-node/generated-always-as-node.js';
68
68
  import { DefaultValueNode } from '../operation-node/default-value-node.js';
69
69
  import { OnNode } from '../operation-node/on-node.js';
70
+ import { ValuesNode } from '../operation-node/values-node.js';
70
71
  export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
71
72
  #private;
72
73
  protected get numParameters(): number;
@@ -81,6 +82,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
81
82
  protected visitWhere(node: WhereNode): void;
82
83
  protected visitHaving(node: HavingNode): void;
83
84
  protected visitInsertQuery(node: InsertQueryNode): void;
85
+ protected visitValues(node: ValuesNode): void;
84
86
  protected visitDeleteQuery(node: DeleteQueryNode): void;
85
87
  protected visitReturning(node: ReturningNode): void;
86
88
  protected visitAlias(node: AliasNode): void;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DefaultQueryCompiler = void 0;
4
+ const insert_query_node_js_1 = require("../operation-node/insert-query-node.js");
4
5
  const operation_node_visitor_js_1 = require("../operation-node/operation-node-visitor.js");
5
6
  const query_node_js_1 = require("../operation-node/query-node.js");
6
7
  const raw_node_js_1 = require("../operation-node/raw-node.js");
@@ -27,9 +28,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
27
28
  return this.#sql;
28
29
  }
29
30
  visitSelectQuery(node) {
30
- const wrapInParens = this.nodeStack.length !== 1 &&
31
+ const wrapInParens = this.parentNode !== undefined &&
31
32
  !create_view_node_js_1.CreateViewNode.is(this.parentNode) &&
32
- !union_node_js_1.UnionNode.is(this.parentNode);
33
+ !union_node_js_1.UnionNode.is(this.parentNode) &&
34
+ !insert_query_node_js_1.InsertQueryNode.is(this.parentNode);
33
35
  if (wrapInParens) {
34
36
  this.append('(');
35
37
  }
@@ -146,8 +148,8 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
146
148
  this.append(')');
147
149
  }
148
150
  if (node.values) {
149
- this.append(' values ');
150
- this.compileList(node.values);
151
+ this.append(' ');
152
+ this.visitNode(node.values);
151
153
  }
152
154
  if (node.onConflict) {
153
155
  this.append(' ');
@@ -165,6 +167,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
165
167
  this.append(')');
166
168
  }
167
169
  }
170
+ visitValues(node) {
171
+ this.append('values ');
172
+ this.compileList(node.values);
173
+ }
168
174
  visitDeleteQuery(node) {
169
175
  const isSubQuery = this.nodeStack.find(query_node_js_1.QueryNode.is) !== node;
170
176
  if (isSubQuery) {
@@ -297,7 +303,11 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
297
303
  this.visitNode(node.table);
298
304
  }
299
305
  visitCreateTable(node) {
300
- this.append('create table ');
306
+ this.append('create ');
307
+ if (node.temporary) {
308
+ this.append('temporary ');
309
+ }
310
+ this.append('table ');
301
311
  if (node.ifNotExists) {
302
312
  this.append('if not exists ');
303
313
  }
@@ -305,6 +315,10 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
305
315
  this.append(' (');
306
316
  this.compileList([...node.columns, ...(node.constraints ?? [])]);
307
317
  this.append(')');
318
+ if (node.onCommit) {
319
+ this.append(' on commit ');
320
+ this.append(node.onCommit);
321
+ }
308
322
  }
309
323
  visitColumnDefinition(node) {
310
324
  this.visitNode(node.column);
@@ -667,6 +681,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
667
681
  if (node.materialized) {
668
682
  this.append('materialized ');
669
683
  }
684
+ if (node.temporary) {
685
+ this.append('temporary ');
686
+ }
670
687
  this.append('view ');
671
688
  if (node.ifNotExists) {
672
689
  this.append('if not exists ');