@quillsql/react 2.10.39 → 2.11.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 (123) hide show
  1. package/dist/cjs/Chart.d.ts +4 -0
  2. package/dist/cjs/Chart.d.ts.map +1 -1
  3. package/dist/cjs/Chart.js +5 -5
  4. package/dist/cjs/ChartBuilder.js +2 -2
  5. package/dist/cjs/Context.d.ts +1 -1
  6. package/dist/cjs/Context.d.ts.map +1 -1
  7. package/dist/cjs/Context.js +3 -1
  8. package/dist/cjs/Dashboard.d.ts +3 -1
  9. package/dist/cjs/Dashboard.d.ts.map +1 -1
  10. package/dist/cjs/Dashboard.js +4 -4
  11. package/dist/cjs/QuillProvider.d.ts +3 -1
  12. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  13. package/dist/cjs/QuillProvider.js +2 -2
  14. package/dist/cjs/ReportBuilder.d.ts +40 -40
  15. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  16. package/dist/cjs/ReportBuilder.js +2026 -917
  17. package/dist/cjs/components/Chart/LineChart.d.ts +5 -1
  18. package/dist/cjs/components/Chart/LineChart.d.ts.map +1 -1
  19. package/dist/cjs/components/Chart/LineChart.js +18 -6
  20. package/dist/cjs/components/QuillTable.d.ts +1 -1
  21. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  22. package/dist/cjs/components/QuillTable.js +157 -157
  23. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts +2 -0
  24. package/dist/cjs/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -0
  25. package/dist/cjs/components/ReportBuilder/AddColumnPopover.js +128 -0
  26. package/dist/cjs/components/ReportBuilder/ast.d.ts +512 -0
  27. package/dist/cjs/components/ReportBuilder/ast.d.ts.map +1 -0
  28. package/dist/cjs/components/ReportBuilder/ast.js +210 -0
  29. package/dist/cjs/components/ReportBuilder/bigDateMap.d.ts +7 -0
  30. package/dist/cjs/components/ReportBuilder/bigDateMap.d.ts.map +1 -0
  31. package/dist/cjs/components/ReportBuilder/bigDateMap.js +689 -0
  32. package/dist/cjs/components/ReportBuilder/constants.d.ts +89 -0
  33. package/dist/cjs/components/ReportBuilder/constants.d.ts.map +1 -0
  34. package/dist/cjs/components/ReportBuilder/constants.js +130 -0
  35. package/dist/cjs/components/ReportBuilder/convert.d.ts +41 -0
  36. package/dist/cjs/components/ReportBuilder/convert.d.ts.map +1 -0
  37. package/dist/cjs/components/ReportBuilder/convert.js +730 -0
  38. package/dist/cjs/components/ReportBuilder/operators.d.ts +445 -0
  39. package/dist/cjs/components/ReportBuilder/operators.d.ts.map +1 -0
  40. package/dist/cjs/components/ReportBuilder/operators.js +552 -0
  41. package/dist/cjs/components/ReportBuilder/pivot.d.ts +10 -0
  42. package/dist/cjs/components/ReportBuilder/pivot.d.ts.map +1 -0
  43. package/dist/cjs/components/ReportBuilder/pivot.js +2 -0
  44. package/dist/cjs/components/ReportBuilder/postgres.d.ts +150 -0
  45. package/dist/cjs/components/ReportBuilder/postgres.d.ts.map +1 -0
  46. package/dist/cjs/components/ReportBuilder/postgres.js +365 -0
  47. package/dist/cjs/components/ReportBuilder/schema.d.ts +23 -0
  48. package/dist/cjs/components/ReportBuilder/schema.d.ts.map +1 -0
  49. package/dist/cjs/components/ReportBuilder/schema.js +2 -0
  50. package/dist/cjs/components/ReportBuilder/ui.d.ts +34 -0
  51. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -0
  52. package/dist/cjs/components/ReportBuilder/ui.js +389 -0
  53. package/dist/cjs/components/ReportBuilder/util.d.ts +76 -0
  54. package/dist/cjs/components/ReportBuilder/util.d.ts.map +1 -0
  55. package/dist/cjs/components/ReportBuilder/util.js +648 -0
  56. package/dist/cjs/components/UiComponents.d.ts +15 -2
  57. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  58. package/dist/cjs/components/UiComponents.js +50 -3
  59. package/dist/cjs/utils/crypto.d.ts +1 -1
  60. package/dist/cjs/utils/crypto.d.ts.map +1 -1
  61. package/dist/cjs/utils/crypto.js +9 -5
  62. package/dist/esm/Chart.d.ts +4 -0
  63. package/dist/esm/Chart.d.ts.map +1 -1
  64. package/dist/esm/Chart.js +5 -5
  65. package/dist/esm/ChartBuilder.js +1 -1
  66. package/dist/esm/Context.d.ts +1 -1
  67. package/dist/esm/Context.d.ts.map +1 -1
  68. package/dist/esm/Context.js +3 -1
  69. package/dist/esm/Dashboard.d.ts +3 -1
  70. package/dist/esm/Dashboard.d.ts.map +1 -1
  71. package/dist/esm/Dashboard.js +4 -4
  72. package/dist/esm/QuillProvider.d.ts +3 -1
  73. package/dist/esm/QuillProvider.d.ts.map +1 -1
  74. package/dist/esm/QuillProvider.js +2 -2
  75. package/dist/esm/ReportBuilder.d.ts +40 -40
  76. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  77. package/dist/esm/ReportBuilder.js +2028 -917
  78. package/dist/esm/components/Chart/LineChart.d.ts +5 -1
  79. package/dist/esm/components/Chart/LineChart.d.ts.map +1 -1
  80. package/dist/esm/components/Chart/LineChart.js +18 -6
  81. package/dist/esm/components/QuillTable.d.ts +1 -1
  82. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  83. package/dist/esm/components/QuillTable.js +157 -157
  84. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts +2 -0
  85. package/dist/esm/components/ReportBuilder/AddColumnPopover.d.ts.map +1 -0
  86. package/dist/esm/components/ReportBuilder/AddColumnPopover.js +125 -0
  87. package/dist/esm/components/ReportBuilder/ast.d.ts +512 -0
  88. package/dist/esm/components/ReportBuilder/ast.d.ts.map +1 -0
  89. package/dist/esm/components/ReportBuilder/ast.js +186 -0
  90. package/dist/esm/components/ReportBuilder/bigDateMap.d.ts +7 -0
  91. package/dist/esm/components/ReportBuilder/bigDateMap.d.ts.map +1 -0
  92. package/dist/esm/components/ReportBuilder/bigDateMap.js +686 -0
  93. package/dist/esm/components/ReportBuilder/constants.d.ts +89 -0
  94. package/dist/esm/components/ReportBuilder/constants.d.ts.map +1 -0
  95. package/dist/esm/components/ReportBuilder/constants.js +127 -0
  96. package/dist/esm/components/ReportBuilder/convert.d.ts +41 -0
  97. package/dist/esm/components/ReportBuilder/convert.d.ts.map +1 -0
  98. package/dist/esm/components/ReportBuilder/convert.js +719 -0
  99. package/dist/esm/components/ReportBuilder/operators.d.ts +445 -0
  100. package/dist/esm/components/ReportBuilder/operators.d.ts.map +1 -0
  101. package/dist/esm/components/ReportBuilder/operators.js +548 -0
  102. package/dist/esm/components/ReportBuilder/pivot.d.ts +10 -0
  103. package/dist/esm/components/ReportBuilder/pivot.d.ts.map +1 -0
  104. package/dist/esm/components/ReportBuilder/pivot.js +1 -0
  105. package/dist/esm/components/ReportBuilder/postgres.d.ts +150 -0
  106. package/dist/esm/components/ReportBuilder/postgres.d.ts.map +1 -0
  107. package/dist/esm/components/ReportBuilder/postgres.js +355 -0
  108. package/dist/esm/components/ReportBuilder/schema.d.ts +23 -0
  109. package/dist/esm/components/ReportBuilder/schema.d.ts.map +1 -0
  110. package/dist/esm/components/ReportBuilder/schema.js +1 -0
  111. package/dist/esm/components/ReportBuilder/ui.d.ts +34 -0
  112. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -0
  113. package/dist/esm/components/ReportBuilder/ui.js +366 -0
  114. package/dist/esm/components/ReportBuilder/util.d.ts +76 -0
  115. package/dist/esm/components/ReportBuilder/util.d.ts.map +1 -0
  116. package/dist/esm/components/ReportBuilder/util.js +616 -0
  117. package/dist/esm/components/UiComponents.d.ts +15 -2
  118. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  119. package/dist/esm/components/UiComponents.js +47 -2
  120. package/dist/esm/utils/crypto.d.ts +1 -1
  121. package/dist/esm/utils/crypto.d.ts.map +1 -1
  122. package/dist/esm/utils/crypto.js +9 -5
  123. package/package.json +1 -1
@@ -0,0 +1,686 @@
1
+ // A giant map of partial objects keys to functions that take the root node
2
+ // and return a strinified version of the node. Used to populate the filters.
3
+ /**
4
+ * Trims off the _at suffix of columnNames so "created_at" becomes "created"
5
+ */
6
+ function cleanDateFieldName(fieldName) {
7
+ if (!fieldName)
8
+ return undefined;
9
+ return fieldName.replace('_at', '');
10
+ }
11
+ /**
12
+ * A big map of partial objects and a callback to convert each to a string.
13
+ */
14
+ export const DATE_DESCRIPTION_MAP = {
15
+ [JSON.stringify({
16
+ type: 'binary_expr',
17
+ left: {
18
+ type: 'function',
19
+ name: 'date_trunc',
20
+ args: {
21
+ type: 'expr_list',
22
+ value: [
23
+ { type: 'single_quote_string' },
24
+ { type: 'double_quote_string' },
25
+ ],
26
+ },
27
+ },
28
+ right: {
29
+ type: 'function',
30
+ name: 'date_trunc',
31
+ args: {
32
+ type: 'expr_list',
33
+ value: [
34
+ { type: 'single_quote_string' },
35
+ {
36
+ type: 'binary_expr',
37
+ left: {
38
+ type: 'function',
39
+ },
40
+ right: {
41
+ type: 'interval',
42
+ expr: {
43
+ type: 'single_quote_string',
44
+ },
45
+ },
46
+ },
47
+ ],
48
+ },
49
+ },
50
+ })]: (node) => `${cleanDateFieldName(node.left.args.value[1].value)} in the last ${node.right.args.value[1].right.expr.value}`,
51
+ [JSON.stringify({
52
+ type: 'binary_expr',
53
+ left: {
54
+ type: 'function',
55
+ name: 'date_trunc',
56
+ args: {
57
+ type: 'expr_list',
58
+ value: [{ type: 'single_quote_string' }, { type: 'column_ref' }],
59
+ },
60
+ },
61
+ right: {
62
+ type: 'function',
63
+ name: 'date_trunc',
64
+ args: {
65
+ type: 'expr_list',
66
+ value: [
67
+ { type: 'single_quote_string' },
68
+ {
69
+ type: 'binary_expr',
70
+ left: {
71
+ type: 'function',
72
+ },
73
+ right: {
74
+ type: 'interval',
75
+ expr: {
76
+ type: 'single_quote_string',
77
+ },
78
+ },
79
+ },
80
+ ],
81
+ },
82
+ },
83
+ })]: (node) => `${cleanDateFieldName(node.left.args.value[1].column)} in the last ${node.right.args.value[1].right.expr.value}`,
84
+ [JSON.stringify({
85
+ type: 'binary_expr',
86
+ left: { type: 'column_ref' },
87
+ right: {
88
+ type: 'function',
89
+ name: 'date_trunc',
90
+ args: {
91
+ type: 'expr_list',
92
+ value: [
93
+ { type: 'single_quote_string' },
94
+ {
95
+ type: 'binary_expr',
96
+ left: {
97
+ type: 'function',
98
+ },
99
+ right: {
100
+ type: 'interval',
101
+ expr: {
102
+ type: 'single_quote_string',
103
+ },
104
+ },
105
+ },
106
+ ],
107
+ },
108
+ },
109
+ })]: (node) => `${cleanDateFieldName(node.left.column)} in the last ${node.right.args.value[1].right.expr.value}`,
110
+ [JSON.stringify({
111
+ type: 'binary_expr',
112
+ left: { type: 'double_quote_string' },
113
+ right: {
114
+ type: 'function',
115
+ name: 'date_trunc',
116
+ args: {
117
+ type: 'expr_list',
118
+ value: [
119
+ { type: 'single_quote_string' },
120
+ {
121
+ type: 'binary_expr',
122
+ left: {
123
+ type: 'function',
124
+ },
125
+ right: {
126
+ type: 'interval',
127
+ expr: {
128
+ type: 'single_quote_string',
129
+ },
130
+ },
131
+ },
132
+ ],
133
+ },
134
+ },
135
+ })]: (node) => `${cleanDateFieldName(node.left.value)} in the last ${node.right.args.value[1].right.expr.value}`,
136
+ [JSON.stringify({
137
+ type: 'binary_expr',
138
+ left: { type: 'column_ref' },
139
+ right: {
140
+ type: 'binary_expr',
141
+ operator: '-',
142
+ left: { type: 'function', name: 'CURRENT_DATE' },
143
+ right: { type: 'interval' },
144
+ },
145
+ })]: (node) => `${cleanDateFieldName(node.left.column)} in the last ${node.right.right.expr.value.toLowerCase()}`,
146
+ [JSON.stringify({
147
+ type: 'binary_expr',
148
+ left: {
149
+ type: 'function',
150
+ name: 'date_trunc',
151
+ args: {
152
+ type: 'expr_list',
153
+ value: [
154
+ {
155
+ type: 'single_quote_string',
156
+ },
157
+ {
158
+ type: 'column_ref',
159
+ },
160
+ ],
161
+ },
162
+ },
163
+ right: {
164
+ type: 'function',
165
+ name: 'date_trunc',
166
+ args: {
167
+ type: 'expr_list',
168
+ value: [
169
+ {
170
+ type: 'single_quote_string',
171
+ },
172
+ {
173
+ type: 'binary_expr',
174
+ operator: '-',
175
+ left: {
176
+ type: 'function',
177
+ },
178
+ right: {
179
+ type: 'interval',
180
+ expr: {
181
+ type: 'single_quote_string',
182
+ },
183
+ },
184
+ },
185
+ ],
186
+ },
187
+ },
188
+ })]: (node) => `${cleanDateFieldName(node.left.args.value[0].column)} in the last ${node.right.args.value[1].right.expr.value.toLowerCase()}`,
189
+ [JSON.stringify({
190
+ type: 'binary_expr',
191
+ left: {
192
+ type: 'function',
193
+ name: 'date_trunc',
194
+ args: {
195
+ type: 'expr_list',
196
+ value: [
197
+ {
198
+ type: 'single_quote_string',
199
+ },
200
+ {
201
+ type: 'double_quote_string',
202
+ },
203
+ ],
204
+ },
205
+ },
206
+ right: {
207
+ type: 'binary_expr',
208
+ operator: '-',
209
+ left: {
210
+ type: 'function',
211
+ },
212
+ right: {
213
+ type: 'interval',
214
+ expr: {
215
+ type: 'single_quote_string',
216
+ },
217
+ },
218
+ },
219
+ })]: (node) => `${cleanDateFieldName(node.left.args.value[1].value)} in the last ${node.right.right.expr.value.toLowerCase()}`,
220
+ [JSON.stringify({
221
+ type: 'binary_expr',
222
+ left: {
223
+ type: 'function',
224
+ name: 'date_trunc',
225
+ args: {
226
+ type: 'expr_list',
227
+ value: [
228
+ {
229
+ type: 'single_quote_string',
230
+ },
231
+ {
232
+ type: 'column_ref',
233
+ },
234
+ ],
235
+ },
236
+ },
237
+ right: {
238
+ type: 'binary_expr',
239
+ operator: '-',
240
+ left: {
241
+ type: 'function',
242
+ },
243
+ right: {
244
+ type: 'interval',
245
+ expr: {
246
+ type: 'single_quote_string',
247
+ },
248
+ },
249
+ },
250
+ })]: (node) => `${cleanDateFieldName(node.left.args.value[1].column)} in the last ${node.right.right.expr.value.toLowerCase()}`,
251
+ [JSON.stringify({
252
+ type: 'binary_expr',
253
+ left: {
254
+ type: 'column_ref',
255
+ },
256
+ right: {
257
+ type: 'binary_expr',
258
+ operator: '-',
259
+ left: {
260
+ type: 'function',
261
+ name: 'date_trunc',
262
+ args: {
263
+ type: 'expr_list',
264
+ value: [
265
+ {
266
+ type: 'single_quote_string',
267
+ value: 'month',
268
+ },
269
+ {
270
+ type: 'function',
271
+ name: 'CURRENT_DATE',
272
+ },
273
+ ],
274
+ },
275
+ },
276
+ right: {
277
+ type: 'interval',
278
+ },
279
+ },
280
+ })]: (node) => `${cleanDateFieldName(node.left.column)} in the last ${node.right.right.expr.value.toLowerCase()}`,
281
+ [JSON.stringify({
282
+ type: 'binary_expr',
283
+ left: {
284
+ type: 'column_ref',
285
+ },
286
+ right: {
287
+ type: 'binary_expr',
288
+ operator: '-',
289
+ left: {
290
+ type: 'function',
291
+ name: 'DATE_TRUNC',
292
+ args: {
293
+ type: 'expr_list',
294
+ value: [
295
+ {
296
+ type: 'single_quote_string',
297
+ },
298
+ {
299
+ type: 'function',
300
+ },
301
+ ],
302
+ },
303
+ },
304
+ right: {
305
+ type: 'interval',
306
+ expr: {
307
+ type: 'single_quote_string',
308
+ },
309
+ },
310
+ },
311
+ })]: (node) => `${cleanDateFieldName(node.left.column)} in the last ${node.right.right.expr.value.toLowerCase()}`,
312
+ [JSON.stringify({
313
+ type: 'binary_expr',
314
+ left: {
315
+ type: 'column_ref',
316
+ },
317
+ right: {
318
+ type: 'binary_expr',
319
+ operator: '-',
320
+ left: {
321
+ type: 'function',
322
+ name: 'CURRENT_DATE',
323
+ },
324
+ right: {
325
+ type: 'interval',
326
+ expr: {
327
+ type: 'single_quote_string',
328
+ },
329
+ },
330
+ },
331
+ })]: (node) => `${cleanDateFieldName(node.left.column)} in the last ${node.right.right.expr.value.toLowerCase()}`,
332
+ [JSON.stringify({
333
+ type: 'binary_expr',
334
+ left: {
335
+ type: 'column_ref',
336
+ },
337
+ right: {
338
+ type: 'binary_expr',
339
+ operator: '-',
340
+ left: {
341
+ type: 'function',
342
+ name: 'DATE_TRUNC',
343
+ args: {
344
+ type: 'expr_list',
345
+ value: [
346
+ {
347
+ type: 'single_quote_string',
348
+ },
349
+ {
350
+ type: 'function',
351
+ name: 'CURRENT_DATE',
352
+ },
353
+ ],
354
+ },
355
+ },
356
+ right: {
357
+ type: 'interval',
358
+ expr: {
359
+ type: 'single_quote_string',
360
+ },
361
+ },
362
+ },
363
+ })]: (node) => `${cleanDateFieldName(node.left.column)} in the last ${node.right.right.expr.value.toLowerCase()}`,
364
+ [JSON.stringify({
365
+ type: 'binary_expr',
366
+ left: {
367
+ type: 'function',
368
+ name: 'date_trunc',
369
+ args: {
370
+ type: 'expr_list',
371
+ value: [
372
+ {
373
+ type: 'single_quote_string',
374
+ },
375
+ {
376
+ type: 'column_ref',
377
+ },
378
+ ],
379
+ },
380
+ },
381
+ right: {
382
+ type: 'binary_expr',
383
+ operator: '-',
384
+ left: {
385
+ type: 'function',
386
+ name: 'date_trunc',
387
+ args: {
388
+ type: 'expr_list',
389
+ value: [
390
+ {
391
+ type: 'single_quote_string',
392
+ },
393
+ {
394
+ type: 'function',
395
+ name: 'CURRENT_DATE',
396
+ },
397
+ ],
398
+ },
399
+ },
400
+ right: {
401
+ type: 'interval',
402
+ expr: {
403
+ type: 'single_quote_string',
404
+ },
405
+ },
406
+ },
407
+ })]: (node) => `${cleanDateFieldName(node.left.args.value[1].column)} in the last ${node.right.right.expr.value.toLowerCase()}`,
408
+ [JSON.stringify({
409
+ type: 'binary_expr',
410
+ operator: '>=',
411
+ left: {
412
+ type: 'column_ref',
413
+ },
414
+ right: {
415
+ type: 'function',
416
+ name: 'date_trunc',
417
+ args: {
418
+ type: 'expr_list',
419
+ value: [
420
+ {
421
+ type: 'single_quote_string',
422
+ },
423
+ {
424
+ type: 'binary_expr',
425
+ operator: '-',
426
+ left: {
427
+ type: 'function',
428
+ name: 'CURRENT_DATE',
429
+ },
430
+ right: {
431
+ type: 'interval',
432
+ expr: {
433
+ type: 'single_quote_string',
434
+ },
435
+ },
436
+ },
437
+ ],
438
+ },
439
+ },
440
+ })]: (node) => `${cleanDateFieldName(node?.left?.column ?? 'unknown')} in the last ${node?.right?.args?.value[0]?.value ?? 'period'}`,
441
+ [JSON.stringify({
442
+ type: 'binary_expr',
443
+ operator: '<',
444
+ left: {
445
+ type: 'column_ref',
446
+ },
447
+ right: {
448
+ type: 'function',
449
+ name: 'date_trunc',
450
+ args: {
451
+ type: 'expr_list',
452
+ value: [
453
+ {
454
+ type: 'single_quote_string',
455
+ value: 'month',
456
+ },
457
+ {
458
+ type: 'binary_expr',
459
+ operator: '+',
460
+ left: {
461
+ type: 'function',
462
+ name: 'CURRENT_DATE',
463
+ },
464
+ right: {
465
+ type: 'interval',
466
+ expr: {
467
+ type: 'single_quote_string',
468
+ },
469
+ },
470
+ },
471
+ ],
472
+ },
473
+ },
474
+ })]: (node) => `${cleanDateFieldName(node.left.args.value[1].column)} before the start of the ${node.right.args.value[0].value}, ${node.right.args.value[1].right.expr.value.toLowerCase()} from today`,
475
+ [JSON.stringify({
476
+ type: 'binary_expr',
477
+ operator: '>',
478
+ left: {
479
+ type: 'column_ref',
480
+ },
481
+ right: {
482
+ type: 'binary_expr',
483
+ operator: '-',
484
+ left: {
485
+ type: 'function',
486
+ name: 'CURRENT_DATE',
487
+ },
488
+ right: {
489
+ type: 'interval',
490
+ expr: {
491
+ type: 'single_quote_string',
492
+ },
493
+ unit: 'day',
494
+ },
495
+ },
496
+ })]: (node) => `${cleanDateFieldName(node.left.column)} in the last ${node.right.right.expr.value.toLowerCase()} ${node.right.right.unit.toLowerCase()}${Number(node.right.right.expr.value) > 1 ? 's' : ''}`,
497
+ [JSON.stringify({
498
+ type: 'binary_expr',
499
+ operator: '>=',
500
+ left: {
501
+ type: 'column_ref',
502
+ },
503
+ right: {
504
+ type: 'binary_expr',
505
+ operator: '-',
506
+ left: {
507
+ type: 'function',
508
+ name: 'now',
509
+ },
510
+ right: {
511
+ type: 'interval',
512
+ expr: {
513
+ type: 'single_quote_string',
514
+ },
515
+ },
516
+ },
517
+ })]: (node) => `${cleanDateFieldName(node.left.column)} in the last ${node.right.right.expr.value.toLowerCase()}`,
518
+ [JSON.stringify({
519
+ type: 'binary_expr',
520
+ operator: '>',
521
+ left: {
522
+ type: 'column_ref',
523
+ },
524
+ right: {
525
+ type: 'binary_expr',
526
+ operator: '-',
527
+ left: {
528
+ type: 'function',
529
+ name: 'now',
530
+ },
531
+ right: {
532
+ type: 'interval',
533
+ expr: {
534
+ type: 'single_quote_string',
535
+ },
536
+ },
537
+ },
538
+ })]: (node) => `${cleanDateFieldName(node.left.column)} in the last ${node.right.right.expr.value.toLowerCase()}`,
539
+ [JSON.stringify({
540
+ type: 'binary_expr',
541
+ operator: '>=',
542
+ left: { type: 'double_quote_string' },
543
+ right: {
544
+ type: 'binary_expr',
545
+ operator: '-',
546
+ left: {
547
+ type: 'function',
548
+ name: 'date_trunc',
549
+ args: {
550
+ type: 'expr_list',
551
+ value: [
552
+ { type: 'single_quote_string' },
553
+ { type: 'function', name: 'CURRENT_DATE' },
554
+ ],
555
+ },
556
+ },
557
+ right: {
558
+ type: 'interval',
559
+ expr: { type: 'single_quote_string' },
560
+ },
561
+ },
562
+ })]: (node) => `${cleanDateFieldName(node?.left?.column ?? 'unknown')} ${node?.right?.right?.expr?.value?.toLowerCase() ?? 'time ago'} from start of this ${node?.right?.left?.args?.value[0]?.value?.toLowerCase() ?? 'period'}`,
563
+ [JSON.stringify({
564
+ type: 'binary_expr',
565
+ operator: '>=',
566
+ left: {
567
+ type: 'column_ref',
568
+ },
569
+ right: {
570
+ type: 'function',
571
+ name: 'date_trunc',
572
+ args: {
573
+ type: 'expr_list',
574
+ value: [
575
+ {
576
+ type: 'single_quote_string',
577
+ },
578
+ {
579
+ type: 'function',
580
+ name: 'CURRENT_DATE',
581
+ },
582
+ ],
583
+ },
584
+ },
585
+ })]: (node) => `${cleanDateFieldName(node?.left?.column ?? 'unknown')} this ${node?.right?.args?.value[0]?.value?.toLowerCase() ?? 'period'}`,
586
+ [JSON.stringify({
587
+ type: 'binary_expr',
588
+ operator: '=',
589
+ left: {
590
+ type: 'function',
591
+ name: 'date_trunc',
592
+ args: {
593
+ type: 'expr_list',
594
+ value: [
595
+ {
596
+ type: 'single_quote_string',
597
+ value: 'day',
598
+ },
599
+ {
600
+ type: 'column_ref',
601
+ },
602
+ ],
603
+ },
604
+ },
605
+ right: {
606
+ type: 'function',
607
+ name: 'date_trunc',
608
+ args: {
609
+ type: 'expr_list',
610
+ value: [
611
+ {
612
+ type: 'single_quote_string',
613
+ },
614
+ {
615
+ type: 'function',
616
+ name: 'CURRENT_DATE',
617
+ },
618
+ ],
619
+ },
620
+ },
621
+ })]: (node) => `${cleanDateFieldName(node?.left?.args?.value[1]?.column ?? 'unknown')} today`,
622
+ [JSON.stringify({
623
+ type: 'binary_expr',
624
+ operator: '=',
625
+ left: {
626
+ type: 'function',
627
+ name: 'date_trunc',
628
+ args: {
629
+ type: 'expr_list',
630
+ value: [
631
+ {
632
+ type: 'single_quote_string',
633
+ },
634
+ {
635
+ type: 'column_ref',
636
+ },
637
+ ],
638
+ },
639
+ },
640
+ right: {
641
+ type: 'function',
642
+ name: 'date_trunc',
643
+ args: {
644
+ type: 'expr_list',
645
+ value: [
646
+ {
647
+ type: 'single_quote_string',
648
+ },
649
+ {
650
+ type: 'function',
651
+ name: 'CURRENT_DATE',
652
+ },
653
+ ],
654
+ },
655
+ },
656
+ })]: (node) => `${cleanDateFieldName(node?.left?.args?.value[1]?.column ?? 'unknown')} this ${node?.right?.args?.value[0]?.value?.toLowerCase() ?? 'period'}`,
657
+ [JSON.stringify({
658
+ type: 'binary_expr',
659
+ left: {
660
+ type: 'binary_expr',
661
+ operator: '-',
662
+ left: {
663
+ type: 'function',
664
+ name: 'date_trunc',
665
+ args: {
666
+ type: 'expr_list',
667
+ value: [{ type: 'single_quote_string' }, { type: 'function' }],
668
+ },
669
+ },
670
+ right: {
671
+ type: 'function',
672
+ name: 'date_trunc',
673
+ args: {
674
+ type: 'expr_list',
675
+ value: [
676
+ { type: 'single_quote_string' },
677
+ { type: 'double_quote_string' },
678
+ ],
679
+ },
680
+ },
681
+ },
682
+ right: {
683
+ name: 'number',
684
+ },
685
+ })]: (node) => `${cleanDateFieldName(node.left.right.args.value[1].value)} in the last ${node.right.value} ${node.left.right.args.value[0].value}${node.right.value === 1 ? '' : 's'}`,
686
+ };