kysely 0.9.1 → 0.9.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.
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +11 -0
- package/dist/cjs/dialect/mysql/mysql-dialect.js +7 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +2 -2
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +13 -1
- package/dist/cjs/dialect/postgres/postgres-dialect.js +10 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +2 -2
- package/dist/cjs/dialect/postgres/postgres-query-compiler.js +1 -1
- package/dist/cjs/driver/runtime-driver.d.ts +3 -2
- package/dist/cjs/driver/runtime-driver.js +57 -4
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/kysely.d.ts +31 -9
- package/dist/cjs/kysely.js +25 -9
- package/dist/cjs/migration/migration.d.ts +32 -0
- package/dist/cjs/operation-node/join-node.d.ts +2 -1
- package/dist/cjs/operation-node/join-node.js +8 -6
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +61 -59
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -316
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/query-node.d.ts +4 -3
- package/dist/cjs/operation-node/query-node.js +10 -2
- package/dist/cjs/operation-node/select-query-node.d.ts +5 -1
- package/dist/cjs/operation-node/select-query-node.js +18 -2
- package/dist/cjs/operation-node/union-node.d.ts +16 -0
- package/dist/cjs/operation-node/union-node.js +19 -0
- package/dist/cjs/parser/group-by-parser.d.ts +4 -0
- package/dist/cjs/parser/group-by-parser.js +9 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
- package/dist/cjs/parser/join-parser.d.ts +4 -4
- package/dist/cjs/parser/order-by-parser.d.ts +2 -4
- package/dist/cjs/parser/order-by-parser.js +6 -3
- package/dist/cjs/parser/reference-parser.d.ts +1 -1
- package/dist/cjs/parser/reference-parser.js +1 -1
- package/dist/cjs/parser/union-parser.d.ts +5 -0
- package/dist/cjs/parser/union-parser.js +13 -0
- package/dist/cjs/parser/value-parser.d.ts +1 -1
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +5 -116
- package/dist/cjs/plugin/camel-case/camel-case-transformer.d.ts +8 -0
- package/dist/cjs/plugin/camel-case/camel-case-transformer.js +19 -0
- package/dist/cjs/plugin/camel-case/camel-case.d.ts +15 -0
- package/dist/cjs/plugin/camel-case/camel-case.js +109 -0
- package/dist/cjs/plugin/kysely-plugin.d.ts +1 -1
- package/dist/cjs/query-builder/join-builder.js +8 -8
- package/dist/cjs/query-builder/query-builder.d.ts +65 -1
- package/dist/cjs/query-builder/query-builder.js +103 -22
- package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +7 -2
- package/dist/cjs/query-compiler/default-query-compiler.js +20 -3
- package/dist/cjs/query-executor/default-query-executor.d.ts +1 -0
- package/dist/cjs/query-executor/default-query-executor.js +6 -0
- package/dist/cjs/query-executor/noop-query-executor.d.ts +1 -0
- package/dist/cjs/query-executor/noop-query-executor.js +3 -0
- package/dist/cjs/query-executor/query-executor.d.ts +9 -4
- package/dist/cjs/util/log.d.ts +19 -0
- package/dist/cjs/util/log.js +37 -0
- package/dist/cjs/util/object-utils.d.ts +11 -11
- package/dist/cjs/util/object-utils.js +1 -1
- package/dist/cjs/util/random-string.js +6 -3
- package/dist/cjs/util/type-utils.d.ts +4 -4
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +11 -0
- package/dist/esm/dialect/mysql/mysql-dialect.js +7 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +3 -3
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +13 -1
- package/dist/esm/dialect/postgres/postgres-dialect.js +10 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +2 -2
- package/dist/esm/dialect/postgres/postgres-query-compiler.js +1 -1
- package/dist/esm/driver/runtime-driver.d.ts +3 -2
- package/dist/esm/driver/runtime-driver.js +57 -4
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/kysely.d.ts +31 -9
- package/dist/esm/kysely.js +25 -9
- package/dist/esm/migration/migration.d.ts +32 -0
- package/dist/esm/operation-node/join-node.d.ts +2 -1
- package/dist/esm/operation-node/join-node.js +8 -6
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +9 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +61 -59
- package/dist/esm/operation-node/operation-node-visitor.js +1 -316
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/query-node.d.ts +4 -3
- package/dist/esm/operation-node/query-node.js +10 -2
- package/dist/esm/operation-node/select-query-node.d.ts +5 -1
- package/dist/esm/operation-node/select-query-node.js +18 -2
- package/dist/esm/operation-node/union-node.d.ts +16 -0
- package/dist/esm/operation-node/union-node.js +16 -0
- package/dist/esm/parser/group-by-parser.d.ts +4 -0
- package/dist/esm/parser/group-by-parser.js +5 -0
- package/dist/esm/parser/insert-values-parser.d.ts +1 -1
- package/dist/esm/parser/join-parser.d.ts +4 -4
- package/dist/esm/parser/order-by-parser.d.ts +2 -4
- package/dist/esm/parser/order-by-parser.js +6 -2
- package/dist/esm/parser/reference-parser.d.ts +1 -1
- package/dist/esm/parser/reference-parser.js +2 -2
- package/dist/esm/parser/union-parser.d.ts +5 -0
- package/dist/esm/parser/union-parser.js +9 -0
- package/dist/esm/parser/value-parser.d.ts +1 -1
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +4 -115
- package/dist/esm/plugin/camel-case/camel-case-transformer.d.ts +8 -0
- package/dist/esm/plugin/camel-case/camel-case-transformer.js +15 -0
- package/dist/esm/plugin/camel-case/camel-case.d.ts +15 -0
- package/dist/esm/plugin/camel-case/camel-case.js +104 -0
- package/dist/esm/plugin/kysely-plugin.d.ts +1 -1
- package/dist/esm/query-builder/join-builder.js +8 -8
- package/dist/esm/query-builder/query-builder.d.ts +65 -1
- package/dist/esm/query-builder/query-builder.js +104 -23
- package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +7 -2
- package/dist/esm/query-compiler/default-query-compiler.js +20 -3
- package/dist/esm/query-executor/default-query-executor.d.ts +1 -0
- package/dist/esm/query-executor/default-query-executor.js +6 -0
- package/dist/esm/query-executor/noop-query-executor.d.ts +1 -0
- package/dist/esm/query-executor/noop-query-executor.js +3 -0
- package/dist/esm/query-executor/query-executor.d.ts +9 -4
- package/dist/esm/util/log.d.ts +19 -0
- package/dist/esm/util/log.js +33 -0
- package/dist/esm/util/object-utils.d.ts +11 -11
- package/dist/esm/util/object-utils.js +1 -1
- package/dist/esm/util/random-string.js +6 -3
- package/dist/esm/util/type-utils.d.ts +4 -4
- package/package.json +1 -1
|
@@ -59,326 +59,11 @@ export class OperationNodeVisitor {
|
|
|
59
59
|
AddConstraintNode: this.visitAddConstraint.bind(this),
|
|
60
60
|
DropConstraintNode: this.visitDropConstraint.bind(this),
|
|
61
61
|
ForeignKeyConstraintNode: this.visitForeignKeyConstraint.bind(this),
|
|
62
|
+
UnionNode: this.visitUnion.bind(this),
|
|
62
63
|
};
|
|
63
64
|
visitNode = (node) => {
|
|
64
65
|
this.nodeStack.push(node);
|
|
65
66
|
this.#visitors[node.kind](node);
|
|
66
67
|
this.nodeStack.pop();
|
|
67
68
|
};
|
|
68
|
-
visitSelectQuery(node) {
|
|
69
|
-
if (node.with) {
|
|
70
|
-
this.visitNode(node.with);
|
|
71
|
-
}
|
|
72
|
-
if (node.distinctOnSelections) {
|
|
73
|
-
node.distinctOnSelections.forEach(this.visitNode);
|
|
74
|
-
}
|
|
75
|
-
if (node.selections) {
|
|
76
|
-
node.selections.forEach(this.visitNode);
|
|
77
|
-
}
|
|
78
|
-
this.visitNode(node.from);
|
|
79
|
-
if (node.joins) {
|
|
80
|
-
node.joins.forEach(this.visitNode);
|
|
81
|
-
}
|
|
82
|
-
if (node.where) {
|
|
83
|
-
this.visitNode(node.where);
|
|
84
|
-
}
|
|
85
|
-
if (node.groupBy) {
|
|
86
|
-
this.visitNode(node.groupBy);
|
|
87
|
-
}
|
|
88
|
-
if (node.having) {
|
|
89
|
-
this.visitNode(node.having);
|
|
90
|
-
}
|
|
91
|
-
if (node.orderBy) {
|
|
92
|
-
this.visitNode(node.orderBy);
|
|
93
|
-
}
|
|
94
|
-
if (node.limit) {
|
|
95
|
-
this.visitNode(node.limit);
|
|
96
|
-
}
|
|
97
|
-
if (node.offset) {
|
|
98
|
-
this.visitNode(node.offset);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
visitSelection(node) {
|
|
102
|
-
this.visitNode(node.selection);
|
|
103
|
-
}
|
|
104
|
-
visitColumn(node) {
|
|
105
|
-
this.visitNode(node.column);
|
|
106
|
-
}
|
|
107
|
-
visitAlias(node) {
|
|
108
|
-
this.visitNode(node.node);
|
|
109
|
-
}
|
|
110
|
-
visitTable(node) {
|
|
111
|
-
if (node.schema) {
|
|
112
|
-
this.visitNode(node.schema);
|
|
113
|
-
}
|
|
114
|
-
this.visitNode(node.table);
|
|
115
|
-
}
|
|
116
|
-
visitFrom(node) {
|
|
117
|
-
node.froms.forEach(this.visitNode);
|
|
118
|
-
}
|
|
119
|
-
visitReference(node) {
|
|
120
|
-
this.visitNode(node.column);
|
|
121
|
-
this.visitNode(node.table);
|
|
122
|
-
}
|
|
123
|
-
visitFilter(node) {
|
|
124
|
-
if (node.left) {
|
|
125
|
-
this.visitNode(node.left);
|
|
126
|
-
}
|
|
127
|
-
this.visitNode(node.op);
|
|
128
|
-
this.visitNode(node.right);
|
|
129
|
-
}
|
|
130
|
-
visitAnd(node) {
|
|
131
|
-
this.visitNode(node.left);
|
|
132
|
-
this.visitNode(node.right);
|
|
133
|
-
}
|
|
134
|
-
visitOr(node) {
|
|
135
|
-
this.visitNode(node.left);
|
|
136
|
-
this.visitNode(node.right);
|
|
137
|
-
}
|
|
138
|
-
visitValueList(node) {
|
|
139
|
-
node.values.forEach(this.visitNode);
|
|
140
|
-
}
|
|
141
|
-
visitParens(node) {
|
|
142
|
-
this.visitNode(node.node);
|
|
143
|
-
}
|
|
144
|
-
visitJoin(node) {
|
|
145
|
-
this.visitNode(node.table);
|
|
146
|
-
if (node.on) {
|
|
147
|
-
this.visitNode(node.on);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
visitRaw(node) {
|
|
151
|
-
node.params.forEach(this.visitNode);
|
|
152
|
-
}
|
|
153
|
-
visitWhere(node) {
|
|
154
|
-
this.visitNode(node.where);
|
|
155
|
-
}
|
|
156
|
-
visitInsertQuery(node) {
|
|
157
|
-
if (node.with) {
|
|
158
|
-
this.visitNode(node.with);
|
|
159
|
-
}
|
|
160
|
-
this.visitNode(node.into);
|
|
161
|
-
if (node.columns) {
|
|
162
|
-
node.columns.forEach(this.visitNode);
|
|
163
|
-
}
|
|
164
|
-
if (node.values) {
|
|
165
|
-
node.values.forEach(this.visitNode);
|
|
166
|
-
}
|
|
167
|
-
if (node.returning) {
|
|
168
|
-
this.visitNode(node.returning);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
visitDeleteQuery(node) {
|
|
172
|
-
if (node.with) {
|
|
173
|
-
this.visitNode(node.with);
|
|
174
|
-
}
|
|
175
|
-
this.visitNode(node.from);
|
|
176
|
-
if (node.joins) {
|
|
177
|
-
node.joins.forEach(this.visitNode);
|
|
178
|
-
}
|
|
179
|
-
if (node.where) {
|
|
180
|
-
this.visitNode(node.where);
|
|
181
|
-
}
|
|
182
|
-
if (node.returning) {
|
|
183
|
-
this.visitNode(node.returning);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
visitReturning(node) {
|
|
187
|
-
node.selections.forEach(this.visitNode);
|
|
188
|
-
}
|
|
189
|
-
visitCreateTable(node) {
|
|
190
|
-
this.visitNode(node.table);
|
|
191
|
-
node.columns.forEach(this.visitNode);
|
|
192
|
-
if (node.constraints) {
|
|
193
|
-
node.constraints.forEach(this.visitNode);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
visitAddColumn(node) {
|
|
197
|
-
this.visitNode(node.column);
|
|
198
|
-
}
|
|
199
|
-
visitColumnDefinition(node) {
|
|
200
|
-
this.visitNode(node.column);
|
|
201
|
-
this.visitNode(node.dataType);
|
|
202
|
-
if (node.defaultTo) {
|
|
203
|
-
this.visitNode(node.defaultTo);
|
|
204
|
-
}
|
|
205
|
-
if (node.references) {
|
|
206
|
-
this.visitNode(node.references);
|
|
207
|
-
}
|
|
208
|
-
if (node.check) {
|
|
209
|
-
this.visitNode(node.check);
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
visitDropTable(node) {
|
|
213
|
-
this.visitNode(node.table);
|
|
214
|
-
}
|
|
215
|
-
visitOrderBy(node) {
|
|
216
|
-
node.items.forEach(this.visitNode);
|
|
217
|
-
}
|
|
218
|
-
visitOrderByItem(node) {
|
|
219
|
-
this.visitNode(node.orderBy);
|
|
220
|
-
}
|
|
221
|
-
visitGroupBy(node) {
|
|
222
|
-
node.items.forEach(this.visitNode);
|
|
223
|
-
}
|
|
224
|
-
visitGroupByItem(node) {
|
|
225
|
-
this.visitNode(node.groupBy);
|
|
226
|
-
}
|
|
227
|
-
visitUpdateQuery(node) {
|
|
228
|
-
if (node.with) {
|
|
229
|
-
this.visitNode(node.with);
|
|
230
|
-
}
|
|
231
|
-
this.visitNode(node.table);
|
|
232
|
-
if (node.updates) {
|
|
233
|
-
node.updates.forEach(this.visitNode);
|
|
234
|
-
}
|
|
235
|
-
if (node.joins) {
|
|
236
|
-
node.joins.forEach(this.visitNode);
|
|
237
|
-
}
|
|
238
|
-
if (node.where) {
|
|
239
|
-
this.visitNode(node.where);
|
|
240
|
-
}
|
|
241
|
-
if (node.returning) {
|
|
242
|
-
this.visitNode(node.returning);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
visitColumnUpdate(node) {
|
|
246
|
-
this.visitNode(node.column);
|
|
247
|
-
this.visitNode(node.value);
|
|
248
|
-
}
|
|
249
|
-
visitLimit(node) {
|
|
250
|
-
this.visitNode(node.limit);
|
|
251
|
-
}
|
|
252
|
-
visitOffset(node) {
|
|
253
|
-
this.visitNode(node.offset);
|
|
254
|
-
}
|
|
255
|
-
visitOnConflict(node) {
|
|
256
|
-
if (node.columns) {
|
|
257
|
-
node.columns.forEach(this.visitNode);
|
|
258
|
-
}
|
|
259
|
-
if (node.constraint) {
|
|
260
|
-
this.visitNode(node.constraint);
|
|
261
|
-
}
|
|
262
|
-
if (node.updates) {
|
|
263
|
-
node.updates.forEach(this.visitNode);
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
visitOnDuplicateKey(node) {
|
|
267
|
-
node.updates.forEach(this.visitNode);
|
|
268
|
-
}
|
|
269
|
-
visitCreateIndex(node) {
|
|
270
|
-
this.visitNode(node.name);
|
|
271
|
-
if (node.table) {
|
|
272
|
-
this.visitNode(node.table);
|
|
273
|
-
}
|
|
274
|
-
if (node.using) {
|
|
275
|
-
this.visitNode(node.using);
|
|
276
|
-
}
|
|
277
|
-
if (node.expression) {
|
|
278
|
-
this.visitNode(node.expression);
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
visitList(node) {
|
|
282
|
-
node.items.forEach(this.visitNode);
|
|
283
|
-
}
|
|
284
|
-
visitDropIndex(node) {
|
|
285
|
-
this.visitNode(node.name);
|
|
286
|
-
if (node.table) {
|
|
287
|
-
this.visitNode(node.table);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
visitPrimaryKeyConstraint(node) {
|
|
291
|
-
if (node.name) {
|
|
292
|
-
this.visitNode(node.name);
|
|
293
|
-
}
|
|
294
|
-
node.columns.forEach(this.visitNode);
|
|
295
|
-
}
|
|
296
|
-
visitUniqueConstraint(node) {
|
|
297
|
-
if (node.name) {
|
|
298
|
-
this.visitNode(node.name);
|
|
299
|
-
}
|
|
300
|
-
node.columns.forEach(this.visitNode);
|
|
301
|
-
}
|
|
302
|
-
visitReferences(node) {
|
|
303
|
-
node.columns.forEach(this.visitNode);
|
|
304
|
-
this.visitNode(node.table);
|
|
305
|
-
}
|
|
306
|
-
visitCheckConstraint(node) {
|
|
307
|
-
if (node.name) {
|
|
308
|
-
this.visitNode(node.name);
|
|
309
|
-
}
|
|
310
|
-
this.visitNode(node.expression);
|
|
311
|
-
}
|
|
312
|
-
visitWith(node) {
|
|
313
|
-
node.expressions.forEach(this.visitNode);
|
|
314
|
-
}
|
|
315
|
-
visitCommonTableExpression(node) {
|
|
316
|
-
this.visitNode(node.name);
|
|
317
|
-
this.visitNode(node.expression);
|
|
318
|
-
}
|
|
319
|
-
visitHaving(node) {
|
|
320
|
-
this.visitNode(node.having);
|
|
321
|
-
}
|
|
322
|
-
visitCreateSchema(node) {
|
|
323
|
-
this.visitNode(node.schema);
|
|
324
|
-
}
|
|
325
|
-
visitDropSchema(node) {
|
|
326
|
-
this.visitNode(node.schema);
|
|
327
|
-
}
|
|
328
|
-
visitAlterTable(node) {
|
|
329
|
-
this.visitNode(node.table);
|
|
330
|
-
if (node.renameTo) {
|
|
331
|
-
this.visitNode(node.renameTo);
|
|
332
|
-
}
|
|
333
|
-
if (node.renameColumn) {
|
|
334
|
-
this.visitNode(node.renameColumn);
|
|
335
|
-
}
|
|
336
|
-
if (node.setSchema) {
|
|
337
|
-
this.visitNode(node.setSchema);
|
|
338
|
-
}
|
|
339
|
-
if (node.addColumn) {
|
|
340
|
-
this.visitNode(node.addColumn);
|
|
341
|
-
}
|
|
342
|
-
if (node.dropColumn) {
|
|
343
|
-
this.visitNode(node.dropColumn);
|
|
344
|
-
}
|
|
345
|
-
if (node.alterColumn) {
|
|
346
|
-
this.visitNode(node.alterColumn);
|
|
347
|
-
}
|
|
348
|
-
if (node.modifyColumn) {
|
|
349
|
-
this.visitNode(node.modifyColumn);
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
visitDropColumn(node) {
|
|
353
|
-
this.visitNode(node.column);
|
|
354
|
-
}
|
|
355
|
-
visitRenameColumn(node) {
|
|
356
|
-
this.visitNode(node.column);
|
|
357
|
-
this.visitNode(node.renameTo);
|
|
358
|
-
}
|
|
359
|
-
visitAlterColumn(node) {
|
|
360
|
-
this.visitNode(node.column);
|
|
361
|
-
}
|
|
362
|
-
visitModifyColumn(node) {
|
|
363
|
-
this.visitNode(node.column);
|
|
364
|
-
}
|
|
365
|
-
visitAddConstraint(node) {
|
|
366
|
-
this.visitNode(node.constraint);
|
|
367
|
-
}
|
|
368
|
-
visitDropConstraint(node) {
|
|
369
|
-
this.visitNode(node.constraintName);
|
|
370
|
-
}
|
|
371
|
-
visitForeignKeyConstraint(node) {
|
|
372
|
-
if (node.name) {
|
|
373
|
-
this.visitNode(node.name);
|
|
374
|
-
}
|
|
375
|
-
node.columns.forEach(this.visitNode);
|
|
376
|
-
this.visitNode(node.references);
|
|
377
|
-
}
|
|
378
|
-
visitDataType(node) { }
|
|
379
|
-
visitSelectAll(_) { }
|
|
380
|
-
visitIdentifier(_) { }
|
|
381
|
-
visitValue(_) { }
|
|
382
|
-
visitPrimitiveValueList(_) { }
|
|
383
|
-
visitOperator(node) { }
|
|
384
69
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode';
|
|
1
|
+
export declare type OperationNodeKind = 'IdentifierNode' | 'RawNode' | 'SelectQueryNode' | 'SelectionNode' | 'ReferenceNode' | 'ColumnNode' | 'TableNode' | 'AliasNode' | 'FromNode' | 'SelectAllNode' | 'FilterNode' | 'AndNode' | 'OrNode' | 'ParensNode' | 'ValueNode' | 'ValueListNode' | 'PrimitiveValueListNode' | 'JoinNode' | 'OperatorNode' | 'WhereNode' | 'InsertQueryNode' | 'DeleteQueryNode' | 'ReturningNode' | 'CreateTableNode' | 'ColumnDefinitionNode' | 'AddColumnNode' | 'DropTableNode' | 'DataTypeNode' | 'OrderByNode' | 'OrderByItemNode' | 'GroupByNode' | 'GroupByItemNode' | 'UpdateQueryNode' | 'ColumnUpdateNode' | 'LimitNode' | 'OffsetNode' | 'OnConflictNode' | 'OnDuplicateKeyNode' | 'CreateIndexNode' | 'DropIndexNode' | 'ListNode' | 'ReferencesNode' | 'PrimaryKeyConstraintNode' | 'UniqueConstraintNode' | 'CheckConstraintNode' | 'ForeignKeyConstraintNode' | 'WithNode' | 'CommonTableExpressionNode' | 'HavingNode' | 'CreateSchemaNode' | 'DropSchemaNode' | 'AlterTableNode' | 'ModifyColumnNode' | 'DropColumnNode' | 'RenameColumnNode' | 'AlterColumnNode' | 'AddConstraintNode' | 'DropConstraintNode' | 'UnionNode';
|
|
2
2
|
export interface OperationNode {
|
|
3
3
|
readonly kind: OperationNodeKind;
|
|
4
4
|
}
|
|
@@ -16,7 +16,8 @@ export declare const QueryNode: Readonly<{
|
|
|
16
16
|
is(node: OperationNode): node is QueryNode;
|
|
17
17
|
isMutating(node: OperationNode): node is MutatingQueryNode;
|
|
18
18
|
isFilterable(node: OperationNode): node is FilterableQueryNode;
|
|
19
|
-
cloneWithWhere<T extends FilterableQueryNode>(node: T,
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
cloneWithWhere<T extends FilterableQueryNode>(node: T, filter: WhereChildNode): T;
|
|
20
|
+
cloneWithOrWhere<T_1 extends FilterableQueryNode>(node: T_1, filter: WhereChildNode): T_1;
|
|
21
|
+
cloneWithJoin<T_2 extends FilterableQueryNode>(node: T_2, join: JoinNode): T_2;
|
|
22
|
+
cloneWithReturning<T_3 extends MutatingQueryNode>(node: T_3, selections: ReadonlyArray<SelectionNode>): T_3;
|
|
22
23
|
}>;
|
|
@@ -25,11 +25,19 @@ export const QueryNode = freeze({
|
|
|
25
25
|
DeleteQueryNode.is(node) ||
|
|
26
26
|
UpdateQueryNode.is(node));
|
|
27
27
|
},
|
|
28
|
-
cloneWithWhere(node,
|
|
28
|
+
cloneWithWhere(node, filter) {
|
|
29
29
|
return freeze({
|
|
30
30
|
...node,
|
|
31
31
|
where: node.where
|
|
32
|
-
? WhereNode.cloneWithFilter(node.where,
|
|
32
|
+
? WhereNode.cloneWithFilter(node.where, 'And', filter)
|
|
33
|
+
: WhereNode.create(filter),
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
cloneWithOrWhere(node, filter) {
|
|
37
|
+
return freeze({
|
|
38
|
+
...node,
|
|
39
|
+
where: node.where
|
|
40
|
+
? WhereNode.cloneWithFilter(node.where, 'Or', filter)
|
|
33
41
|
: WhereNode.create(filter),
|
|
34
42
|
});
|
|
35
43
|
},
|
|
@@ -12,6 +12,7 @@ import { OrderByNode } from './order-by-node.js';
|
|
|
12
12
|
import { SelectionNode } from './selection-node.js';
|
|
13
13
|
import { WhereNode } from './where-node.js';
|
|
14
14
|
import { WithNode } from './with-node.js';
|
|
15
|
+
import { UnionNode } from './union-node.js';
|
|
15
16
|
export declare type SelectModifier = 'ForUpdate' | 'ForNoKeyUpdate' | 'ForShare' | 'ForKeyShare' | 'NoWait' | 'SkipLocked';
|
|
16
17
|
export interface SelectQueryNode extends OperationNode {
|
|
17
18
|
readonly kind: 'SelectQueryNode';
|
|
@@ -28,6 +29,7 @@ export interface SelectQueryNode extends OperationNode {
|
|
|
28
29
|
readonly offset?: OffsetNode;
|
|
29
30
|
readonly with?: WithNode;
|
|
30
31
|
readonly having?: HavingNode;
|
|
32
|
+
readonly union?: ReadonlyArray<UnionNode>;
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
33
35
|
* @internal
|
|
@@ -42,6 +44,8 @@ export declare const SelectQueryNode: Readonly<{
|
|
|
42
44
|
cloneWithGroupByItems(selectNode: SelectQueryNode, items: ReadonlyArray<GroupByItemNode>): SelectQueryNode;
|
|
43
45
|
cloneWithLimit(selectNode: SelectQueryNode, limit: LimitNode): SelectQueryNode;
|
|
44
46
|
cloneWithOffset(selectNode: SelectQueryNode, offset: OffsetNode): SelectQueryNode;
|
|
45
|
-
cloneWithHaving(selectNode: SelectQueryNode,
|
|
47
|
+
cloneWithHaving(selectNode: SelectQueryNode, filter: HavingNodeChild): SelectQueryNode;
|
|
48
|
+
cloneWithOrHaving(selectNode: SelectQueryNode, filter: HavingNodeChild): SelectQueryNode;
|
|
46
49
|
cloneWithDistinct(selectNode: SelectQueryNode): SelectQueryNode;
|
|
50
|
+
cloneWithUnion(selectNode: SelectQueryNode, union: UnionNode): SelectQueryNode;
|
|
47
51
|
}>;
|
|
@@ -69,11 +69,19 @@ export const SelectQueryNode = freeze({
|
|
|
69
69
|
offset,
|
|
70
70
|
});
|
|
71
71
|
},
|
|
72
|
-
cloneWithHaving(selectNode,
|
|
72
|
+
cloneWithHaving(selectNode, filter) {
|
|
73
73
|
return freeze({
|
|
74
74
|
...selectNode,
|
|
75
75
|
having: selectNode.having
|
|
76
|
-
? HavingNode.cloneWithFilter(selectNode.having,
|
|
76
|
+
? HavingNode.cloneWithFilter(selectNode.having, 'And', filter)
|
|
77
|
+
: HavingNode.create(filter),
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
cloneWithOrHaving(selectNode, filter) {
|
|
81
|
+
return freeze({
|
|
82
|
+
...selectNode,
|
|
83
|
+
having: selectNode.having
|
|
84
|
+
? HavingNode.cloneWithFilter(selectNode.having, 'Or', filter)
|
|
77
85
|
: HavingNode.create(filter),
|
|
78
86
|
});
|
|
79
87
|
},
|
|
@@ -83,4 +91,12 @@ export const SelectQueryNode = freeze({
|
|
|
83
91
|
isDistinct: true,
|
|
84
92
|
});
|
|
85
93
|
},
|
|
94
|
+
cloneWithUnion(selectNode, union) {
|
|
95
|
+
return freeze({
|
|
96
|
+
...selectNode,
|
|
97
|
+
union: selectNode.union
|
|
98
|
+
? freeze([...selectNode.union, union])
|
|
99
|
+
: freeze([union]),
|
|
100
|
+
});
|
|
101
|
+
},
|
|
86
102
|
});
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { OperationNode } from './operation-node.js';
|
|
2
|
+
import { RawNode } from './raw-node.js';
|
|
3
|
+
import { SelectQueryNode } from './select-query-node.js';
|
|
4
|
+
export declare type UnionExpressionNode = SelectQueryNode | RawNode;
|
|
5
|
+
export interface UnionNode extends OperationNode {
|
|
6
|
+
readonly kind: 'UnionNode';
|
|
7
|
+
readonly union: UnionExpressionNode;
|
|
8
|
+
readonly all: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* @internal
|
|
12
|
+
*/
|
|
13
|
+
export declare const UnionNode: Readonly<{
|
|
14
|
+
is(node: OperationNode): node is UnionNode;
|
|
15
|
+
create(union: UnionExpressionNode, all: boolean): UnionNode;
|
|
16
|
+
}>;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { freeze } from '../util/object-utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export const UnionNode = freeze({
|
|
6
|
+
is(node) {
|
|
7
|
+
return node.kind === 'UnionNode';
|
|
8
|
+
},
|
|
9
|
+
create(union, all) {
|
|
10
|
+
return freeze({
|
|
11
|
+
kind: 'UnionNode',
|
|
12
|
+
union,
|
|
13
|
+
all,
|
|
14
|
+
});
|
|
15
|
+
},
|
|
16
|
+
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
|
|
2
|
+
import { ParseContext } from './parse-context.js';
|
|
3
|
+
import { ReferenceExpressionOrList } from './reference-parser.js';
|
|
4
|
+
export declare function parseGroupBy(ctx: ParseContext, orderBy: ReferenceExpressionOrList<any, any>): GroupByItemNode[];
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
|
|
2
|
+
import { parseReferenceExpressionOrList, } from './reference-parser.js';
|
|
3
|
+
export function parseGroupBy(ctx, orderBy) {
|
|
4
|
+
return parseReferenceExpressionOrList(ctx, orderBy).map(GroupByItemNode.create);
|
|
5
|
+
}
|
|
@@ -8,7 +8,7 @@ import { PrimitiveValue } from '../util/object-utils.js';
|
|
|
8
8
|
export declare type InsertObject<DB, TB extends keyof DB> = {
|
|
9
9
|
[C in keyof DB[TB]]: InsertValueExpression<DB[TB][C]>;
|
|
10
10
|
};
|
|
11
|
-
export declare type InsertObjectOrList<DB, TB extends keyof DB> = InsertObject<DB, TB> | InsertObject<DB, TB
|
|
11
|
+
export declare type InsertObjectOrList<DB, TB extends keyof DB> = InsertObject<DB, TB> | ReadonlyArray<InsertObject<DB, TB>>;
|
|
12
12
|
declare type InsertValueExpression<T> = T | AnyQueryBuilder | AnyRawBuilder | GeneratedPlaceholder;
|
|
13
13
|
export declare function parseInsertObjectOrList(args: InsertObjectOrList<any, any>): [ReadonlyArray<ColumnNode>, ReadonlyArray<InsertValuesNode>];
|
|
14
14
|
export declare function parseInsertValueExpression(value: InsertValueExpression<PrimitiveValue>): ValueNode | RawNode | SelectQueryNode;
|
|
@@ -3,9 +3,9 @@ import { AnyColumn, AnyColumnWithTable } from '../util/type-utils.js';
|
|
|
3
3
|
import { ExtractAliasFromTableExpression, TableExpressionDatabase } from './table-parser.js';
|
|
4
4
|
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
5
5
|
import { ParseContext } from './parse-context.js';
|
|
6
|
-
export declare type JoinReferenceExpression<DB, TB extends keyof DB,
|
|
7
|
-
export declare type JoinCallbackExpression<DB, TB extends keyof DB,
|
|
8
|
-
declare type AnyJoinColumn<DB, TB extends keyof DB,
|
|
9
|
-
declare type AnyJoinColumnWithTable<DB, TB extends keyof DB,
|
|
6
|
+
export declare type JoinReferenceExpression<DB, TB extends keyof DB, TE> = AnyJoinColumn<DB, TB, TE> | AnyJoinColumnWithTable<DB, TB, TE>;
|
|
7
|
+
export declare type JoinCallbackExpression<DB, TB extends keyof DB, TE> = (join: JoinBuilder<TableExpressionDatabase<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>>) => JoinBuilder<any, any>;
|
|
8
|
+
declare type AnyJoinColumn<DB, TB extends keyof DB, TE> = AnyColumn<TableExpressionDatabase<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>>;
|
|
9
|
+
declare type AnyJoinColumnWithTable<DB, TB extends keyof DB, TE> = AnyColumnWithTable<TableExpressionDatabase<DB, TE>, TB | ExtractAliasFromTableExpression<DB, TE>>;
|
|
10
10
|
export declare function parseJoin(ctx: ParseContext, joinType: JoinType, args: any[]): JoinNode;
|
|
11
11
|
export {};
|
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { RawNode } from '../operation-node/raw-node.js';
|
|
1
|
+
import { OrderByItemNode } from '../operation-node/order-by-item-node.js';
|
|
3
2
|
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
4
3
|
import { ParseContext } from './parse-context.js';
|
|
5
4
|
import { ReferenceExpression } from './reference-parser.js';
|
|
6
5
|
export declare type OrderByDirection = 'asc' | 'desc';
|
|
7
6
|
export declare type OrderByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | keyof O;
|
|
8
7
|
export declare type OrderByDirectionExpression = OrderByDirection | AnyRawBuilder;
|
|
9
|
-
export declare function
|
|
10
|
-
export declare function parseOrderByDirectionExpression(expr?: OrderByDirectionExpression): RawNode | undefined;
|
|
8
|
+
export declare function parseOrderBy(ctx: ParseContext, orderBy: OrderByExpression<any, any, any>, direction?: OrderByDirectionExpression): OrderByItemNode;
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
import { OrderByItemNode } from '../operation-node/order-by-item-node.js';
|
|
1
2
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
2
3
|
import { parseReferenceExpression, } from './reference-parser.js';
|
|
3
|
-
export function
|
|
4
|
+
export function parseOrderBy(ctx, orderBy, direction) {
|
|
5
|
+
return OrderByItemNode.create(parseOrderByExpression(ctx, orderBy), parseOrderByDirectionExpression(direction));
|
|
6
|
+
}
|
|
7
|
+
function parseOrderByExpression(ctx, expr) {
|
|
4
8
|
return parseReferenceExpression(ctx, expr);
|
|
5
9
|
}
|
|
6
|
-
|
|
10
|
+
function parseOrderByDirectionExpression(expr) {
|
|
7
11
|
if (!expr) {
|
|
8
12
|
return undefined;
|
|
9
13
|
}
|
|
@@ -9,7 +9,7 @@ import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
|
9
9
|
import { QueryBuilder } from '../query-builder/query-builder.js';
|
|
10
10
|
import { ParseContext } from './parse-context.js';
|
|
11
11
|
export declare type ReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | AnyQueryBuilder | QueryBuilderFactory<DB, TB> | AnyRawBuilder | RawBuilderFactory<DB, TB> | DynamicReferenceBuilder<any>;
|
|
12
|
-
export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReferenceExpression<DB, TB
|
|
12
|
+
export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
|
|
13
13
|
export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
|
|
14
14
|
export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? ExtractTypeFromStringReference<DB, TB, RE> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends QueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => QueryBuilder<any, any, infer O> ? ValueType<O> : PrimitiveValue;
|
|
15
15
|
declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, S extends string, R = RowType<DB, TB>> = S extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : S extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : S extends keyof R ? R[S] : PrimitiveValue;
|
|
@@ -3,10 +3,10 @@ import { ColumnNode } from '../operation-node/column-node.js';
|
|
|
3
3
|
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
4
4
|
import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
5
5
|
import { TableNode } from '../operation-node/table-node.js';
|
|
6
|
-
import { isFunction, isString } from '../util/object-utils.js';
|
|
6
|
+
import { isFunction, isReadonlyArray, isString, } from '../util/object-utils.js';
|
|
7
7
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
8
8
|
export function parseReferenceExpressionOrList(ctx, arg) {
|
|
9
|
-
if (
|
|
9
|
+
if (isReadonlyArray(arg)) {
|
|
10
10
|
return arg.map((it) => parseReferenceExpression(ctx, it));
|
|
11
11
|
}
|
|
12
12
|
else {
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { UnionNode } from '../operation-node/union-node.js';
|
|
2
|
+
import { QueryBuilder } from '../query-builder/query-builder.js';
|
|
3
|
+
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
|
+
export declare type UnionExpression<DB, O> = QueryBuilder<DB, any, O> | RawBuilder<O>;
|
|
5
|
+
export declare function parseUnion(union: UnionExpression<any, any>, all: boolean): UnionNode;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { QueryNode } from '../operation-node/query-node.js';
|
|
2
|
+
import { UnionNode } from '../operation-node/union-node.js';
|
|
3
|
+
export function parseUnion(union, all) {
|
|
4
|
+
const node = union.toOperationNode();
|
|
5
|
+
if (QueryNode.isMutating(node)) {
|
|
6
|
+
throw new Error("can't combine insert, update or delete queries using union");
|
|
7
|
+
}
|
|
8
|
+
return UnionNode.create(node, all);
|
|
9
|
+
}
|
|
@@ -3,6 +3,6 @@ import { AnyQueryBuilder, AnyRawBuilder, QueryBuilderFactory, RawBuilderFactory
|
|
|
3
3
|
import { ExtractTypeFromReferenceExpression } from './reference-parser.js';
|
|
4
4
|
import { ParseContext } from './parse-context.js';
|
|
5
5
|
export declare type ValueExpression<DB, TB extends keyof DB, RE> = ExtractTypeFromReferenceExpression<DB, TB, RE> | AnyQueryBuilder | QueryBuilderFactory<DB, TB> | AnyRawBuilder | RawBuilderFactory<DB, TB>;
|
|
6
|
-
export declare type ValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpression<DB, TB, RE> | ValueExpression<DB, TB, RE
|
|
6
|
+
export declare type ValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpression<DB, TB, RE> | ReadonlyArray<ValueExpression<DB, TB, RE>>;
|
|
7
7
|
export declare function parseValueExpressionOrList(ctx: ParseContext, arg: ValueExpressionOrList<any, any, any>): ValueExpressionNode;
|
|
8
8
|
export declare function parseValueExpression(ctx: ParseContext, arg: ValueExpression<any, any, any>): ValueExpressionNode;
|