kysely 0.19.6 → 0.19.9

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 (34) hide show
  1. package/README.md +11 -6
  2. package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
  3. package/dist/cjs/operation-node/operation-node-transformer.d.ts +5 -2
  4. package/dist/cjs/operation-node/operation-node-transformer.js +134 -122
  5. package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
  6. package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
  7. package/dist/cjs/operation-node/operation-node.d.ts +1 -1
  8. package/dist/cjs/operation-node/select-modifier-node.d.ts +16 -0
  9. package/dist/cjs/operation-node/select-modifier-node.js +24 -0
  10. package/dist/cjs/operation-node/select-query-node.d.ts +5 -5
  11. package/dist/cjs/operation-node/select-query-node.js +11 -9
  12. package/dist/cjs/query-builder/select-query-builder.d.ts +50 -6
  13. package/dist/cjs/query-builder/select-query-builder.js +68 -13
  14. package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -0
  15. package/dist/cjs/query-compiler/default-query-compiler.js +14 -7
  16. package/dist/cjs/util/require-all-props.d.ts +43 -0
  17. package/dist/cjs/util/require-all-props.js +40 -0
  18. package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
  19. package/dist/esm/operation-node/operation-node-transformer.d.ts +5 -2
  20. package/dist/esm/operation-node/operation-node-transformer.js +134 -122
  21. package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
  22. package/dist/esm/operation-node/operation-node-visitor.js +1 -0
  23. package/dist/esm/operation-node/operation-node.d.ts +1 -1
  24. package/dist/esm/operation-node/select-modifier-node.d.ts +16 -0
  25. package/dist/esm/operation-node/select-modifier-node.js +22 -0
  26. package/dist/esm/operation-node/select-query-node.d.ts +5 -5
  27. package/dist/esm/operation-node/select-query-node.js +11 -9
  28. package/dist/esm/query-builder/select-query-builder.d.ts +50 -6
  29. package/dist/esm/query-builder/select-query-builder.js +68 -13
  30. package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -0
  31. package/dist/esm/query-compiler/default-query-compiler.js +14 -7
  32. package/dist/esm/util/require-all-props.d.ts +43 -0
  33. package/dist/esm/util/require-all-props.js +37 -0
  34. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
1
  /// <reference types="./operation-node-transformer.d.ts" />
2
2
  import { freeze } from '../util/object-utils.js';
3
+ import { requireAllProps } from '../util/require-all-props.js';
3
4
  /**
4
5
  * Transforms an operation node tree into another one.
5
6
  *
@@ -98,6 +99,7 @@ export class OperationNodeTransformer {
98
99
  DefaultValueNode: this.transformDefaultValue.bind(this),
99
100
  OnNode: this.transformOn.bind(this),
100
101
  ValuesNode: this.transformValues.bind(this),
102
+ SelectModifierNode: this.transformSelectModifier.bind(this),
101
103
  });
102
104
  transformNode = (node) => {
103
105
  if (!node) {
@@ -115,120 +117,120 @@ export class OperationNodeTransformer {
115
117
  return freeze(list.map(this.transformNode));
116
118
  }
117
119
  transformSelectQuery(node) {
118
- return {
120
+ return requireAllProps({
119
121
  kind: 'SelectQueryNode',
120
122
  from: this.transformNode(node.from),
121
123
  selections: this.transformNodeList(node.selections),
122
124
  distinctOnSelections: this.transformNodeList(node.distinctOnSelections),
123
- distinct: node.distinct,
124
125
  joins: this.transformNodeList(node.joins),
125
126
  groupBy: this.transformNode(node.groupBy),
126
127
  orderBy: this.transformNode(node.orderBy),
127
128
  where: this.transformNode(node.where),
128
- modifiers: node.modifiers,
129
+ frontModifiers: this.transformNodeList(node.frontModifiers),
130
+ endModifiers: this.transformNodeList(node.endModifiers),
129
131
  limit: this.transformNode(node.limit),
130
132
  offset: this.transformNode(node.offset),
131
133
  with: this.transformNode(node.with),
132
134
  having: this.transformNode(node.having),
133
135
  union: this.transformNodeList(node.union),
134
- };
136
+ });
135
137
  }
136
138
  transformSelection(node) {
137
- return {
139
+ return requireAllProps({
138
140
  kind: 'SelectionNode',
139
141
  selection: this.transformNode(node.selection),
140
- };
142
+ });
141
143
  }
142
144
  transformColumn(node) {
143
- return {
145
+ return requireAllProps({
144
146
  kind: 'ColumnNode',
145
147
  column: this.transformNode(node.column),
146
- };
148
+ });
147
149
  }
148
150
  transformAlias(node) {
149
- return {
151
+ return requireAllProps({
150
152
  kind: 'AliasNode',
151
153
  node: this.transformNode(node.node),
152
154
  alias: this.transformNode(node.alias),
153
- };
155
+ });
154
156
  }
155
157
  transformTable(node) {
156
- return {
158
+ return requireAllProps({
157
159
  kind: 'TableNode',
158
160
  schema: this.transformNode(node.schema),
159
161
  table: this.transformNode(node.table),
160
- };
162
+ });
161
163
  }
162
164
  transformFrom(node) {
163
- return {
165
+ return requireAllProps({
164
166
  kind: 'FromNode',
165
167
  froms: this.transformNodeList(node.froms),
166
- };
168
+ });
167
169
  }
168
170
  transformReference(node) {
169
- return {
171
+ return requireAllProps({
170
172
  kind: 'ReferenceNode',
171
173
  table: this.transformNode(node.table),
172
174
  column: this.transformNode(node.column),
173
- };
175
+ });
174
176
  }
175
177
  transformFilter(node) {
176
- return {
178
+ return requireAllProps({
177
179
  kind: 'FilterNode',
178
180
  left: this.transformNode(node.left),
179
181
  op: this.transformNode(node.op),
180
182
  right: this.transformNode(node.right),
181
- };
183
+ });
182
184
  }
183
185
  transformAnd(node) {
184
- return {
186
+ return requireAllProps({
185
187
  kind: 'AndNode',
186
188
  left: this.transformNode(node.left),
187
189
  right: this.transformNode(node.right),
188
- };
190
+ });
189
191
  }
190
192
  transformOr(node) {
191
- return {
193
+ return requireAllProps({
192
194
  kind: 'OrNode',
193
195
  left: this.transformNode(node.left),
194
196
  right: this.transformNode(node.right),
195
- };
197
+ });
196
198
  }
197
199
  transformValueList(node) {
198
- return {
200
+ return requireAllProps({
199
201
  kind: 'ValueListNode',
200
202
  values: this.transformNodeList(node.values),
201
- };
203
+ });
202
204
  }
203
205
  transformParens(node) {
204
- return {
206
+ return requireAllProps({
205
207
  kind: 'ParensNode',
206
208
  node: this.transformNode(node.node),
207
- };
209
+ });
208
210
  }
209
211
  transformJoin(node) {
210
- return {
212
+ return requireAllProps({
211
213
  kind: 'JoinNode',
212
214
  joinType: node.joinType,
213
215
  table: this.transformNode(node.table),
214
216
  on: this.transformNode(node.on),
215
- };
217
+ });
216
218
  }
217
219
  transformRaw(node) {
218
- return {
220
+ return requireAllProps({
219
221
  kind: 'RawNode',
220
222
  sqlFragments: freeze([...node.sqlFragments]),
221
223
  parameters: this.transformNodeList(node.parameters),
222
- };
224
+ });
223
225
  }
224
226
  transformWhere(node) {
225
- return {
227
+ return requireAllProps({
226
228
  kind: 'WhereNode',
227
229
  where: this.transformNode(node.where),
228
- };
230
+ });
229
231
  }
230
232
  transformInsertQuery(node) {
231
- return {
233
+ return requireAllProps({
232
234
  kind: 'InsertQueryNode',
233
235
  into: this.transformNode(node.into),
234
236
  columns: this.transformNodeList(node.columns),
@@ -238,32 +240,34 @@ export class OperationNodeTransformer {
238
240
  onDuplicateKey: this.transformNode(node.onDuplicateKey),
239
241
  with: this.transformNode(node.with),
240
242
  ignore: node.ignore,
241
- };
243
+ });
242
244
  }
243
245
  transformValues(node) {
244
- return {
246
+ return requireAllProps({
245
247
  kind: 'ValuesNode',
246
248
  values: this.transformNodeList(node.values),
247
- };
249
+ });
248
250
  }
249
251
  transformDeleteQuery(node) {
250
- return {
252
+ return requireAllProps({
251
253
  kind: 'DeleteQueryNode',
252
254
  from: this.transformNode(node.from),
253
255
  joins: this.transformNodeList(node.joins),
254
256
  where: this.transformNode(node.where),
255
257
  returning: this.transformNode(node.returning),
256
258
  with: this.transformNode(node.with),
257
- };
259
+ orderBy: this.transformNode(node.orderBy),
260
+ limit: this.transformNode(node.limit),
261
+ });
258
262
  }
259
263
  transformReturning(node) {
260
- return {
264
+ return requireAllProps({
261
265
  kind: 'ReturningNode',
262
266
  selections: this.transformNodeList(node.selections),
263
- };
267
+ });
264
268
  }
265
269
  transformCreateTable(node) {
266
- return {
270
+ return requireAllProps({
267
271
  kind: 'CreateTableNode',
268
272
  table: this.transformNode(node.table),
269
273
  columns: this.transformNodeList(node.columns),
@@ -271,10 +275,10 @@ export class OperationNodeTransformer {
271
275
  temporary: node.temporary,
272
276
  ifNotExists: node.ifNotExists,
273
277
  onCommit: node.onCommit,
274
- };
278
+ });
275
279
  }
276
280
  transformColumnDefinition(node) {
277
- return {
281
+ return requireAllProps({
278
282
  kind: 'ColumnDefinitionNode',
279
283
  column: this.transformNode(node.column),
280
284
  dataType: this.transformNode(node.dataType),
@@ -287,48 +291,48 @@ export class OperationNodeTransformer {
287
291
  defaultTo: this.transformNode(node.defaultTo),
288
292
  check: this.transformNode(node.check),
289
293
  generated: this.transformNode(node.generated),
290
- };
294
+ });
291
295
  }
292
296
  transformAddColumn(node) {
293
- return {
297
+ return requireAllProps({
294
298
  kind: 'AddColumnNode',
295
299
  column: this.transformNode(node.column),
296
- };
300
+ });
297
301
  }
298
302
  transformDropTable(node) {
299
- return {
303
+ return requireAllProps({
300
304
  kind: 'DropTableNode',
301
305
  table: this.transformNode(node.table),
302
306
  ifExists: node.ifExists,
303
- };
307
+ });
304
308
  }
305
309
  transformOrderBy(node) {
306
- return {
310
+ return requireAllProps({
307
311
  kind: 'OrderByNode',
308
312
  items: this.transformNodeList(node.items),
309
- };
313
+ });
310
314
  }
311
315
  transformOrderByItem(node) {
312
- return {
316
+ return requireAllProps({
313
317
  kind: 'OrderByItemNode',
314
318
  orderBy: this.transformNode(node.orderBy),
315
319
  direction: this.transformNode(node.direction),
316
- };
320
+ });
317
321
  }
318
322
  transformGroupBy(node) {
319
- return {
323
+ return requireAllProps({
320
324
  kind: 'GroupByNode',
321
325
  items: this.transformNodeList(node.items),
322
- };
326
+ });
323
327
  }
324
328
  transformGroupByItem(node) {
325
- return {
329
+ return requireAllProps({
326
330
  kind: 'GroupByItemNode',
327
331
  groupBy: this.transformNode(node.groupBy),
328
- };
332
+ });
329
333
  }
330
334
  transformUpdateQuery(node) {
331
- return {
335
+ return requireAllProps({
332
336
  kind: 'UpdateQueryNode',
333
337
  table: this.transformNode(node.table),
334
338
  from: this.transformNode(node.from),
@@ -337,29 +341,29 @@ export class OperationNodeTransformer {
337
341
  updates: this.transformNodeList(node.updates),
338
342
  returning: this.transformNode(node.returning),
339
343
  with: this.transformNode(node.with),
340
- };
344
+ });
341
345
  }
342
346
  transformColumnUpdate(node) {
343
- return {
347
+ return requireAllProps({
344
348
  kind: 'ColumnUpdateNode',
345
349
  column: this.transformNode(node.column),
346
350
  value: this.transformNode(node.value),
347
- };
351
+ });
348
352
  }
349
353
  transformLimit(node) {
350
- return {
354
+ return requireAllProps({
351
355
  kind: 'LimitNode',
352
356
  limit: this.transformNode(node.limit),
353
- };
357
+ });
354
358
  }
355
359
  transformOffset(node) {
356
- return {
360
+ return requireAllProps({
357
361
  kind: 'OffsetNode',
358
362
  offset: this.transformNode(node.offset),
359
- };
363
+ });
360
364
  }
361
365
  transformOnConflict(node) {
362
- return {
366
+ return requireAllProps({
363
367
  kind: 'OnConflictNode',
364
368
  columns: this.transformNodeList(node.columns),
365
369
  constraint: this.transformNode(node.constraint),
@@ -368,127 +372,128 @@ export class OperationNodeTransformer {
368
372
  updates: this.transformNodeList(node.updates),
369
373
  updateWhere: this.transformNode(node.updateWhere),
370
374
  doNothing: node.doNothing,
371
- };
375
+ });
372
376
  }
373
377
  transformOnDuplicateKey(node) {
374
- return {
378
+ return requireAllProps({
375
379
  kind: 'OnDuplicateKeyNode',
376
380
  updates: this.transformNodeList(node.updates),
377
- };
381
+ });
378
382
  }
379
383
  transformCreateIndex(node) {
380
- return {
384
+ return requireAllProps({
381
385
  kind: 'CreateIndexNode',
382
386
  name: this.transformNode(node.name),
383
387
  table: this.transformNode(node.table),
384
388
  expression: this.transformNode(node.expression),
385
389
  unique: node.unique,
386
390
  using: this.transformNode(node.using),
387
- };
391
+ });
388
392
  }
389
393
  transformList(node) {
390
- return {
394
+ return requireAllProps({
391
395
  kind: 'ListNode',
392
396
  items: this.transformNodeList(node.items),
393
- };
397
+ });
394
398
  }
395
399
  transformDropIndex(node) {
396
- return {
400
+ return requireAllProps({
397
401
  kind: 'DropIndexNode',
398
402
  name: this.transformNode(node.name),
399
403
  table: this.transformNode(node.table),
400
404
  ifExists: node.ifExists,
401
- };
405
+ });
402
406
  }
403
407
  transformPrimaryKeyConstraint(node) {
404
- return {
408
+ return requireAllProps({
405
409
  kind: 'PrimaryKeyConstraintNode',
406
410
  columns: this.transformNodeList(node.columns),
407
411
  name: this.transformNode(node.name),
408
- };
412
+ });
409
413
  }
410
414
  transformUniqueConstraint(node) {
411
- return {
415
+ return requireAllProps({
412
416
  kind: 'UniqueConstraintNode',
413
417
  columns: this.transformNodeList(node.columns),
414
418
  name: this.transformNode(node.name),
415
- };
419
+ });
416
420
  }
417
421
  transformForeignKeyConstraint(node) {
418
- return {
422
+ return requireAllProps({
419
423
  kind: 'ForeignKeyConstraintNode',
420
424
  columns: this.transformNodeList(node.columns),
421
425
  references: this.transformNode(node.references),
422
426
  name: this.transformNode(node.name),
423
427
  onDelete: node.onDelete,
424
428
  onUpdate: node.onUpdate,
425
- };
429
+ });
426
430
  }
427
431
  transformUnion(node) {
428
- return {
432
+ return requireAllProps({
429
433
  kind: 'UnionNode',
430
434
  union: this.transformNode(node.union),
431
435
  all: node.all,
432
- };
436
+ });
433
437
  }
434
438
  transformReferences(node) {
435
- return {
439
+ return requireAllProps({
436
440
  kind: 'ReferencesNode',
437
441
  table: this.transformNode(node.table),
438
442
  columns: this.transformNodeList(node.columns),
439
443
  onDelete: node.onDelete,
440
444
  onUpdate: node.onUpdate,
441
- };
445
+ });
442
446
  }
443
447
  transformCheckConstraint(node) {
444
- return {
448
+ return requireAllProps({
445
449
  kind: 'CheckConstraintNode',
446
450
  expression: this.transformNode(node.expression),
447
451
  name: this.transformNode(node.name),
448
- };
452
+ });
449
453
  }
450
454
  transformWith(node) {
451
- return {
455
+ return requireAllProps({
452
456
  kind: 'WithNode',
453
457
  expressions: this.transformNodeList(node.expressions),
454
458
  recursive: node.recursive,
455
- };
459
+ });
456
460
  }
457
461
  transformCommonTableExpression(node) {
458
- return {
462
+ return requireAllProps({
459
463
  kind: 'CommonTableExpressionNode',
460
464
  name: this.transformNode(node.name),
461
465
  expression: this.transformNode(node.expression),
462
- };
466
+ });
463
467
  }
464
468
  transformCommonTableExpressionName(node) {
465
- return {
469
+ return requireAllProps({
466
470
  kind: 'CommonTableExpressionNameNode',
467
471
  table: this.transformNode(node.table),
468
472
  columns: this.transformNodeList(node.columns),
469
- };
473
+ });
470
474
  }
471
475
  transformHaving(node) {
472
- return {
476
+ return requireAllProps({
473
477
  kind: 'HavingNode',
474
478
  having: this.transformNode(node.having),
475
- };
479
+ });
476
480
  }
477
481
  transformCreateSchema(node) {
478
- return {
482
+ return requireAllProps({
479
483
  kind: 'CreateSchemaNode',
480
484
  schema: this.transformNode(node.schema),
481
- };
485
+ ifNotExists: node.ifNotExists,
486
+ });
482
487
  }
483
488
  transformDropSchema(node) {
484
- return {
489
+ return requireAllProps({
485
490
  kind: 'DropSchemaNode',
486
491
  schema: this.transformNode(node.schema),
487
492
  ifExists: node.ifExists,
488
- };
493
+ });
489
494
  }
490
495
  transformAlterTable(node) {
491
- return {
496
+ return requireAllProps({
492
497
  kind: 'AlterTableNode',
493
498
  table: this.transformNode(node.table),
494
499
  renameTo: this.transformNode(node.renameTo),
@@ -500,23 +505,23 @@ export class OperationNodeTransformer {
500
505
  modifyColumn: this.transformNode(node.modifyColumn),
501
506
  addConstraint: this.transformNode(node.addConstraint),
502
507
  dropConstraint: this.transformNode(node.dropConstraint),
503
- };
508
+ });
504
509
  }
505
510
  transformDropColumn(node) {
506
- return {
511
+ return requireAllProps({
507
512
  kind: 'DropColumnNode',
508
513
  column: this.transformNode(node.column),
509
- };
514
+ });
510
515
  }
511
516
  transformRenameColumn(node) {
512
- return {
517
+ return requireAllProps({
513
518
  kind: 'RenameColumnNode',
514
519
  column: this.transformNode(node.column),
515
520
  renameTo: this.transformNode(node.renameTo),
516
- };
521
+ });
517
522
  }
518
523
  transformAlterColumn(node) {
519
- return {
524
+ return requireAllProps({
520
525
  kind: 'AlterColumnNode',
521
526
  column: this.transformNode(node.column),
522
527
  dataType: this.transformNode(node.dataType),
@@ -525,30 +530,30 @@ export class OperationNodeTransformer {
525
530
  dropDefault: node.dropDefault,
526
531
  setNotNull: node.setNotNull,
527
532
  dropNotNull: node.dropNotNull,
528
- };
533
+ });
529
534
  }
530
535
  transformModifyColumn(node) {
531
- return {
536
+ return requireAllProps({
532
537
  kind: 'ModifyColumnNode',
533
538
  column: this.transformNode(node.column),
534
- };
539
+ });
535
540
  }
536
541
  transformAddConstraint(node) {
537
- return {
542
+ return requireAllProps({
538
543
  kind: 'AddConstraintNode',
539
544
  constraint: this.transformNode(node.constraint),
540
- };
545
+ });
541
546
  }
542
547
  transformDropConstraint(node) {
543
- return {
548
+ return requireAllProps({
544
549
  kind: 'DropConstraintNode',
545
550
  constraintName: this.transformNode(node.constraintName),
546
551
  ifExists: node.ifExists,
547
552
  modifier: node.modifier,
548
- };
553
+ });
549
554
  }
550
555
  transformCreateView(node) {
551
- return {
556
+ return requireAllProps({
552
557
  kind: 'CreateViewNode',
553
558
  name: this.transformNode(node.name),
554
559
  temporary: node.temporary,
@@ -557,37 +562,44 @@ export class OperationNodeTransformer {
557
562
  materialized: node.materialized,
558
563
  columns: this.transformNodeList(node.columns),
559
564
  as: this.transformNode(node.as),
560
- };
565
+ });
561
566
  }
562
567
  transformDropView(node) {
563
- return {
568
+ return requireAllProps({
564
569
  kind: 'DropViewNode',
565
570
  name: this.transformNode(node.name),
566
571
  ifExists: node.ifExists,
567
572
  materialized: node.materialized,
568
- };
573
+ });
569
574
  }
570
575
  transformGenerated(node) {
571
- return {
576
+ return requireAllProps({
572
577
  kind: 'GeneratedNode',
573
578
  byDefault: node.byDefault,
574
579
  always: node.always,
575
580
  identity: node.identity,
576
581
  stored: node.stored,
577
582
  expression: this.transformNode(node.expression),
578
- };
583
+ });
579
584
  }
580
585
  transformDefaultValue(node) {
581
- return {
586
+ return requireAllProps({
582
587
  kind: 'DefaultValueNode',
583
588
  defaultValue: this.transformNode(node.defaultValue),
584
- };
589
+ });
585
590
  }
586
591
  transformOn(node) {
587
- return {
592
+ return requireAllProps({
588
593
  kind: 'OnNode',
589
594
  on: this.transformNode(node.on),
590
- };
595
+ });
596
+ }
597
+ transformSelectModifier(node) {
598
+ return requireAllProps({
599
+ kind: 'SelectModifierNode',
600
+ modifier: node.modifier,
601
+ rawModifier: this.transformNode(node.rawModifier),
602
+ });
591
603
  }
592
604
  transformDataType(node) {
593
605
  // An Object.freezed leaf node. No need to clone.
@@ -65,6 +65,7 @@ import { GeneratedNode } from './generated-node.js';
65
65
  import { DefaultValueNode } from './default-value-node.js';
66
66
  import { OnNode } from './on-node.js';
67
67
  import { ValuesNode } from './values-node.js';
68
+ import { SelectModifierNode } from './select-modifier-node.js';
68
69
  export declare abstract class OperationNodeVisitor {
69
70
  #private;
70
71
  protected readonly nodeStack: OperationNode[];
@@ -136,4 +137,5 @@ export declare abstract class OperationNodeVisitor {
136
137
  protected abstract visitDefaultValue(node: DefaultValueNode): void;
137
138
  protected abstract visitOn(node: OnNode): void;
138
139
  protected abstract visitValues(node: ValuesNode): void;
140
+ protected abstract visitSelectModifier(node: SelectModifierNode): void;
139
141
  }
@@ -72,6 +72,7 @@ export class OperationNodeVisitor {
72
72
  DefaultValueNode: this.visitDefaultValue.bind(this),
73
73
  OnNode: this.visitOn.bind(this),
74
74
  ValuesNode: this.visitValues.bind(this),
75
+ SelectModifierNode: this.visitSelectModifier.bind(this),
75
76
  });
76
77
  visitNode = (node) => {
77
78
  this.nodeStack.push(node);
@@ -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' | 'UnionNode' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode';
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' | 'CreateViewNode' | 'DropViewNode' | 'GeneratedNode' | 'DefaultValueNode' | 'OnNode' | 'ValuesNode' | 'CommonTableExpressionNameNode' | 'SelectModifierNode';
2
2
  export interface OperationNode {
3
3
  readonly kind: OperationNodeKind;
4
4
  }
@@ -0,0 +1,16 @@
1
+ import { OperationNode } from './operation-node.js';
2
+ import { RawNode } from './raw-node.js';
3
+ export declare type SelectModifier = 'ForUpdate' | 'ForNoKeyUpdate' | 'ForShare' | 'ForKeyShare' | 'NoWait' | 'SkipLocked' | 'Distinct';
4
+ export interface SelectModifierNode extends OperationNode {
5
+ readonly kind: 'SelectModifierNode';
6
+ readonly modifier?: SelectModifier;
7
+ readonly rawModifier?: RawNode;
8
+ }
9
+ /**
10
+ * @internal
11
+ */
12
+ export declare const SelectModifierNode: Readonly<{
13
+ is(node: OperationNode): node is SelectModifierNode;
14
+ create(modifier: SelectModifier): SelectModifierNode;
15
+ createWithRaw(modifier: RawNode): SelectModifierNode;
16
+ }>;
@@ -0,0 +1,22 @@
1
+ /// <reference types="./select-modifier-node.d.ts" />
2
+ import { freeze } from '../util/object-utils.js';
3
+ /**
4
+ * @internal
5
+ */
6
+ export const SelectModifierNode = freeze({
7
+ is(node) {
8
+ return node.kind === 'SelectModifierNode';
9
+ },
10
+ create(modifier) {
11
+ return freeze({
12
+ kind: 'SelectModifierNode',
13
+ modifier,
14
+ });
15
+ },
16
+ createWithRaw(modifier) {
17
+ return freeze({
18
+ kind: 'SelectModifierNode',
19
+ rawModifier: modifier,
20
+ });
21
+ },
22
+ });