data-finder-ts 0.1.3 → 0.1.4

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 (52) hide show
  1. package/README.md +17 -55
  2. package/dist/{chunk-V647VNMY.js → chunk-4JVW4TAB.js} +59 -14
  3. package/dist/chunk-4JVW4TAB.js.map +1 -0
  4. package/dist/{chunk-5K2Z3YDY.js → chunk-4LNZV6EN.js} +138 -31
  5. package/dist/chunk-4LNZV6EN.js.map +1 -0
  6. package/dist/{chunk-6QTCGJWX.js → chunk-FJYA2ASS.js} +46 -8
  7. package/dist/chunk-FJYA2ASS.js.map +1 -0
  8. package/dist/{chunk-DFYZVBII.js → chunk-MH4XMYVB.js} +186 -142
  9. package/dist/chunk-MH4XMYVB.js.map +1 -0
  10. package/dist/{chunk-EYXBYV2X.js → chunk-PMPLCEWQ.js} +2 -2
  11. package/dist/{chunk-3SSWFES4.js → chunk-UYMOE6YU.js} +64 -3
  12. package/dist/chunk-UYMOE6YU.js.map +1 -0
  13. package/dist/datafinder/attribute.cjs +64 -13
  14. package/dist/datafinder/attribute.cjs.map +1 -1
  15. package/dist/datafinder/attribute.d.cts +48 -7
  16. package/dist/datafinder/attribute.d.ts +48 -7
  17. package/dist/datafinder/attribute.js +2 -2
  18. package/dist/datafinder/runner.cjs +389 -140
  19. package/dist/datafinder/runner.cjs.map +1 -1
  20. package/dist/datafinder/runner.d.cts +14 -3
  21. package/dist/datafinder/runner.d.ts +14 -3
  22. package/dist/datafinder/runner.js +12 -6
  23. package/dist/datafinder/sql-generator.cjs +344 -138
  24. package/dist/datafinder/sql-generator.cjs.map +1 -1
  25. package/dist/datafinder/sql-generator.d.cts +4 -13
  26. package/dist/datafinder/sql-generator.d.ts +4 -13
  27. package/dist/datafinder/sql-generator.js +5 -7
  28. package/dist/datafinder/typed-attributes.cjs +199 -41
  29. package/dist/datafinder/typed-attributes.cjs.map +1 -1
  30. package/dist/datafinder/typed-attributes.d.cts +120 -13
  31. package/dist/datafinder/typed-attributes.d.ts +120 -13
  32. package/dist/datafinder/typed-attributes.js +3 -3
  33. package/dist/index.cjs +507 -176
  34. package/dist/index.cjs.map +1 -1
  35. package/dist/index.d.cts +16 -15
  36. package/dist/index.d.ts +16 -15
  37. package/dist/index.js +49 -9
  38. package/dist/index.js.map +1 -1
  39. package/dist/model/milestoning.cjs.map +1 -1
  40. package/dist/model/milestoning.js +2 -2
  41. package/dist/model/relational.cjs +66 -1
  42. package/dist/model/relational.cjs.map +1 -1
  43. package/dist/model/relational.d.cts +47 -2
  44. package/dist/model/relational.d.ts +47 -2
  45. package/dist/model/relational.js +9 -1
  46. package/package.json +4 -2
  47. package/dist/chunk-3SSWFES4.js.map +0 -1
  48. package/dist/chunk-5K2Z3YDY.js.map +0 -1
  49. package/dist/chunk-6QTCGJWX.js.map +0 -1
  50. package/dist/chunk-DFYZVBII.js.map +0 -1
  51. package/dist/chunk-V647VNMY.js.map +0 -1
  52. /package/dist/{chunk-EYXBYV2X.js.map → chunk-PMPLCEWQ.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Attribute
3
- } from "./chunk-V647VNMY.js";
3
+ } from "./chunk-4JVW4TAB.js";
4
4
  import {
5
5
  AggregateOperation,
6
6
  BooleanConstantOperation,
@@ -15,187 +15,240 @@ import {
15
15
  IntegerConstantOperation,
16
16
  ScalarFunctionOperation,
17
17
  StringConstantOperation
18
- } from "./chunk-3SSWFES4.js";
18
+ } from "./chunk-UYMOE6YU.js";
19
19
 
20
20
  // src/datafinder/typed-attributes.ts
21
21
  var StringAttribute = class extends Attribute {
22
- constructor(displayName, columnName, columnDbType, owner, parent) {
23
- super(displayName, columnName, columnDbType, owner, parent);
22
+ constructor(displayName, columnName, columnDbType, owner, parent, embedded) {
23
+ super(displayName, columnName, columnDbType, owner, parent, embedded);
24
24
  }
25
- upper() {
25
+ /** Convert every character to uppercase. */
26
+ toUpperCase() {
26
27
  return new ScalarFunctionOperation(this.cwj(), "UPPER" /* UPPER */, "Upper " + this.displayName());
27
28
  }
28
- lower() {
29
+ /** Convert every character to lowercase. */
30
+ toLowerCase() {
29
31
  return new ScalarFunctionOperation(this.cwj(), "LOWER" /* LOWER */, "Lower " + this.displayName());
30
32
  }
31
- strip() {
32
- return new ScalarFunctionOperation(this.cwj(), "TRIM" /* TRIM */, "Strip " + this.displayName());
33
+ /** Remove leading and trailing whitespace. */
34
+ trim() {
35
+ return new ScalarFunctionOperation(this.cwj(), "TRIM" /* TRIM */, "Trim " + this.displayName());
33
36
  }
34
- lstrip() {
35
- return new ScalarFunctionOperation(this.cwj(), "LTRIM" /* LTRIM */, "LStrip " + this.displayName());
37
+ /** Remove leading whitespace. */
38
+ trimStart() {
39
+ return new ScalarFunctionOperation(this.cwj(), "LTRIM" /* LTRIM */, "Trim Start " + this.displayName());
36
40
  }
37
- rstrip() {
38
- return new ScalarFunctionOperation(this.cwj(), "RTRIM" /* RTRIM */, "RStrip " + this.displayName());
41
+ /** Remove trailing whitespace. */
42
+ trimEnd() {
43
+ return new ScalarFunctionOperation(this.cwj(), "RTRIM" /* RTRIM */, "Trim End " + this.displayName());
39
44
  }
45
+ /** Return the number of characters in the string. */
40
46
  length() {
41
47
  return new ScalarFunctionOperation(this.cwj(), "LENGTH" /* LENGTH */, "Length " + this.displayName());
42
48
  }
49
+ /** Return the string with characters in reverse order. */
43
50
  reverse() {
44
51
  return new ScalarFunctionOperation(this.cwj(), "REVERSE" /* REVERSE */, "Reverse " + this.displayName());
45
52
  }
53
+ /** Return the first `n` characters. */
46
54
  left(n) {
47
55
  return new ScalarFunctionOperation(this.cwj(), "LEFT" /* LEFT */, "Left " + this.displayName(), n);
48
56
  }
57
+ /** Return the last `n` characters. */
49
58
  right(n) {
50
59
  return new ScalarFunctionOperation(this.cwj(), "RIGHT" /* RIGHT */, "Right " + this.displayName(), n);
51
60
  }
61
+ /** Return the string repeated `n` times. */
52
62
  repeat(n) {
53
63
  return new ScalarFunctionOperation(this.cwj(), "REPEAT" /* REPEAT */, "Repeat " + this.displayName(), n);
54
64
  }
65
+ /** Replace all occurrences of `fromStr` with `toStr`. */
55
66
  replace(fromStr, toStr) {
56
67
  return new ScalarFunctionOperation(this.cwj(), "REPLACE" /* REPLACE */, "Replace " + this.displayName(), void 0, [fromStr, toStr]);
57
68
  }
69
+ /**
70
+ * Extract a portion of the string.
71
+ * `start` is zero-based (following Python convention); `length` is optional.
72
+ */
58
73
  substring(start, length) {
59
74
  const args = length !== void 0 ? [start + 1, length] : [start + 1];
60
75
  return new ScalarFunctionOperation(this.cwj(), "SUBSTRING" /* SUBSTRING */, "Substring " + this.displayName(), void 0, args);
61
76
  }
77
+ /** Filter to rows where this attribute equals `value`. */
62
78
  eq(value) {
63
79
  return new ComparisonOperation(this.cwj(), "EQUAL" /* EQUAL */, new StringConstantOperation(value));
64
80
  }
81
+ /** Filter to rows where this attribute does not equal `value`. */
65
82
  ne(value) {
66
83
  return new ComparisonOperation(this.cwj(), "NOT_EQUAL" /* NOT_EQUAL */, new StringConstantOperation(value));
67
84
  }
85
+ /** Filter to rows where this attribute contains `value` as a substring. */
68
86
  contains(value) {
69
87
  return new ComparisonOperation(this.cwj(), "LIKE" /* LIKE */, new StringConstantOperation(`%${value}%`));
70
88
  }
89
+ /** Filter to rows where this attribute begins with `prefix`. */
71
90
  startsWith(prefix) {
72
91
  return new ComparisonOperation(this.cwj(), "LIKE" /* LIKE */, new StringConstantOperation(`${prefix}%`));
73
92
  }
93
+ /** Filter to rows where this attribute ends with `suffix`. */
74
94
  endsWith(suffix) {
75
95
  return new ComparisonOperation(this.cwj(), "LIKE" /* LIKE */, new StringConstantOperation(`%${suffix}`));
76
96
  }
97
+ /** Filter to rows where this attribute does not contain `value` as a substring. */
77
98
  notContains(value) {
78
99
  return new ComparisonOperation(this.cwj(), "NOT_LIKE" /* NOT_LIKE */, new StringConstantOperation(`%${value}%`));
79
100
  }
80
101
  };
81
102
  var NumericAttribute = class extends Attribute {
82
- constructor(displayName, columnName, columnDbType, owner, parent) {
83
- super(displayName, columnName, columnDbType, owner, parent);
103
+ constructor(displayName, columnName, columnDbType, owner, parent, embedded) {
104
+ super(displayName, columnName, columnDbType, owner, parent, embedded);
84
105
  }
106
+ /** Sum of all values in the group. */
85
107
  sum() {
86
- return new AggregateOperation(this.cwj(), "SUM" /* SUM */, this.displayName() + " Sum");
108
+ return new AggregateOperation(this.cwj(), "SUM" /* SUM */, "Sum " + this.displayName());
87
109
  }
110
+ /** Smallest value in the group. */
88
111
  min() {
89
- return new AggregateOperation(this.cwj(), "MIN" /* MIN */, this.displayName() + " Min");
112
+ return new AggregateOperation(this.cwj(), "MIN" /* MIN */, "Min " + this.displayName());
90
113
  }
114
+ /** Largest value in the group. */
91
115
  max() {
92
- return new AggregateOperation(this.cwj(), "MAX" /* MAX */, this.displayName() + " Max");
116
+ return new AggregateOperation(this.cwj(), "MAX" /* MAX */, "Max " + this.displayName());
93
117
  }
118
+ /** Arithmetic mean of all values in the group. */
94
119
  average() {
95
- return new AggregateOperation(this.cwj(), "AVERAGE" /* AVERAGE */, this.displayName() + " Average");
120
+ return new AggregateOperation(this.cwj(), "AVERAGE" /* AVERAGE */, "Average " + this.displayName());
96
121
  }
122
+ /** Absolute value (distance from zero, always non-negative). */
97
123
  abs() {
98
124
  return new ScalarFunctionOperation(this.cwj(), "ABS" /* ABS */, "Abs " + this.displayName());
99
125
  }
126
+ /** Round up to the nearest integer. */
100
127
  ceil() {
101
128
  return new ScalarFunctionOperation(this.cwj(), "CEILING" /* CEILING */, "Ceil " + this.displayName());
102
129
  }
130
+ /** Round down to the nearest integer. */
103
131
  floor() {
104
132
  return new ScalarFunctionOperation(this.cwj(), "FLOOR" /* FLOOR */, "Floor " + this.displayName());
105
133
  }
134
+ /** Square root. */
106
135
  sqrt() {
107
136
  return new ScalarFunctionOperation(this.cwj(), "SQRT" /* SQRT */, "Sqrt " + this.displayName());
108
137
  }
138
+ /** Remainder after dividing by `n`. */
109
139
  mod(n) {
110
140
  return new ScalarFunctionOperation(this.cwj(), "MOD" /* MOD */, "Mod " + this.displayName(), n);
111
141
  }
142
+ /** Raise to the power of `n`. */
112
143
  power(n) {
113
144
  return new ScalarFunctionOperation(this.cwj(), "POWER" /* POWER */, "Power " + this.displayName(), n);
114
145
  }
146
+ /** Round to `d` decimal places, or to the nearest integer when `d` is omitted. */
115
147
  round(d) {
116
148
  return new ScalarFunctionOperation(this.cwj(), "ROUND" /* ROUND */, "Round " + this.displayName(), d);
117
149
  }
118
150
  };
119
151
  var DoubleAttribute = class extends NumericAttribute {
120
- constructor(displayName, columnName, columnDbType, owner, parent) {
121
- super(displayName, columnName, columnDbType, owner, parent);
152
+ constructor(displayName, columnName, columnDbType, owner, parent, embedded) {
153
+ super(displayName, columnName, columnDbType, owner, parent, embedded);
122
154
  }
155
+ /** Filter to rows where this attribute equals `value`. */
123
156
  eq(value) {
124
157
  return new ComparisonOperation(this.cwj(), "EQUAL" /* EQUAL */, new FloatConstantOperation(value));
125
158
  }
159
+ /** Filter to rows where this attribute does not equal `value`. */
126
160
  ne(value) {
127
161
  return new ComparisonOperation(this.cwj(), "NOT_EQUAL" /* NOT_EQUAL */, new FloatConstantOperation(value));
128
162
  }
163
+ /** Filter to rows where this attribute is greater than `value`. */
129
164
  gt(value) {
130
165
  return new ComparisonOperation(this.cwj(), "GREATER_THAN" /* GREATER_THAN */, new FloatConstantOperation(value));
131
166
  }
167
+ /** Filter to rows where this attribute is less than `value`. */
132
168
  lt(value) {
133
169
  return new ComparisonOperation(this.cwj(), "LESS_THAN" /* LESS_THAN */, new FloatConstantOperation(value));
134
170
  }
171
+ /** Filter to rows where this attribute is greater than or equal to `value`. */
135
172
  gte(value) {
136
173
  return new ComparisonOperation(this.cwj(), "GREATER_THAN_OR_EQUAL_TO" /* GREATER_THAN_OR_EQUAL_TO */, new FloatConstantOperation(value));
137
174
  }
175
+ /** Filter to rows where this attribute is less than or equal to `value`. */
138
176
  lte(value) {
139
177
  return new ComparisonOperation(this.cwj(), "LESS_THAN_OR_EQUAL_TO" /* LESS_THAN_OR_EQUAL_TO */, new FloatConstantOperation(value));
140
178
  }
141
179
  };
142
180
  var FloatAttribute = DoubleAttribute;
143
181
  var DecimalAttribute = class extends NumericAttribute {
144
- constructor(displayName, columnName, columnDbType, owner, parent) {
145
- super(displayName, columnName, columnDbType, owner, parent);
182
+ constructor(displayName, columnName, columnDbType, owner, parent, embedded) {
183
+ super(displayName, columnName, columnDbType, owner, parent, embedded);
146
184
  }
185
+ /** Filter to rows where this attribute equals `value`. */
147
186
  eq(value) {
148
187
  return new ComparisonOperation(this.cwj(), "EQUAL" /* EQUAL */, new DecimalConstantOperation(value));
149
188
  }
189
+ /** Filter to rows where this attribute does not equal `value`. */
150
190
  ne(value) {
151
191
  return new ComparisonOperation(this.cwj(), "NOT_EQUAL" /* NOT_EQUAL */, new DecimalConstantOperation(value));
152
192
  }
193
+ /** Filter to rows where this attribute is greater than `value`. */
153
194
  gt(value) {
154
195
  return new ComparisonOperation(this.cwj(), "GREATER_THAN" /* GREATER_THAN */, new DecimalConstantOperation(value));
155
196
  }
197
+ /** Filter to rows where this attribute is less than `value`. */
156
198
  lt(value) {
157
199
  return new ComparisonOperation(this.cwj(), "LESS_THAN" /* LESS_THAN */, new DecimalConstantOperation(value));
158
200
  }
201
+ /** Filter to rows where this attribute is greater than or equal to `value`. */
159
202
  gte(value) {
160
203
  return new ComparisonOperation(this.cwj(), "GREATER_THAN_OR_EQUAL_TO" /* GREATER_THAN_OR_EQUAL_TO */, new DecimalConstantOperation(value));
161
204
  }
205
+ /** Filter to rows where this attribute is less than or equal to `value`. */
162
206
  lte(value) {
163
207
  return new ComparisonOperation(this.cwj(), "LESS_THAN_OR_EQUAL_TO" /* LESS_THAN_OR_EQUAL_TO */, new DecimalConstantOperation(value));
164
208
  }
165
209
  };
166
210
  var IntegerAttribute = class extends NumericAttribute {
167
- constructor(displayName, columnName, columnDbType, owner, parent) {
168
- super(displayName, columnName, columnDbType, owner, parent);
211
+ constructor(displayName, columnName, columnDbType, owner, parent, embedded) {
212
+ super(displayName, columnName, columnDbType, owner, parent, embedded);
169
213
  }
214
+ /** Filter to rows where this attribute equals `value`. */
170
215
  eq(value) {
171
216
  return new ComparisonOperation(this.cwj(), "EQUAL" /* EQUAL */, new IntegerConstantOperation(value));
172
217
  }
218
+ /** Filter to rows where this attribute does not equal `value`. */
173
219
  ne(value) {
174
220
  return new ComparisonOperation(this.cwj(), "NOT_EQUAL" /* NOT_EQUAL */, new IntegerConstantOperation(value));
175
221
  }
222
+ /** Filter to rows where this attribute is greater than `value`. */
176
223
  gt(value) {
177
224
  return new ComparisonOperation(this.cwj(), "GREATER_THAN" /* GREATER_THAN */, new IntegerConstantOperation(value));
178
225
  }
226
+ /** Filter to rows where this attribute is less than `value`. */
179
227
  lt(value) {
180
228
  return new ComparisonOperation(this.cwj(), "LESS_THAN" /* LESS_THAN */, new IntegerConstantOperation(value));
181
229
  }
230
+ /** Filter to rows where this attribute is greater than or equal to `value`. */
182
231
  gte(value) {
183
232
  return new ComparisonOperation(this.cwj(), "GREATER_THAN_OR_EQUAL_TO" /* GREATER_THAN_OR_EQUAL_TO */, new IntegerConstantOperation(value));
184
233
  }
234
+ /** Filter to rows where this attribute is less than or equal to `value`. */
185
235
  lte(value) {
186
236
  return new ComparisonOperation(this.cwj(), "LESS_THAN_OR_EQUAL_TO" /* LESS_THAN_OR_EQUAL_TO */, new IntegerConstantOperation(value));
187
237
  }
188
238
  };
189
239
  var BooleanAttribute = class extends Attribute {
190
- constructor(displayName, columnName, columnDbType, owner, parent) {
191
- super(displayName, columnName, columnDbType, owner, parent);
240
+ constructor(displayName, columnName, columnDbType, owner, parent, embedded) {
241
+ super(displayName, columnName, columnDbType, owner, parent, embedded);
192
242
  }
243
+ /** Filter to rows where this attribute equals `value`. */
193
244
  eq(value) {
194
245
  return new ComparisonOperation(this.cwj(), "EQUAL" /* EQUAL */, new BooleanConstantOperation(value));
195
246
  }
247
+ /** Filter to rows where this attribute is true. */
196
248
  isTrue() {
197
249
  return new ComparisonOperation(this.cwj(), "EQUAL" /* EQUAL */, new BooleanConstantOperation(true));
198
250
  }
251
+ /** Filter to rows where this attribute is false. */
199
252
  isFalse() {
200
253
  return new ComparisonOperation(this.cwj(), "EQUAL" /* EQUAL */, new BooleanConstantOperation(false));
201
254
  }
@@ -207,173 +260,227 @@ function parseDate(value) {
207
260
  return d;
208
261
  }
209
262
  var DateAttribute = class extends Attribute {
210
- constructor(displayName, columnName, columnDbType, owner, parent) {
211
- super(displayName, columnName, columnDbType, owner, parent);
263
+ constructor(displayName, columnName, columnDbType, owner, parent, embedded) {
264
+ super(displayName, columnName, columnDbType, owner, parent, embedded);
212
265
  }
266
+ /** Filter to rows where this date equals `value`. */
213
267
  eq(value) {
214
268
  return new ComparisonOperation(this.cwj(), "EQUAL" /* EQUAL */, new DateConstantOperation(parseDate(value)));
215
269
  }
270
+ /** Filter to rows where this date does not equal `value`. */
216
271
  ne(value) {
217
272
  return new ComparisonOperation(this.cwj(), "NOT_EQUAL" /* NOT_EQUAL */, new DateConstantOperation(parseDate(value)));
218
273
  }
274
+ /** Filter to rows where this date is after `value`. */
219
275
  gt(value) {
220
276
  return new ComparisonOperation(this.cwj(), "GREATER_THAN" /* GREATER_THAN */, new DateConstantOperation(parseDate(value)));
221
277
  }
278
+ /** Filter to rows where this date is before `value`. */
222
279
  lt(value) {
223
280
  return new ComparisonOperation(this.cwj(), "LESS_THAN" /* LESS_THAN */, new DateConstantOperation(parseDate(value)));
224
281
  }
282
+ /** Filter to rows where this date is on or after `value`. */
225
283
  gte(value) {
226
284
  return new ComparisonOperation(this.cwj(), "GREATER_THAN_OR_EQUAL_TO" /* GREATER_THAN_OR_EQUAL_TO */, new DateConstantOperation(parseDate(value)));
227
285
  }
286
+ /** Filter to rows where this date is on or before `value`. */
228
287
  lte(value) {
229
288
  return new ComparisonOperation(this.cwj(), "LESS_THAN_OR_EQUAL_TO" /* LESS_THAN_OR_EQUAL_TO */, new DateConstantOperation(parseDate(value)));
230
289
  }
290
+ /** Extract the four-digit calendar year. */
231
291
  year() {
232
292
  return new DateExtractOperation(this.cwj(), "YEAR" /* YEAR */, "Year " + this.displayName());
233
293
  }
294
+ /** Extract the month number (1–12). */
234
295
  month() {
235
296
  return new DateExtractOperation(this.cwj(), "MONTH" /* MONTH */, "Month " + this.displayName());
236
297
  }
298
+ /** Extract the day of the month (1–31). */
237
299
  day() {
238
300
  return new DateExtractOperation(this.cwj(), "DAY" /* DAY */, "Day " + this.displayName());
239
301
  }
302
+ /** Extract the quarter (1–4). */
240
303
  quarter() {
241
304
  return new DateExtractOperation(this.cwj(), "QUARTER" /* QUARTER */, "Quarter " + this.displayName());
242
305
  }
306
+ /** Extract the ISO week number (1–53). */
243
307
  week() {
244
308
  return new DateExtractOperation(this.cwj(), "WEEK" /* WEEK */, "Week " + this.displayName());
245
309
  }
310
+ /** Extract the day of the week (0 = Sunday through 6 = Saturday). */
246
311
  dayOfWeek() {
247
312
  return new DateExtractOperation(this.cwj(), "DOW" /* DOW */, "Day Of Week " + this.displayName());
248
313
  }
314
+ /** Add `n` days to this date. */
249
315
  addDays(n) {
250
316
  return new DateArithmeticOperation(this.cwj(), n, "DAY" /* DAY */, true, "Add Days " + this.displayName());
251
317
  }
318
+ /** Add `n` months to this date. */
252
319
  addMonths(n) {
253
320
  return new DateArithmeticOperation(this.cwj(), n, "MONTH" /* MONTH */, true, "Add Months " + this.displayName());
254
321
  }
322
+ /** Add `n` years to this date. */
255
323
  addYears(n) {
256
324
  return new DateArithmeticOperation(this.cwj(), n, "YEAR" /* YEAR */, true, "Add Years " + this.displayName());
257
325
  }
326
+ /** Subtract `n` days from this date. */
258
327
  subtractDays(n) {
259
328
  return new DateArithmeticOperation(this.cwj(), n, "DAY" /* DAY */, false, "Subtract Days " + this.displayName());
260
329
  }
330
+ /** Subtract `n` months from this date. */
261
331
  subtractMonths(n) {
262
332
  return new DateArithmeticOperation(this.cwj(), n, "MONTH" /* MONTH */, false, "Subtract Months " + this.displayName());
263
333
  }
334
+ /** Subtract `n` years from this date. */
264
335
  subtractYears(n) {
265
336
  return new DateArithmeticOperation(this.cwj(), n, "YEAR" /* YEAR */, false, "Subtract Years " + this.displayName());
266
337
  }
338
+ /** Number of whole days between this date and `other`. */
267
339
  diffDays(other) {
268
340
  return new DateDiffOperation(this.cwj(), other, "DAY" /* DAY */, "Diff Days " + this.displayName());
269
341
  }
342
+ /** Number of whole months between this date and `other`. */
270
343
  diffMonths(other) {
271
344
  return new DateDiffOperation(this.cwj(), other, "MONTH" /* MONTH */, "Diff Months " + this.displayName());
272
345
  }
346
+ /** Number of whole years between this date and `other`. */
273
347
  diffYears(other) {
274
348
  return new DateDiffOperation(this.cwj(), other, "YEAR" /* YEAR */, "Diff Years " + this.displayName());
275
349
  }
276
350
  };
277
351
  var DateTimeAttribute = class extends Attribute {
278
- constructor(displayName, columnName, columnDbType, owner, parent) {
279
- super(displayName, columnName, columnDbType, owner, parent);
352
+ constructor(displayName, columnName, columnDbType, owner, parent, embedded) {
353
+ super(displayName, columnName, columnDbType, owner, parent, embedded);
280
354
  }
355
+ /** Filter to rows where this timestamp equals `value`. */
281
356
  eq(value) {
282
357
  return new ComparisonOperation(this.cwj(), "EQUAL" /* EQUAL */, new DateTimeConstantOperation(parseDate(value)));
283
358
  }
359
+ /** Filter to rows where this timestamp does not equal `value`. */
284
360
  ne(value) {
285
361
  return new ComparisonOperation(this.cwj(), "NOT_EQUAL" /* NOT_EQUAL */, new DateTimeConstantOperation(parseDate(value)));
286
362
  }
363
+ /** Filter to rows where this timestamp is after `value`. */
287
364
  gt(value) {
288
365
  return new ComparisonOperation(this.cwj(), "GREATER_THAN" /* GREATER_THAN */, new DateTimeConstantOperation(parseDate(value)));
289
366
  }
367
+ /** Filter to rows where this timestamp is before `value`. */
290
368
  lt(value) {
291
369
  return new ComparisonOperation(this.cwj(), "LESS_THAN" /* LESS_THAN */, new DateTimeConstantOperation(parseDate(value)));
292
370
  }
371
+ /** Filter to rows where this timestamp is on or after `value`. */
293
372
  gte(value) {
294
373
  return new ComparisonOperation(this.cwj(), "GREATER_THAN_OR_EQUAL_TO" /* GREATER_THAN_OR_EQUAL_TO */, new DateTimeConstantOperation(parseDate(value)));
295
374
  }
375
+ /** Filter to rows where this timestamp is on or before `value`. */
296
376
  lte(value) {
297
377
  return new ComparisonOperation(this.cwj(), "LESS_THAN_OR_EQUAL_TO" /* LESS_THAN_OR_EQUAL_TO */, new DateTimeConstantOperation(parseDate(value)));
298
378
  }
379
+ /** Extract the four-digit calendar year. */
299
380
  year() {
300
381
  return new DateExtractOperation(this.cwj(), "YEAR" /* YEAR */, "Year " + this.displayName());
301
382
  }
383
+ /** Extract the month number (1–12). */
302
384
  month() {
303
385
  return new DateExtractOperation(this.cwj(), "MONTH" /* MONTH */, "Month " + this.displayName());
304
386
  }
387
+ /** Extract the day of the month (1–31). */
305
388
  day() {
306
389
  return new DateExtractOperation(this.cwj(), "DAY" /* DAY */, "Day " + this.displayName());
307
390
  }
391
+ /** Extract the hour (0–23). */
308
392
  hour() {
309
393
  return new DateExtractOperation(this.cwj(), "HOUR" /* HOUR */, "Hour " + this.displayName());
310
394
  }
395
+ /** Extract the minute (0–59). */
311
396
  minute() {
312
397
  return new DateExtractOperation(this.cwj(), "MINUTE" /* MINUTE */, "Minute " + this.displayName());
313
398
  }
399
+ /** Extract the second (0–59). */
314
400
  second() {
315
401
  return new DateExtractOperation(this.cwj(), "SECOND" /* SECOND */, "Second " + this.displayName());
316
402
  }
403
+ /** Extract the quarter (1–4). */
317
404
  quarter() {
318
405
  return new DateExtractOperation(this.cwj(), "QUARTER" /* QUARTER */, "Quarter " + this.displayName());
319
406
  }
407
+ /** Extract the ISO week number (1–53). */
320
408
  week() {
321
409
  return new DateExtractOperation(this.cwj(), "WEEK" /* WEEK */, "Week " + this.displayName());
322
410
  }
411
+ /** Extract the day of the week (0 = Sunday through 6 = Saturday). */
323
412
  dayOfWeek() {
324
413
  return new DateExtractOperation(this.cwj(), "DOW" /* DOW */, "Day Of Week " + this.displayName());
325
414
  }
415
+ /** Add `n` days to this timestamp. */
326
416
  addDays(n) {
327
417
  return new DateArithmeticOperation(this.cwj(), n, "DAY" /* DAY */, true, "Add Days " + this.displayName());
328
418
  }
419
+ /** Add `n` months to this timestamp. */
329
420
  addMonths(n) {
330
421
  return new DateArithmeticOperation(this.cwj(), n, "MONTH" /* MONTH */, true, "Add Months " + this.displayName());
331
422
  }
423
+ /** Add `n` years to this timestamp. */
332
424
  addYears(n) {
333
425
  return new DateArithmeticOperation(this.cwj(), n, "YEAR" /* YEAR */, true, "Add Years " + this.displayName());
334
426
  }
427
+ /** Add `n` hours to this timestamp. */
335
428
  addHours(n) {
336
429
  return new DateArithmeticOperation(this.cwj(), n, "HOUR" /* HOUR */, true, "Add Hours " + this.displayName());
337
430
  }
431
+ /** Add `n` minutes to this timestamp. */
338
432
  addMinutes(n) {
339
433
  return new DateArithmeticOperation(this.cwj(), n, "MINUTE" /* MINUTE */, true, "Add Minutes " + this.displayName());
340
434
  }
435
+ /** Add `n` seconds to this timestamp. */
341
436
  addSeconds(n) {
342
437
  return new DateArithmeticOperation(this.cwj(), n, "SECOND" /* SECOND */, true, "Add Seconds " + this.displayName());
343
438
  }
439
+ /** Subtract `n` days from this timestamp. */
344
440
  subtractDays(n) {
345
441
  return new DateArithmeticOperation(this.cwj(), n, "DAY" /* DAY */, false, "Subtract Days " + this.displayName());
346
442
  }
443
+ /** Subtract `n` months from this timestamp. */
347
444
  subtractMonths(n) {
348
445
  return new DateArithmeticOperation(this.cwj(), n, "MONTH" /* MONTH */, false, "Subtract Months " + this.displayName());
349
446
  }
447
+ /** Subtract `n` years from this timestamp. */
350
448
  subtractYears(n) {
351
449
  return new DateArithmeticOperation(this.cwj(), n, "YEAR" /* YEAR */, false, "Subtract Years " + this.displayName());
352
450
  }
451
+ /** Subtract `n` hours from this timestamp. */
353
452
  subtractHours(n) {
354
453
  return new DateArithmeticOperation(this.cwj(), n, "HOUR" /* HOUR */, false, "Subtract Hours " + this.displayName());
355
454
  }
455
+ /** Subtract `n` minutes from this timestamp. */
356
456
  subtractMinutes(n) {
357
457
  return new DateArithmeticOperation(this.cwj(), n, "MINUTE" /* MINUTE */, false, "Subtract Minutes " + this.displayName());
358
458
  }
459
+ /** Subtract `n` seconds from this timestamp. */
359
460
  subtractSeconds(n) {
360
461
  return new DateArithmeticOperation(this.cwj(), n, "SECOND" /* SECOND */, false, "Subtract Seconds " + this.displayName());
361
462
  }
463
+ /** Number of whole days between this timestamp and `other`. */
362
464
  diffDays(other) {
363
465
  return new DateDiffOperation(this.cwj(), other, "DAY" /* DAY */, "Diff Days " + this.displayName());
364
466
  }
467
+ /** Number of whole months between this timestamp and `other`. */
365
468
  diffMonths(other) {
366
469
  return new DateDiffOperation(this.cwj(), other, "MONTH" /* MONTH */, "Diff Months " + this.displayName());
367
470
  }
471
+ /** Number of whole years between this timestamp and `other`. */
368
472
  diffYears(other) {
369
473
  return new DateDiffOperation(this.cwj(), other, "YEAR" /* YEAR */, "Diff Years " + this.displayName());
370
474
  }
475
+ /** Number of whole hours between this timestamp and `other`. */
371
476
  diffHours(other) {
372
477
  return new DateDiffOperation(this.cwj(), other, "HOUR" /* HOUR */, "Diff Hours " + this.displayName());
373
478
  }
479
+ /** Number of whole minutes between this timestamp and `other`. */
374
480
  diffMinutes(other) {
375
481
  return new DateDiffOperation(this.cwj(), other, "MINUTE" /* MINUTE */, "Diff Minutes " + this.displayName());
376
482
  }
483
+ /** Number of whole seconds between this timestamp and `other`. */
377
484
  diffSeconds(other) {
378
485
  return new DateDiffOperation(this.cwj(), other, "SECOND" /* SECOND */, "Diff Seconds " + this.displayName());
379
486
  }
@@ -390,4 +497,4 @@ export {
390
497
  DateAttribute,
391
498
  DateTimeAttribute
392
499
  };
393
- //# sourceMappingURL=chunk-5K2Z3YDY.js.map
500
+ //# sourceMappingURL=chunk-4LNZV6EN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/datafinder/typed-attributes.ts"],"sourcesContent":["import { Attribute } from './attribute';\nimport {\n ComparisonOperation,\n ComparisonOperator,\n Operation,\n StringConstantOperation,\n FloatConstantOperation,\n IntegerConstantOperation,\n DateConstantOperation,\n DateTimeConstantOperation,\n BooleanConstantOperation,\n DecimalConstantOperation,\n AggregateOperation,\n AggregateOperator,\n ScalarFunction,\n ScalarFunctionOperation,\n DatePart,\n DateExtractOperation,\n DateArithmeticOperation,\n DateDiffOperation,\n JoinTreeNodeOperation,\n} from '../model/relational';\n\nexport class StringAttribute extends Attribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n embedded?: Attribute,\n ) { super(displayName, columnName, columnDbType, owner, parent, embedded); }\n\n /** Convert every character to uppercase. */\n toUpperCase(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.UPPER, 'Upper ' + this.displayName());\n }\n /** Convert every character to lowercase. */\n toLowerCase(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.LOWER, 'Lower ' + this.displayName());\n }\n /** Remove leading and trailing whitespace. */\n trim(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.TRIM, 'Trim ' + this.displayName());\n }\n /** Remove leading whitespace. */\n trimStart(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.LTRIM, 'Trim Start ' + this.displayName());\n }\n /** Remove trailing whitespace. */\n trimEnd(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.RTRIM, 'Trim End ' + this.displayName());\n }\n /** Return the number of characters in the string. */\n length(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.LENGTH, 'Length ' + this.displayName());\n }\n /** Return the string with characters in reverse order. */\n reverse(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.REVERSE, 'Reverse ' + this.displayName());\n }\n /** Return the first `n` characters. */\n left(n: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.LEFT, 'Left ' + this.displayName(), n);\n }\n /** Return the last `n` characters. */\n right(n: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.RIGHT, 'Right ' + this.displayName(), n);\n }\n /** Return the string repeated `n` times. */\n repeat(n: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.REPEAT, 'Repeat ' + this.displayName(), n);\n }\n /** Replace all occurrences of `fromStr` with `toStr`. */\n replace(fromStr: string, toStr: string): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.REPLACE, 'Replace ' + this.displayName(), undefined, [fromStr, toStr]);\n }\n /**\n * Extract a portion of the string.\n * `start` is zero-based (following Python convention); `length` is optional.\n */\n substring(start: number, length?: number): ScalarFunctionOperation {\n // Python convention: 0-based start; SQL SUBSTRING is 1-based, so add 1\n const args: (number)[] = length !== undefined ? [start + 1, length] : [start + 1];\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.SUBSTRING, 'Substring ' + this.displayName(), undefined, args);\n }\n\n /** Filter to rows where this attribute equals `value`. */\n eq(value: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new StringConstantOperation(value));\n }\n /** Filter to rows where this attribute does not equal `value`. */\n ne(value: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new StringConstantOperation(value));\n }\n /** Filter to rows where this attribute contains `value` as a substring. */\n contains(value: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LIKE, new StringConstantOperation(`%${value}%`));\n }\n /** Filter to rows where this attribute begins with `prefix`. */\n startsWith(prefix: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LIKE, new StringConstantOperation(`${prefix}%`));\n }\n /** Filter to rows where this attribute ends with `suffix`. */\n endsWith(suffix: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LIKE, new StringConstantOperation(`%${suffix}`));\n }\n /** Filter to rows where this attribute does not contain `value` as a substring. */\n notContains(value: string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_LIKE, new StringConstantOperation(`%${value}%`));\n }\n}\n\nexport abstract class NumericAttribute extends Attribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n embedded?: Attribute,\n ) { super(displayName, columnName, columnDbType, owner, parent, embedded); }\n\n /** Sum of all values in the group. */\n sum(): AggregateOperation {\n return new AggregateOperation(this.cwj(), AggregateOperator.SUM, 'Sum ' + this.displayName());\n }\n /** Smallest value in the group. */\n min(): AggregateOperation {\n return new AggregateOperation(this.cwj(), AggregateOperator.MIN, 'Min ' + this.displayName());\n }\n /** Largest value in the group. */\n max(): AggregateOperation {\n return new AggregateOperation(this.cwj(), AggregateOperator.MAX, 'Max ' + this.displayName());\n }\n /** Arithmetic mean of all values in the group. */\n average(): AggregateOperation {\n return new AggregateOperation(this.cwj(), AggregateOperator.AVERAGE, 'Average ' + this.displayName());\n }\n /** Absolute value (distance from zero, always non-negative). */\n abs(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.ABS, 'Abs ' + this.displayName());\n }\n /** Round up to the nearest integer. */\n ceil(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.CEILING, 'Ceil ' + this.displayName());\n }\n /** Round down to the nearest integer. */\n floor(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.FLOOR, 'Floor ' + this.displayName());\n }\n /** Square root. */\n sqrt(): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.SQRT, 'Sqrt ' + this.displayName());\n }\n /** Remainder after dividing by `n`. */\n mod(n: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.MOD, 'Mod ' + this.displayName(), n);\n }\n /** Raise to the power of `n`. */\n power(n: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.POWER, 'Power ' + this.displayName(), n);\n }\n /** Round to `d` decimal places, or to the nearest integer when `d` is omitted. */\n round(d?: number): ScalarFunctionOperation {\n return new ScalarFunctionOperation(this.cwj(), ScalarFunction.ROUND, 'Round ' + this.displayName(), d);\n }\n}\n\nexport class DoubleAttribute extends NumericAttribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n embedded?: Attribute,\n ) { super(displayName, columnName, columnDbType, owner, parent, embedded); }\n\n /** Filter to rows where this attribute equals `value`. */\n eq(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new FloatConstantOperation(value));\n }\n /** Filter to rows where this attribute does not equal `value`. */\n ne(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new FloatConstantOperation(value));\n }\n /** Filter to rows where this attribute is greater than `value`. */\n gt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN, new FloatConstantOperation(value));\n }\n /** Filter to rows where this attribute is less than `value`. */\n lt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN, new FloatConstantOperation(value));\n }\n /** Filter to rows where this attribute is greater than or equal to `value`. */\n gte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN_OR_EQUAL_TO, new FloatConstantOperation(value));\n }\n /** Filter to rows where this attribute is less than or equal to `value`. */\n lte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN_OR_EQUAL_TO, new FloatConstantOperation(value));\n }\n}\n\nexport const FloatAttribute = DoubleAttribute;\nexport type FloatAttribute = DoubleAttribute;\n\nexport class DecimalAttribute extends NumericAttribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n embedded?: Attribute,\n ) { super(displayName, columnName, columnDbType, owner, parent, embedded); }\n\n /** Filter to rows where this attribute equals `value`. */\n eq(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new DecimalConstantOperation(value));\n }\n /** Filter to rows where this attribute does not equal `value`. */\n ne(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new DecimalConstantOperation(value));\n }\n /** Filter to rows where this attribute is greater than `value`. */\n gt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN, new DecimalConstantOperation(value));\n }\n /** Filter to rows where this attribute is less than `value`. */\n lt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN, new DecimalConstantOperation(value));\n }\n /** Filter to rows where this attribute is greater than or equal to `value`. */\n gte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN_OR_EQUAL_TO, new DecimalConstantOperation(value));\n }\n /** Filter to rows where this attribute is less than or equal to `value`. */\n lte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN_OR_EQUAL_TO, new DecimalConstantOperation(value));\n }\n}\n\nexport class IntegerAttribute extends NumericAttribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n embedded?: Attribute,\n ) { super(displayName, columnName, columnDbType, owner, parent, embedded); }\n\n /** Filter to rows where this attribute equals `value`. */\n eq(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new IntegerConstantOperation(value));\n }\n /** Filter to rows where this attribute does not equal `value`. */\n ne(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new IntegerConstantOperation(value));\n }\n /** Filter to rows where this attribute is greater than `value`. */\n gt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN, new IntegerConstantOperation(value));\n }\n /** Filter to rows where this attribute is less than `value`. */\n lt(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN, new IntegerConstantOperation(value));\n }\n /** Filter to rows where this attribute is greater than or equal to `value`. */\n gte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN_OR_EQUAL_TO, new IntegerConstantOperation(value));\n }\n /** Filter to rows where this attribute is less than or equal to `value`. */\n lte(value: number): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN_OR_EQUAL_TO, new IntegerConstantOperation(value));\n }\n}\n\nexport class BooleanAttribute extends Attribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n embedded?: Attribute,\n ) { super(displayName, columnName, columnDbType, owner, parent, embedded); }\n\n /** Filter to rows where this attribute equals `value`. */\n eq(value: boolean): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new BooleanConstantOperation(value));\n }\n /** Filter to rows where this attribute is true. */\n isTrue(): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new BooleanConstantOperation(true));\n }\n /** Filter to rows where this attribute is false. */\n isFalse(): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new BooleanConstantOperation(false));\n }\n}\n\nfunction parseDate(value: Date | string): Date {\n if (value instanceof Date) return value;\n const d = new Date(value);\n if (isNaN(d.getTime())) throw new Error(`Cannot parse date: ${value}`);\n return d;\n}\n\nexport class DateAttribute extends Attribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n embedded?: Attribute,\n ) { super(displayName, columnName, columnDbType, owner, parent, embedded); }\n\n /** Filter to rows where this date equals `value`. */\n eq(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new DateConstantOperation(parseDate(value)));\n }\n /** Filter to rows where this date does not equal `value`. */\n ne(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new DateConstantOperation(parseDate(value)));\n }\n /** Filter to rows where this date is after `value`. */\n gt(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN, new DateConstantOperation(parseDate(value)));\n }\n /** Filter to rows where this date is before `value`. */\n lt(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN, new DateConstantOperation(parseDate(value)));\n }\n /** Filter to rows where this date is on or after `value`. */\n gte(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN_OR_EQUAL_TO, new DateConstantOperation(parseDate(value)));\n }\n /** Filter to rows where this date is on or before `value`. */\n lte(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN_OR_EQUAL_TO, new DateConstantOperation(parseDate(value)));\n }\n\n /** Extract the four-digit calendar year. */\n year(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.YEAR, 'Year ' + this.displayName()); }\n /** Extract the month number (1–12). */\n month(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.MONTH, 'Month ' + this.displayName()); }\n /** Extract the day of the month (1–31). */\n day(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.DAY, 'Day ' + this.displayName()); }\n /** Extract the quarter (1–4). */\n quarter(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.QUARTER, 'Quarter ' + this.displayName()); }\n /** Extract the ISO week number (1–53). */\n week(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.WEEK, 'Week ' + this.displayName()); }\n /** Extract the day of the week (0 = Sunday through 6 = Saturday). */\n dayOfWeek(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.DOW, 'Day Of Week ' + this.displayName()); }\n\n /** Add `n` days to this date. */\n addDays(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.DAY, true, 'Add Days ' + this.displayName()); }\n /** Add `n` months to this date. */\n addMonths(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MONTH, true, 'Add Months ' + this.displayName()); }\n /** Add `n` years to this date. */\n addYears(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.YEAR, true, 'Add Years ' + this.displayName()); }\n /** Subtract `n` days from this date. */\n subtractDays(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.DAY, false, 'Subtract Days ' + this.displayName()); }\n /** Subtract `n` months from this date. */\n subtractMonths(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MONTH, false, 'Subtract Months ' + this.displayName()); }\n /** Subtract `n` years from this date. */\n subtractYears(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.YEAR, false, 'Subtract Years ' + this.displayName()); }\n\n /** Number of whole days between this date and `other`. */\n diffDays(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.DAY, 'Diff Days ' + this.displayName()); }\n /** Number of whole months between this date and `other`. */\n diffMonths(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.MONTH, 'Diff Months ' + this.displayName()); }\n /** Number of whole years between this date and `other`. */\n diffYears(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.YEAR, 'Diff Years ' + this.displayName()); }\n}\n\nexport class DateTimeAttribute extends Attribute {\n constructor(\n displayName: string,\n columnName: string,\n columnDbType: string,\n owner: string,\n parent?: JoinTreeNodeOperation,\n embedded?: Attribute,\n ) { super(displayName, columnName, columnDbType, owner, parent, embedded); }\n\n /** Filter to rows where this timestamp equals `value`. */\n eq(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.EQUAL, new DateTimeConstantOperation(parseDate(value)));\n }\n /** Filter to rows where this timestamp does not equal `value`. */\n ne(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.NOT_EQUAL, new DateTimeConstantOperation(parseDate(value)));\n }\n /** Filter to rows where this timestamp is after `value`. */\n gt(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN, new DateTimeConstantOperation(parseDate(value)));\n }\n /** Filter to rows where this timestamp is before `value`. */\n lt(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN, new DateTimeConstantOperation(parseDate(value)));\n }\n /** Filter to rows where this timestamp is on or after `value`. */\n gte(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.GREATER_THAN_OR_EQUAL_TO, new DateTimeConstantOperation(parseDate(value)));\n }\n /** Filter to rows where this timestamp is on or before `value`. */\n lte(value: Date | string): Operation {\n return new ComparisonOperation(this.cwj(), ComparisonOperator.LESS_THAN_OR_EQUAL_TO, new DateTimeConstantOperation(parseDate(value)));\n }\n\n /** Extract the four-digit calendar year. */\n year(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.YEAR, 'Year ' + this.displayName()); }\n /** Extract the month number (1–12). */\n month(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.MONTH, 'Month ' + this.displayName()); }\n /** Extract the day of the month (1–31). */\n day(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.DAY, 'Day ' + this.displayName()); }\n /** Extract the hour (0–23). */\n hour(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.HOUR, 'Hour ' + this.displayName()); }\n /** Extract the minute (0–59). */\n minute(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.MINUTE, 'Minute ' + this.displayName()); }\n /** Extract the second (0–59). */\n second(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.SECOND, 'Second ' + this.displayName()); }\n /** Extract the quarter (1–4). */\n quarter(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.QUARTER, 'Quarter ' + this.displayName()); }\n /** Extract the ISO week number (1–53). */\n week(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.WEEK, 'Week ' + this.displayName()); }\n /** Extract the day of the week (0 = Sunday through 6 = Saturday). */\n dayOfWeek(): DateExtractOperation { return new DateExtractOperation(this.cwj(), DatePart.DOW, 'Day Of Week ' + this.displayName()); }\n\n /** Add `n` days to this timestamp. */\n addDays(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.DAY, true, 'Add Days ' + this.displayName()); }\n /** Add `n` months to this timestamp. */\n addMonths(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MONTH, true, 'Add Months ' + this.displayName()); }\n /** Add `n` years to this timestamp. */\n addYears(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.YEAR, true, 'Add Years ' + this.displayName()); }\n /** Add `n` hours to this timestamp. */\n addHours(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.HOUR, true, 'Add Hours ' + this.displayName()); }\n /** Add `n` minutes to this timestamp. */\n addMinutes(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MINUTE, true, 'Add Minutes ' + this.displayName()); }\n /** Add `n` seconds to this timestamp. */\n addSeconds(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.SECOND, true, 'Add Seconds ' + this.displayName()); }\n /** Subtract `n` days from this timestamp. */\n subtractDays(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.DAY, false, 'Subtract Days ' + this.displayName()); }\n /** Subtract `n` months from this timestamp. */\n subtractMonths(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MONTH, false, 'Subtract Months ' + this.displayName()); }\n /** Subtract `n` years from this timestamp. */\n subtractYears(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.YEAR, false, 'Subtract Years ' + this.displayName()); }\n /** Subtract `n` hours from this timestamp. */\n subtractHours(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.HOUR, false, 'Subtract Hours ' + this.displayName()); }\n /** Subtract `n` minutes from this timestamp. */\n subtractMinutes(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.MINUTE, false, 'Subtract Minutes ' + this.displayName()); }\n /** Subtract `n` seconds from this timestamp. */\n subtractSeconds(n: number): DateArithmeticOperation { return new DateArithmeticOperation(this.cwj(), n, DatePart.SECOND, false, 'Subtract Seconds ' + this.displayName()); }\n\n /** Number of whole days between this timestamp and `other`. */\n diffDays(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.DAY, 'Diff Days ' + this.displayName()); }\n /** Number of whole months between this timestamp and `other`. */\n diffMonths(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.MONTH, 'Diff Months ' + this.displayName()); }\n /** Number of whole years between this timestamp and `other`. */\n diffYears(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.YEAR, 'Diff Years ' + this.displayName()); }\n /** Number of whole hours between this timestamp and `other`. */\n diffHours(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.HOUR, 'Diff Hours ' + this.displayName()); }\n /** Number of whole minutes between this timestamp and `other`. */\n diffMinutes(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.MINUTE, 'Diff Minutes ' + this.displayName()); }\n /** Number of whole seconds between this timestamp and `other`. */\n diffSeconds(other: Date): DateDiffOperation { return new DateDiffOperation(this.cwj(), other, DatePart.SECOND, 'Diff Seconds ' + this.displayName()); }\n}\n"],"mappings":"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","names":[]}