drizzle-cube 0.4.52 → 0.4.53

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.
@@ -121,7 +121,7 @@ var x = class {
121
121
  }
122
122
  }
123
123
  static [t] = "SQL";
124
- decoder = T;
124
+ decoder = w;
125
125
  shouldInlineParams = !1;
126
126
  usedTables = [];
127
127
  append(e) {
@@ -182,15 +182,15 @@ var x = class {
182
182
  params: []
183
183
  };
184
184
  }
185
- if (n(t, j)) {
185
+ if (n(t, A)) {
186
186
  let e = t[l].schema, n = t[l].name;
187
187
  return {
188
188
  sql: e === void 0 || t[l].isAlias ? u(n) : u(e) + "." + u(n),
189
189
  params: []
190
190
  };
191
191
  }
192
- if (n(t, D)) {
193
- if (n(t.value, k)) return {
192
+ if (n(t, E)) {
193
+ if (n(t.value, O)) return {
194
194
  sql: d(m.value++, t),
195
195
  params: [t],
196
196
  typings: ["none"]
@@ -208,7 +208,7 @@ var x = class {
208
208
  typings: i
209
209
  };
210
210
  }
211
- return n(t, k) ? {
211
+ return n(t, O) ? {
212
212
  sql: d(m.value++, t),
213
213
  params: [t],
214
214
  typings: ["none"]
@@ -278,16 +278,16 @@ var x = class {
278
278
  return new S([this]);
279
279
  }
280
280
  };
281
- function w(e) {
281
+ function ee(e) {
282
282
  return typeof e == "object" && !!e && "mapToDriverValue" in e && typeof e.mapToDriverValue == "function";
283
283
  }
284
- var T = { mapFromDriverValue: (e) => e }, E = { mapToDriverValue: (e) => e };
284
+ var w = { mapFromDriverValue: (e) => e }, T = { mapToDriverValue: (e) => e };
285
285
  ({
286
- ...T,
287
- ...E
286
+ ...w,
287
+ ...T
288
288
  });
289
- var D = class {
290
- constructor(e, t = E) {
289
+ var E = class {
290
+ constructor(e, t = T) {
291
291
  this.value = e, this.encoder = t;
292
292
  }
293
293
  static [t] = "Param";
@@ -296,7 +296,7 @@ var D = class {
296
296
  return new S([this]);
297
297
  }
298
298
  };
299
- function O(e, ...t) {
299
+ function D(e, ...t) {
300
300
  let n = [];
301
301
  (t.length > 0 || e.length > 0 && e[0] !== "") && n.push(new x(e[0]));
302
302
  for (let [r, i] of t.entries()) n.push(i, new x(e[r + 1]));
@@ -326,14 +326,14 @@ function O(e, ...t) {
326
326
  }
327
327
  e.identifier = a;
328
328
  function o(e) {
329
- return new k(e);
329
+ return new O(e);
330
330
  }
331
331
  e.placeholder = o;
332
332
  function s(e, t) {
333
- return new D(e, t);
333
+ return new E(e, t);
334
334
  }
335
335
  e.param = s;
336
- })(O ||= {}), ((e) => {
336
+ })(D ||= {}), ((e) => {
337
337
  class n {
338
338
  constructor(e, t) {
339
339
  this.sql = e, this.fieldAlias = t;
@@ -349,7 +349,7 @@ function O(e, ...t) {
349
349
  }
350
350
  e.Aliased = n;
351
351
  })(S ||= {});
352
- var k = class {
352
+ var O = class {
353
353
  constructor(e) {
354
354
  this.name = e;
355
355
  }
@@ -357,10 +357,10 @@ var k = class {
357
357
  getSQL() {
358
358
  return new S([this]);
359
359
  }
360
- }, A = Symbol.for("drizzle:IsDrizzleView"), j = class {
360
+ }, k = Symbol.for("drizzle:IsDrizzleView"), A = class {
361
361
  static [t] = "View";
362
362
  [l];
363
- [A] = !0;
363
+ [k] = !0;
364
364
  constructor({ name: e, schema: t, selectedFields: n, query: r }) {
365
365
  this[l] = {
366
366
  name: e,
@@ -385,84 +385,84 @@ r.prototype.getSQL = function() {
385
385
  };
386
386
  //#endregion
387
387
  //#region node_modules/drizzle-orm/sql/expressions/conditions.js
388
- function M(e, t) {
389
- return w(t) && !y(e) && !n(e, D) && !n(e, k) && !n(e, r) && !n(e, v) && !n(e, j) ? new D(e, t) : e;
388
+ function j(e, t) {
389
+ return ee(t) && !y(e) && !n(e, E) && !n(e, O) && !n(e, r) && !n(e, v) && !n(e, A) ? new E(e, t) : e;
390
390
  }
391
- var N = (e, t) => O`${e} = ${M(t, e)}`, P = (e, t) => O`${e} <> ${M(t, e)}`;
392
- function F(...e) {
391
+ var M = (e, t) => D`${e} = ${j(t, e)}`, N = (e, t) => D`${e} <> ${j(t, e)}`;
392
+ function P(...e) {
393
393
  let t = e.filter((e) => e !== void 0);
394
394
  if (t.length !== 0) return t.length === 1 ? new S(t) : new S([
395
395
  new x("("),
396
- O.join(t, new x(" and ")),
396
+ D.join(t, new x(" and ")),
397
397
  new x(")")
398
398
  ]);
399
399
  }
400
- function I(...e) {
400
+ function F(...e) {
401
401
  let t = e.filter((e) => e !== void 0);
402
402
  if (t.length !== 0) return t.length === 1 ? new S(t) : new S([
403
403
  new x("("),
404
- O.join(t, new x(" or ")),
404
+ D.join(t, new x(" or ")),
405
405
  new x(")")
406
406
  ]);
407
407
  }
408
- var ee = (e, t) => O`${e} > ${M(t, e)}`, L = (e, t) => O`${e} >= ${M(t, e)}`, te = (e, t) => O`${e} < ${M(t, e)}`, R = (e, t) => O`${e} <= ${M(t, e)}`;
409
- function ne(e, t) {
410
- return Array.isArray(t) ? t.length === 0 ? O`false` : O`${e} in ${t.map((t) => M(t, e))}` : O`${e} in ${M(t, e)}`;
411
- }
408
+ var te = (e, t) => D`${e} > ${j(t, e)}`, I = (e, t) => D`${e} >= ${j(t, e)}`, ne = (e, t) => D`${e} < ${j(t, e)}`, L = (e, t) => D`${e} <= ${j(t, e)}`;
412
409
  function re(e, t) {
413
- return Array.isArray(t) ? t.length === 0 ? O`true` : O`${e} not in ${t.map((t) => M(t, e))}` : O`${e} not in ${M(t, e)}`;
410
+ return Array.isArray(t) ? t.length === 0 ? D`false` : D`${e} in ${t.map((t) => j(t, e))}` : D`${e} in ${j(t, e)}`;
414
411
  }
415
- function ie(e) {
416
- return O`${e} is null`;
412
+ function ie(e, t) {
413
+ return Array.isArray(t) ? t.length === 0 ? D`true` : D`${e} not in ${t.map((t) => j(t, e))}` : D`${e} not in ${j(t, e)}`;
417
414
  }
418
415
  function ae(e) {
419
- return O`${e} is not null`;
416
+ return D`${e} is null`;
420
417
  }
421
- function oe(e, t) {
418
+ function oe(e) {
419
+ return D`${e} is not null`;
420
+ }
421
+ function se(e, t) {
422
422
  if (Array.isArray(t)) {
423
423
  if (t.length === 0) throw Error("arrayContains requires at least one value");
424
- return O`${e} @> ${O`${M(t, e)}`}`;
424
+ return D`${e} @> ${D`${j(t, e)}`}`;
425
425
  }
426
- return O`${e} @> ${M(t, e)}`;
426
+ return D`${e} @> ${j(t, e)}`;
427
427
  }
428
- function se(e, t) {
428
+ function ce(e, t) {
429
429
  if (Array.isArray(t)) {
430
430
  if (t.length === 0) throw Error("arrayContained requires at least one value");
431
- return O`${e} <@ ${O`${M(t, e)}`}`;
431
+ return D`${e} <@ ${D`${j(t, e)}`}`;
432
432
  }
433
- return O`${e} <@ ${M(t, e)}`;
433
+ return D`${e} <@ ${j(t, e)}`;
434
434
  }
435
- function ce(e, t) {
435
+ function le(e, t) {
436
436
  if (Array.isArray(t)) {
437
437
  if (t.length === 0) throw Error("arrayOverlaps requires at least one value");
438
- return O`${e} && ${O`${M(t, e)}`}`;
438
+ return D`${e} && ${D`${j(t, e)}`}`;
439
439
  }
440
- return O`${e} && ${M(t, e)}`;
440
+ return D`${e} && ${j(t, e)}`;
441
441
  }
442
442
  //#endregion
443
443
  //#region node_modules/drizzle-orm/sql/expressions/select.js
444
- function le(e) {
445
- return O`${e} asc`;
446
- }
447
444
  function ue(e) {
448
- return O`${e} desc`;
445
+ return D`${e} asc`;
449
446
  }
450
- //#endregion
451
- //#region node_modules/drizzle-orm/sql/functions/aggregate.js
452
447
  function de(e) {
453
- return O`count(${e || O.raw("*")})`.mapWith(Number);
448
+ return D`${e} desc`;
454
449
  }
450
+ //#endregion
451
+ //#region node_modules/drizzle-orm/sql/functions/aggregate.js
455
452
  function fe(e) {
456
- return O`count(distinct ${e})`.mapWith(Number);
453
+ return D`count(${e || D.raw("*")})`.mapWith(Number);
454
+ }
455
+ function pe(e) {
456
+ return D`count(distinct ${e})`.mapWith(Number);
457
+ }
458
+ function R(e) {
459
+ return D`sum(${e})`.mapWith(String);
457
460
  }
458
461
  function z(e) {
459
- return O`sum(${e})`.mapWith(String);
462
+ return D`max(${e})`.mapWith(n(e, r) ? e : String);
460
463
  }
461
464
  function B(e) {
462
- return O`max(${e})`.mapWith(n(e, r) ? e : String);
463
- }
464
- function pe(e) {
465
- return O`min(${e})`.mapWith(n(e, r) ? e : String);
465
+ return D`min(${e})`.mapWith(n(e, r) ? e : String);
466
466
  }
467
467
  //#endregion
468
468
  //#region src/server/adapters/base-adapter.ts
@@ -506,73 +506,73 @@ var V = class {
506
506
  let t = this.parseISODuration(e), n = [];
507
507
  t.years && n.push(`${t.years} years`), t.months && n.push(`${t.months} months`), t.days && n.push(`${t.days} days`), t.hours && n.push(`${t.hours} hours`), t.minutes && n.push(`${t.minutes} minutes`), t.seconds && n.push(`${t.seconds} seconds`);
508
508
  let r = n.join(" ") || "0 seconds";
509
- return O`INTERVAL '${O.raw(r)}'`;
509
+ return D`INTERVAL '${D.raw(r)}'`;
510
510
  }
511
511
  buildTimeDifferenceSeconds(e, t) {
512
- return O`EXTRACT(EPOCH FROM (${e} - ${t}))`;
512
+ return D`EXTRACT(EPOCH FROM (${e} - ${t}))`;
513
513
  }
514
514
  buildDateAddInterval(e, t) {
515
- return O`(${e} + ${this.buildIntervalFromISO(t)})`;
515
+ return D`(${e} + ${this.buildIntervalFromISO(t)})`;
516
516
  }
517
517
  buildConditionalAggregation(e, t, n) {
518
518
  let r = e.toUpperCase();
519
- return e === "count" && !t ? O`COUNT(*) FILTER (WHERE ${n})` : O`${O.raw(r)}(${t}) FILTER (WHERE ${n})`;
519
+ return e === "count" && !t ? D`COUNT(*) FILTER (WHERE ${n})` : D`${D.raw(r)}(${t}) FILTER (WHERE ${n})`;
520
520
  }
521
521
  buildDateDiffPeriods(e, t, n) {
522
522
  switch (n) {
523
- case "day": return O`(${t}::date - ${e}::date)`;
524
- case "week": return O`FLOOR((${t}::date - ${e}::date) / 7)`;
525
- case "month": return O`(EXTRACT(YEAR FROM AGE(${t}::timestamp, ${e}::timestamp)) * 12 + EXTRACT(MONTH FROM AGE(${t}::timestamp, ${e}::timestamp)))::integer`;
523
+ case "day": return D`(${t}::date - ${e}::date)`;
524
+ case "week": return D`FLOOR((${t}::date - ${e}::date) / 7)`;
525
+ case "month": return D`(EXTRACT(YEAR FROM AGE(${t}::timestamp, ${e}::timestamp)) * 12 + EXTRACT(MONTH FROM AGE(${t}::timestamp, ${e}::timestamp)))::integer`;
526
526
  default: throw Error(`Unsupported date diff unit: ${n}`);
527
527
  }
528
528
  }
529
529
  buildPeriodSeriesSubquery(e) {
530
- return O`(SELECT generate_series(0, ${e}) as period_number) p`;
530
+ return D`(SELECT generate_series(0, ${e}) as period_number) p`;
531
531
  }
532
532
  buildTimeDimension(e, t) {
533
533
  switch (e) {
534
- case "year": return O`DATE_TRUNC('year', ${t}::timestamp)`;
535
- case "quarter": return O`DATE_TRUNC('quarter', ${t}::timestamp)`;
536
- case "month": return O`DATE_TRUNC('month', ${t}::timestamp)`;
537
- case "week": return O`DATE_TRUNC('week', ${t}::timestamp)`;
538
- case "day": return O`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
539
- case "hour": return O`DATE_TRUNC('hour', ${t}::timestamp)`;
540
- case "minute": return O`DATE_TRUNC('minute', ${t}::timestamp)`;
541
- case "second": return O`DATE_TRUNC('second', ${t}::timestamp)`;
534
+ case "year": return D`DATE_TRUNC('year', ${t}::timestamp)`;
535
+ case "quarter": return D`DATE_TRUNC('quarter', ${t}::timestamp)`;
536
+ case "month": return D`DATE_TRUNC('month', ${t}::timestamp)`;
537
+ case "week": return D`DATE_TRUNC('week', ${t}::timestamp)`;
538
+ case "day": return D`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
539
+ case "hour": return D`DATE_TRUNC('hour', ${t}::timestamp)`;
540
+ case "minute": return D`DATE_TRUNC('minute', ${t}::timestamp)`;
541
+ case "second": return D`DATE_TRUNC('second', ${t}::timestamp)`;
542
542
  default: return t;
543
543
  }
544
544
  }
545
545
  buildStringCondition(e, t, n) {
546
546
  switch (t) {
547
- case "contains": return O`${e} ILIKE ${`%${n}%`}`;
548
- case "notContains": return O`${e} NOT ILIKE ${`%${n}%`}`;
549
- case "startsWith": return O`${e} ILIKE ${`${n}%`}`;
550
- case "endsWith": return O`${e} ILIKE ${`%${n}`}`;
551
- case "like": return O`${e} LIKE ${n}`;
552
- case "notLike": return O`${e} NOT LIKE ${n}`;
553
- case "ilike": return O`${e} ILIKE ${n}`;
554
- case "regex": return O`${e} ~* ${n}`;
555
- case "notRegex": return O`${e} !~* ${n}`;
547
+ case "contains": return D`${e} ILIKE ${`%${n}%`}`;
548
+ case "notContains": return D`${e} NOT ILIKE ${`%${n}%`}`;
549
+ case "startsWith": return D`${e} ILIKE ${`${n}%`}`;
550
+ case "endsWith": return D`${e} ILIKE ${`%${n}`}`;
551
+ case "like": return D`${e} LIKE ${n}`;
552
+ case "notLike": return D`${e} NOT LIKE ${n}`;
553
+ case "ilike": return D`${e} ILIKE ${n}`;
554
+ case "regex": return D`${e} ~* ${n}`;
555
+ case "notRegex": return D`${e} !~* ${n}`;
556
556
  default: throw Error(`Unsupported string operator: ${t}`);
557
557
  }
558
558
  }
559
559
  castToType(e, t) {
560
560
  switch (t) {
561
- case "timestamp": return O`${e}::timestamp`;
562
- case "decimal": return O`${e}::decimal`;
563
- case "integer": return O`${e}::integer`;
561
+ case "timestamp": return D`${e}::timestamp`;
562
+ case "decimal": return D`${e}::decimal`;
563
+ case "integer": return D`${e}::integer`;
564
564
  default: throw Error(`Unsupported cast type: ${t}`);
565
565
  }
566
566
  }
567
567
  buildAvg(e) {
568
- return O`COALESCE(AVG(${e}), 0)`;
568
+ return D`COALESCE(AVG(${e}), 0)`;
569
569
  }
570
570
  buildCaseWhen(e, t) {
571
- let n = e.map((e) => O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
572
- return t === void 0 ? O`CASE ${n} END` : O`CASE ${n} ELSE ${t} END`;
571
+ let n = e.map((e) => D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
572
+ return t === void 0 ? D`CASE ${n} END` : D`CASE ${n} ELSE ${t} END`;
573
573
  }
574
574
  buildBooleanLiteral(e) {
575
- return e ? O`TRUE` : O`FALSE`;
575
+ return e ? D`TRUE` : D`FALSE`;
576
576
  }
577
577
  convertFilterValue(e) {
578
578
  return e;
@@ -601,35 +601,35 @@ var V = class {
601
601
  }
602
602
  buildStddev(e, t = !1) {
603
603
  let n = t ? "STDDEV_SAMP" : "STDDEV_POP";
604
- return O`COALESCE(${O.raw(n)}(${e}), 0)`;
604
+ return D`COALESCE(${D.raw(n)}(${e}), 0)`;
605
605
  }
606
606
  buildVariance(e, t = !1) {
607
607
  let n = t ? "VAR_SAMP" : "VAR_POP";
608
- return O`COALESCE(${O.raw(n)}(${e}), 0)`;
608
+ return D`COALESCE(${D.raw(n)}(${e}), 0)`;
609
609
  }
610
610
  buildPercentile(e, t) {
611
- return O`PERCENTILE_CONT(${t / 100}) WITHIN GROUP (ORDER BY ${e})`;
611
+ return D`PERCENTILE_CONT(${t / 100}) WITHIN GROUP (ORDER BY ${e})`;
612
612
  }
613
613
  buildWindowFunction(e, t, n, r, i) {
614
- let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
614
+ let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
615
615
  if (i?.frame) {
616
616
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
617
- s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
617
+ s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
618
618
  }
619
619
  let c = [];
620
620
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
621
- let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
621
+ let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
622
622
  switch (e) {
623
- case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
624
- case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
625
- case "rank": return O`RANK() ${l}`;
626
- case "denseRank": return O`DENSE_RANK() ${l}`;
627
- case "rowNumber": return O`ROW_NUMBER() ${l}`;
628
- case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
629
- case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
630
- case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
631
- case "movingAvg": return O`AVG(${t}) ${l}`;
632
- case "movingSum": return O`SUM(${t}) ${l}`;
623
+ case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
624
+ case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
625
+ case "rank": return D`RANK() ${l}`;
626
+ case "denseRank": return D`DENSE_RANK() ${l}`;
627
+ case "rowNumber": return D`ROW_NUMBER() ${l}`;
628
+ case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
629
+ case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
630
+ case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
631
+ case "movingAvg": return D`AVG(${t}) ${l}`;
632
+ case "movingSum": return D`SUM(${t}) ${l}`;
633
633
  default: throw Error(`Unsupported window function: ${e}`);
634
634
  }
635
635
  }
@@ -642,25 +642,25 @@ var V = class {
642
642
  }
643
643
  buildIntervalFromISO(e) {
644
644
  let t = this.parseISODuration(e), n = [];
645
- return t.years && n.push(`${t.years} YEAR`), t.months && n.push(`${t.months} MONTH`), t.days && n.push(`${t.days} DAY`), t.hours && n.push(`${t.hours} HOUR`), t.minutes && n.push(`${t.minutes} MINUTE`), t.seconds && n.push(`${t.seconds} SECOND`), O`${this.durationToSeconds(e)}`;
645
+ return t.years && n.push(`${t.years} YEAR`), t.months && n.push(`${t.months} MONTH`), t.days && n.push(`${t.days} DAY`), t.hours && n.push(`${t.hours} HOUR`), t.minutes && n.push(`${t.minutes} MINUTE`), t.seconds && n.push(`${t.seconds} SECOND`), D`${this.durationToSeconds(e)}`;
646
646
  }
647
647
  buildTimeDifferenceSeconds(e, t) {
648
- return O`TIMESTAMPDIFF(SECOND, ${t}, ${e})`;
648
+ return D`TIMESTAMPDIFF(SECOND, ${t}, ${e})`;
649
649
  }
650
650
  buildDateAddInterval(e, t) {
651
651
  let n = this.parseISODuration(t), r = e;
652
- return n.years && (r = O`DATE_ADD(${r}, INTERVAL ${n.years} YEAR)`), n.months && (r = O`DATE_ADD(${r}, INTERVAL ${n.months} MONTH)`), n.days && (r = O`DATE_ADD(${r}, INTERVAL ${n.days} DAY)`), n.hours && (r = O`DATE_ADD(${r}, INTERVAL ${n.hours} HOUR)`), n.minutes && (r = O`DATE_ADD(${r}, INTERVAL ${n.minutes} MINUTE)`), n.seconds && (r = O`DATE_ADD(${r}, INTERVAL ${n.seconds} SECOND)`), r;
652
+ return n.years && (r = D`DATE_ADD(${r}, INTERVAL ${n.years} YEAR)`), n.months && (r = D`DATE_ADD(${r}, INTERVAL ${n.months} MONTH)`), n.days && (r = D`DATE_ADD(${r}, INTERVAL ${n.days} DAY)`), n.hours && (r = D`DATE_ADD(${r}, INTERVAL ${n.hours} HOUR)`), n.minutes && (r = D`DATE_ADD(${r}, INTERVAL ${n.minutes} MINUTE)`), n.seconds && (r = D`DATE_ADD(${r}, INTERVAL ${n.seconds} SECOND)`), r;
653
653
  }
654
654
  buildConditionalAggregation(e, t, n) {
655
655
  let r = e.toUpperCase();
656
- return e === "count" && !t ? O`COUNT(CASE WHEN ${n} THEN 1 END)` : O`${O.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
656
+ return e === "count" && !t ? D`COUNT(CASE WHEN ${n} THEN 1 END)` : D`${D.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
657
657
  }
658
658
  buildDateDiffPeriods(e, t, n) {
659
659
  let r = n.toUpperCase();
660
- return O`TIMESTAMPDIFF(${O.raw(r)}, ${e}, ${t})`;
660
+ return D`TIMESTAMPDIFF(${D.raw(r)}, ${e}, ${t})`;
661
661
  }
662
662
  buildPeriodSeriesSubquery(e) {
663
- return O`(
663
+ return D`(
664
664
  WITH RECURSIVE periods(period_number) AS (
665
665
  SELECT 0
666
666
  UNION ALL
@@ -681,45 +681,45 @@ var V = class {
681
681
  second: "%Y-%m-%d %H:%i:%s"
682
682
  };
683
683
  switch (e) {
684
- case "quarter": return O`DATE_ADD(MAKEDATE(YEAR(${t}), 1), INTERVAL (QUARTER(${t}) - 1) * 3 MONTH)`;
685
- case "week": return O`DATE_SUB(${t}, INTERVAL WEEKDAY(${t}) DAY)`;
684
+ case "quarter": return D`DATE_ADD(MAKEDATE(YEAR(${t}), 1), INTERVAL (QUARTER(${t}) - 1) * 3 MONTH)`;
685
+ case "week": return D`DATE_SUB(${t}, INTERVAL WEEKDAY(${t}) DAY)`;
686
686
  default: {
687
687
  let r = n[e];
688
- return r ? O`STR_TO_DATE(DATE_FORMAT(${t}, ${r}), '%Y-%m-%d %H:%i:%s')` : t;
688
+ return r ? D`STR_TO_DATE(DATE_FORMAT(${t}, ${r}), '%Y-%m-%d %H:%i:%s')` : t;
689
689
  }
690
690
  }
691
691
  }
692
692
  buildStringCondition(e, t, n) {
693
693
  switch (t) {
694
- case "contains": return O`LOWER(${e}) LIKE ${`%${n.toLowerCase()}%`}`;
695
- case "notContains": return O`LOWER(${e}) NOT LIKE ${`%${n.toLowerCase()}%`}`;
696
- case "startsWith": return O`LOWER(${e}) LIKE ${`${n.toLowerCase()}%`}`;
697
- case "endsWith": return O`LOWER(${e}) LIKE ${`%${n.toLowerCase()}`}`;
698
- case "like": return O`${e} LIKE ${n}`;
699
- case "notLike": return O`${e} NOT LIKE ${n}`;
700
- case "ilike": return O`LOWER(${e}) LIKE ${n.toLowerCase()}`;
701
- case "regex": return O`${e} REGEXP ${n}`;
702
- case "notRegex": return O`${e} NOT REGEXP ${n}`;
694
+ case "contains": return D`LOWER(${e}) LIKE ${`%${n.toLowerCase()}%`}`;
695
+ case "notContains": return D`LOWER(${e}) NOT LIKE ${`%${n.toLowerCase()}%`}`;
696
+ case "startsWith": return D`LOWER(${e}) LIKE ${`${n.toLowerCase()}%`}`;
697
+ case "endsWith": return D`LOWER(${e}) LIKE ${`%${n.toLowerCase()}`}`;
698
+ case "like": return D`${e} LIKE ${n}`;
699
+ case "notLike": return D`${e} NOT LIKE ${n}`;
700
+ case "ilike": return D`LOWER(${e}) LIKE ${n.toLowerCase()}`;
701
+ case "regex": return D`${e} REGEXP ${n}`;
702
+ case "notRegex": return D`${e} NOT REGEXP ${n}`;
703
703
  default: throw Error(`Unsupported string operator: ${t}`);
704
704
  }
705
705
  }
706
706
  castToType(e, t) {
707
707
  switch (t) {
708
- case "timestamp": return O`CAST(${e} AS DATETIME)`;
709
- case "decimal": return O`CAST(${e} AS DECIMAL(10,2))`;
710
- case "integer": return O`CAST(${e} AS SIGNED INTEGER)`;
708
+ case "timestamp": return D`CAST(${e} AS DATETIME)`;
709
+ case "decimal": return D`CAST(${e} AS DECIMAL(10,2))`;
710
+ case "integer": return D`CAST(${e} AS SIGNED INTEGER)`;
711
711
  default: throw Error(`Unsupported cast type: ${t}`);
712
712
  }
713
713
  }
714
714
  buildAvg(e) {
715
- return O`IFNULL(AVG(${e}), 0)`;
715
+ return D`IFNULL(AVG(${e}), 0)`;
716
716
  }
717
717
  buildCaseWhen(e, t) {
718
- let n = e.map((e) => O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
719
- return t === void 0 ? O`CASE ${n} END` : O`CASE ${n} ELSE ${t} END`;
718
+ let n = e.map((e) => D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
719
+ return t === void 0 ? D`CASE ${n} END` : D`CASE ${n} ELSE ${t} END`;
720
720
  }
721
721
  buildBooleanLiteral(e) {
722
- return e ? O`TRUE` : O`FALSE`;
722
+ return e ? D`TRUE` : D`FALSE`;
723
723
  }
724
724
  convertFilterValue(e) {
725
725
  return e;
@@ -748,35 +748,35 @@ var V = class {
748
748
  }
749
749
  buildStddev(e, t = !1) {
750
750
  let n = t ? "STDDEV_SAMP" : "STDDEV_POP";
751
- return O`IFNULL(${O.raw(n)}(${e}), 0)`;
751
+ return D`IFNULL(${D.raw(n)}(${e}), 0)`;
752
752
  }
753
753
  buildVariance(e, t = !1) {
754
754
  let n = t ? "VAR_SAMP" : "VAR_POP";
755
- return O`IFNULL(${O.raw(n)}(${e}), 0)`;
755
+ return D`IFNULL(${D.raw(n)}(${e}), 0)`;
756
756
  }
757
757
  buildPercentile(e, t) {
758
758
  return null;
759
759
  }
760
760
  buildWindowFunction(e, t, n, r, i) {
761
- let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
761
+ let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
762
762
  if (i?.frame) {
763
763
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
764
- s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
764
+ s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
765
765
  }
766
766
  let c = [];
767
767
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
768
- let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
768
+ let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
769
769
  switch (e) {
770
- case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
771
- case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
772
- case "rank": return O`RANK() ${l}`;
773
- case "denseRank": return O`DENSE_RANK() ${l}`;
774
- case "rowNumber": return O`ROW_NUMBER() ${l}`;
775
- case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
776
- case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
777
- case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
778
- case "movingAvg": return O`AVG(${t}) ${l}`;
779
- case "movingSum": return O`SUM(${t}) ${l}`;
770
+ case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
771
+ case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
772
+ case "rank": return D`RANK() ${l}`;
773
+ case "denseRank": return D`DENSE_RANK() ${l}`;
774
+ case "rowNumber": return D`ROW_NUMBER() ${l}`;
775
+ case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
776
+ case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
777
+ case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
778
+ case "movingAvg": return D`AVG(${t}) ${l}`;
779
+ case "movingSum": return D`SUM(${t}) ${l}`;
780
780
  default: throw Error(`Unsupported window function: ${e}`);
781
781
  }
782
782
  }
@@ -788,28 +788,28 @@ var V = class {
788
788
  return !1;
789
789
  }
790
790
  buildIntervalFromISO(e) {
791
- return O`${this.durationToSeconds(e)}`;
791
+ return D`${this.durationToSeconds(e)}`;
792
792
  }
793
793
  buildTimeDifferenceSeconds(e, t) {
794
- return O`(${e} - ${t})`;
794
+ return D`(${e} - ${t})`;
795
795
  }
796
796
  buildDateAddInterval(e, t) {
797
- return O`(${e} + ${this.durationToSeconds(t)})`;
797
+ return D`(${e} + ${this.durationToSeconds(t)})`;
798
798
  }
799
799
  buildConditionalAggregation(e, t, n) {
800
800
  let r = e.toUpperCase();
801
- return e === "count" && !t ? O`COUNT(CASE WHEN ${n} THEN 1 END)` : O`${O.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
801
+ return e === "count" && !t ? D`COUNT(CASE WHEN ${n} THEN 1 END)` : D`${D.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
802
802
  }
803
803
  buildDateDiffPeriods(e, t, n) {
804
804
  switch (n) {
805
- case "day": return O`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) AS INTEGER)`;
806
- case "week": return O`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) / 7 AS INTEGER)`;
807
- case "month": return O`((CAST(strftime('%Y', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%Y', datetime(${e}, 'unixepoch')) AS INTEGER)) * 12 + (CAST(strftime('%m', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%m', datetime(${e}, 'unixepoch')) AS INTEGER)))`;
805
+ case "day": return D`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) AS INTEGER)`;
806
+ case "week": return D`CAST((julianday(datetime(${t}, 'unixepoch')) - julianday(datetime(${e}, 'unixepoch'))) / 7 AS INTEGER)`;
807
+ case "month": return D`((CAST(strftime('%Y', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%Y', datetime(${e}, 'unixepoch')) AS INTEGER)) * 12 + (CAST(strftime('%m', datetime(${t}, 'unixepoch')) AS INTEGER) - CAST(strftime('%m', datetime(${e}, 'unixepoch')) AS INTEGER)))`;
808
808
  default: throw Error(`Unsupported date diff unit for SQLite: ${n}`);
809
809
  }
810
810
  }
811
811
  buildPeriodSeriesSubquery(e) {
812
- return O`(
812
+ return D`(
813
813
  WITH RECURSIVE periods(period_number) AS (
814
814
  SELECT 0
815
815
  UNION ALL
@@ -820,52 +820,52 @@ var V = class {
820
820
  }
821
821
  buildTimeDimension(e, t) {
822
822
  switch (e) {
823
- case "year": return O`datetime(${t}, 'unixepoch', 'start of year')`;
823
+ case "year": return D`datetime(${t}, 'unixepoch', 'start of year')`;
824
824
  case "quarter": {
825
- let e = O`datetime(${t}, 'unixepoch')`;
826
- return O`datetime(${e}, 'start of year',
825
+ let e = D`datetime(${t}, 'unixepoch')`;
826
+ return D`datetime(${e}, 'start of year',
827
827
  '+' || (((CAST(strftime('%m', ${e}) AS INTEGER) - 1) / 3) * 3) || ' months')`;
828
828
  }
829
- case "month": return O`datetime(${t}, 'unixepoch', 'start of month')`;
830
- case "week": return O`date(datetime(${t}, 'unixepoch'), 'weekday 1', '-6 days')`;
831
- case "day": return O`datetime(${t}, 'unixepoch', 'start of day')`;
832
- case "hour": return O`datetime(strftime('%Y-%m-%d %H:00:00', ${O`datetime(${t}, 'unixepoch')`}))`;
833
- case "minute": return O`datetime(strftime('%Y-%m-%d %H:%M:00', ${O`datetime(${t}, 'unixepoch')`}))`;
834
- case "second": return O`datetime(strftime('%Y-%m-%d %H:%M:%S', ${O`datetime(${t}, 'unixepoch')`}))`;
835
- default: return O`datetime(${t}, 'unixepoch')`;
829
+ case "month": return D`datetime(${t}, 'unixepoch', 'start of month')`;
830
+ case "week": return D`date(datetime(${t}, 'unixepoch'), 'weekday 1', '-6 days')`;
831
+ case "day": return D`datetime(${t}, 'unixepoch', 'start of day')`;
832
+ case "hour": return D`datetime(strftime('%Y-%m-%d %H:00:00', ${D`datetime(${t}, 'unixepoch')`}))`;
833
+ case "minute": return D`datetime(strftime('%Y-%m-%d %H:%M:00', ${D`datetime(${t}, 'unixepoch')`}))`;
834
+ case "second": return D`datetime(strftime('%Y-%m-%d %H:%M:%S', ${D`datetime(${t}, 'unixepoch')`}))`;
835
+ default: return D`datetime(${t}, 'unixepoch')`;
836
836
  }
837
837
  }
838
838
  buildStringCondition(e, t, n) {
839
839
  switch (t) {
840
- case "contains": return O`LOWER(${e}) LIKE ${`%${n.toLowerCase()}%`}`;
841
- case "notContains": return O`LOWER(${e}) NOT LIKE ${`%${n.toLowerCase()}%`}`;
842
- case "startsWith": return O`LOWER(${e}) LIKE ${`${n.toLowerCase()}%`}`;
843
- case "endsWith": return O`LOWER(${e}) LIKE ${`%${n.toLowerCase()}`}`;
844
- case "like": return O`${e} LIKE ${n}`;
845
- case "notLike": return O`${e} NOT LIKE ${n}`;
846
- case "ilike": return O`LOWER(${e}) LIKE ${n.toLowerCase()}`;
847
- case "regex": return O`${e} GLOB ${n}`;
848
- case "notRegex": return O`${e} NOT GLOB ${n}`;
840
+ case "contains": return D`LOWER(${e}) LIKE ${`%${n.toLowerCase()}%`}`;
841
+ case "notContains": return D`LOWER(${e}) NOT LIKE ${`%${n.toLowerCase()}%`}`;
842
+ case "startsWith": return D`LOWER(${e}) LIKE ${`${n.toLowerCase()}%`}`;
843
+ case "endsWith": return D`LOWER(${e}) LIKE ${`%${n.toLowerCase()}`}`;
844
+ case "like": return D`${e} LIKE ${n}`;
845
+ case "notLike": return D`${e} NOT LIKE ${n}`;
846
+ case "ilike": return D`LOWER(${e}) LIKE ${n.toLowerCase()}`;
847
+ case "regex": return D`${e} GLOB ${n}`;
848
+ case "notRegex": return D`${e} NOT GLOB ${n}`;
849
849
  default: throw Error(`Unsupported string operator: ${t}`);
850
850
  }
851
851
  }
852
852
  castToType(e, t) {
853
853
  switch (t) {
854
- case "timestamp": return O`datetime(${e} / 1000, 'unixepoch')`;
855
- case "decimal": return O`CAST(${e} AS REAL)`;
856
- case "integer": return O`CAST(${e} AS INTEGER)`;
854
+ case "timestamp": return D`datetime(${e} / 1000, 'unixepoch')`;
855
+ case "decimal": return D`CAST(${e} AS REAL)`;
856
+ case "integer": return D`CAST(${e} AS INTEGER)`;
857
857
  default: throw Error(`Unsupported cast type: ${t}`);
858
858
  }
859
859
  }
860
860
  buildAvg(e) {
861
- return O`IFNULL(AVG(${e}), 0)`;
861
+ return D`IFNULL(AVG(${e}), 0)`;
862
862
  }
863
863
  buildCaseWhen(e, t) {
864
- let n = e.map((e) => e.then && typeof e.then == "object" && (e.then.queryChunks || e.then._ || e.then.sql) ? O`WHEN ${e.when} THEN ${O.raw("(")}${e.then}${O.raw(")")}` : O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
865
- return t === void 0 ? O`CASE ${n} END` : t && typeof t == "object" && (t.queryChunks || t._ || t.sql) ? O`CASE ${n} ELSE ${O.raw("(")}${t}${O.raw(")")} END` : O`CASE ${n} ELSE ${t} END`;
864
+ let n = e.map((e) => e.then && typeof e.then == "object" && (e.then.queryChunks || e.then._ || e.then.sql) ? D`WHEN ${e.when} THEN ${D.raw("(")}${e.then}${D.raw(")")}` : D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
865
+ return t === void 0 ? D`CASE ${n} END` : t && typeof t == "object" && (t.queryChunks || t._ || t.sql) ? D`CASE ${n} ELSE ${D.raw("(")}${t}${D.raw(")")} END` : D`CASE ${n} ELSE ${t} END`;
866
866
  }
867
867
  buildBooleanLiteral(e) {
868
- return e ? O`1` : O`0`;
868
+ return e ? D`1` : D`0`;
869
869
  }
870
870
  preprocessCalculatedTemplate(e) {
871
871
  return e.length > 1e3 ? e : e.replace(/(\{[^}]+\})\s*\/\s*/g, (e, t) => `${t.replace(/\{([^}]+)\}/, "CAST({$1} AS REAL)")} / `);
@@ -910,25 +910,25 @@ var V = class {
910
910
  return null;
911
911
  }
912
912
  buildWindowFunction(e, t, n, r, i) {
913
- let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
913
+ let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
914
914
  if (i?.frame) {
915
915
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
916
- s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
916
+ s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
917
917
  }
918
918
  let c = [];
919
919
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
920
- let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
920
+ let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
921
921
  switch (e) {
922
- case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
923
- case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
924
- case "rank": return O`RANK() ${l}`;
925
- case "denseRank": return O`DENSE_RANK() ${l}`;
926
- case "rowNumber": return O`ROW_NUMBER() ${l}`;
927
- case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
928
- case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
929
- case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
930
- case "movingAvg": return O`AVG(${t}) ${l}`;
931
- case "movingSum": return O`SUM(${t}) ${l}`;
922
+ case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
923
+ case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
924
+ case "rank": return D`RANK() ${l}`;
925
+ case "denseRank": return D`DENSE_RANK() ${l}`;
926
+ case "rowNumber": return D`ROW_NUMBER() ${l}`;
927
+ case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
928
+ case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
929
+ case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
930
+ case "movingAvg": return D`AVG(${t}) ${l}`;
931
+ case "movingSum": return D`SUM(${t}) ${l}`;
932
932
  default: throw Error(`Unsupported window function: ${e}`);
933
933
  }
934
934
  }
@@ -947,68 +947,68 @@ var V = class {
947
947
  let t = this.parseISODuration(e), n = [];
948
948
  t.years && n.push(`${t.years} years`), t.months && n.push(`${t.months} months`), t.days && n.push(`${t.days} days`), t.hours && n.push(`${t.hours} hours`), t.minutes && n.push(`${t.minutes} minutes`), t.seconds && n.push(`${t.seconds} seconds`);
949
949
  let r = n.join(" ") || "0 seconds";
950
- return O`INTERVAL '${O.raw(r)}'`;
950
+ return D`INTERVAL '${D.raw(r)}'`;
951
951
  }
952
952
  buildTimeDifferenceSeconds(e, t) {
953
- return O`(EPOCH(${e}) - EPOCH(${t}))`;
953
+ return D`(EPOCH(${e}) - EPOCH(${t}))`;
954
954
  }
955
955
  buildDateAddInterval(e, t) {
956
- return O`(${e} + ${this.buildIntervalFromISO(t)})`;
956
+ return D`(${e} + ${this.buildIntervalFromISO(t)})`;
957
957
  }
958
958
  buildConditionalAggregation(e, t, n) {
959
959
  let r = e.toUpperCase();
960
- return e === "count" && !t ? O`COUNT(*) FILTER (WHERE ${n})` : O`${O.raw(r)}(${t}) FILTER (WHERE ${n})`;
960
+ return e === "count" && !t ? D`COUNT(*) FILTER (WHERE ${n})` : D`${D.raw(r)}(${t}) FILTER (WHERE ${n})`;
961
961
  }
962
962
  buildDateDiffPeriods(e, t, n) {
963
- return O`DATE_DIFF('${O.raw(n)}', ${e}::timestamp, ${t}::timestamp)`;
963
+ return D`DATE_DIFF('${D.raw(n)}', ${e}::timestamp, ${t}::timestamp)`;
964
964
  }
965
965
  buildPeriodSeriesSubquery(e) {
966
- return O`(SELECT UNNEST(generate_series(0, ${e})) as period_number) p`;
966
+ return D`(SELECT UNNEST(generate_series(0, ${e})) as period_number) p`;
967
967
  }
968
968
  buildTimeDimension(e, t) {
969
969
  switch (e) {
970
- case "year": return O`DATE_TRUNC('year', ${t}::timestamp)`;
971
- case "quarter": return O`DATE_TRUNC('quarter', ${t}::timestamp)`;
972
- case "month": return O`DATE_TRUNC('month', ${t}::timestamp)`;
973
- case "week": return O`DATE_TRUNC('week', ${t}::timestamp)`;
974
- case "day": return O`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
975
- case "hour": return O`DATE_TRUNC('hour', ${t}::timestamp)`;
976
- case "minute": return O`DATE_TRUNC('minute', ${t}::timestamp)`;
977
- case "second": return O`DATE_TRUNC('second', ${t}::timestamp)`;
970
+ case "year": return D`DATE_TRUNC('year', ${t}::timestamp)`;
971
+ case "quarter": return D`DATE_TRUNC('quarter', ${t}::timestamp)`;
972
+ case "month": return D`DATE_TRUNC('month', ${t}::timestamp)`;
973
+ case "week": return D`DATE_TRUNC('week', ${t}::timestamp)`;
974
+ case "day": return D`DATE_TRUNC('day', ${t}::timestamp)::timestamp`;
975
+ case "hour": return D`DATE_TRUNC('hour', ${t}::timestamp)`;
976
+ case "minute": return D`DATE_TRUNC('minute', ${t}::timestamp)`;
977
+ case "second": return D`DATE_TRUNC('second', ${t}::timestamp)`;
978
978
  default: return t;
979
979
  }
980
980
  }
981
981
  buildStringCondition(e, t, n) {
982
982
  switch (t) {
983
- case "contains": return O`${e} ILIKE ${`%${n}%`}`;
984
- case "notContains": return O`${e} NOT ILIKE ${`%${n}%`}`;
985
- case "startsWith": return O`${e} ILIKE ${`${n}%`}`;
986
- case "endsWith": return O`${e} ILIKE ${`%${n}`}`;
987
- case "like": return O`${e} LIKE ${n}`;
988
- case "notLike": return O`${e} NOT LIKE ${n}`;
989
- case "ilike": return O`${e} ILIKE ${n}`;
990
- case "regex": return O`regexp_matches(${e}, ${n})`;
991
- case "notRegex": return O`NOT regexp_matches(${e}, ${n})`;
983
+ case "contains": return D`${e} ILIKE ${`%${n}%`}`;
984
+ case "notContains": return D`${e} NOT ILIKE ${`%${n}%`}`;
985
+ case "startsWith": return D`${e} ILIKE ${`${n}%`}`;
986
+ case "endsWith": return D`${e} ILIKE ${`%${n}`}`;
987
+ case "like": return D`${e} LIKE ${n}`;
988
+ case "notLike": return D`${e} NOT LIKE ${n}`;
989
+ case "ilike": return D`${e} ILIKE ${n}`;
990
+ case "regex": return D`regexp_matches(${e}, ${n})`;
991
+ case "notRegex": return D`NOT regexp_matches(${e}, ${n})`;
992
992
  default: throw Error(`Unsupported string operator: ${t}`);
993
993
  }
994
994
  }
995
995
  castToType(e, t) {
996
996
  switch (t) {
997
- case "timestamp": return O`${e}::timestamp`;
998
- case "decimal": return O`${e}::decimal`;
999
- case "integer": return O`${e}::integer`;
997
+ case "timestamp": return D`${e}::timestamp`;
998
+ case "decimal": return D`${e}::decimal`;
999
+ case "integer": return D`${e}::integer`;
1000
1000
  default: throw Error(`Unsupported cast type: ${t}`);
1001
1001
  }
1002
1002
  }
1003
1003
  buildAvg(e) {
1004
- return O`COALESCE(AVG(${e}), 0)`;
1004
+ return D`COALESCE(AVG(${e}), 0)`;
1005
1005
  }
1006
1006
  buildCaseWhen(e, t) {
1007
- let n = e.map((e) => O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
1008
- return t === void 0 ? O`CASE ${n} END` : O`CASE ${n} ELSE ${t} END`;
1007
+ let n = e.map((e) => D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
1008
+ return t === void 0 ? D`CASE ${n} END` : D`CASE ${n} ELSE ${t} END`;
1009
1009
  }
1010
1010
  buildBooleanLiteral(e) {
1011
- return e ? O`TRUE` : O`FALSE`;
1011
+ return e ? D`TRUE` : D`FALSE`;
1012
1012
  }
1013
1013
  convertFilterValue(e) {
1014
1014
  return e;
@@ -1037,35 +1037,35 @@ var V = class {
1037
1037
  }
1038
1038
  buildStddev(e, t = !1) {
1039
1039
  let n = t ? "STDDEV_SAMP" : "STDDEV_POP";
1040
- return O`COALESCE(${O.raw(n)}(${e}), 0)`;
1040
+ return D`COALESCE(${D.raw(n)}(${e}), 0)`;
1041
1041
  }
1042
1042
  buildVariance(e, t = !1) {
1043
1043
  let n = t ? "VAR_SAMP" : "VAR_POP";
1044
- return O`COALESCE(${O.raw(n)}(${e}), 0)`;
1044
+ return D`COALESCE(${D.raw(n)}(${e}), 0)`;
1045
1045
  }
1046
1046
  buildPercentile(e, t) {
1047
- return O`QUANTILE_CONT(${e}, ${t / 100})`;
1047
+ return D`QUANTILE_CONT(${e}, ${t / 100})`;
1048
1048
  }
1049
1049
  buildWindowFunction(e, t, n, r, i) {
1050
- let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
1050
+ let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
1051
1051
  if (i?.frame) {
1052
1052
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
1053
- s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
1053
+ s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
1054
1054
  }
1055
1055
  let c = [];
1056
1056
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
1057
- let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
1057
+ let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
1058
1058
  switch (e) {
1059
- case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1060
- case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1061
- case "rank": return O`RANK() ${l}`;
1062
- case "denseRank": return O`DENSE_RANK() ${l}`;
1063
- case "rowNumber": return O`ROW_NUMBER() ${l}`;
1064
- case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
1065
- case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
1066
- case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
1067
- case "movingAvg": return O`AVG(${t}) ${l}`;
1068
- case "movingSum": return O`SUM(${t}) ${l}`;
1059
+ case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1060
+ case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1061
+ case "rank": return D`RANK() ${l}`;
1062
+ case "denseRank": return D`DENSE_RANK() ${l}`;
1063
+ case "rowNumber": return D`ROW_NUMBER() ${l}`;
1064
+ case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
1065
+ case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
1066
+ case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
1067
+ case "movingAvg": return D`AVG(${t}) ${l}`;
1068
+ case "movingSum": return D`SUM(${t}) ${l}`;
1069
1069
  default: throw Error(`Unsupported window function: ${e}`);
1070
1070
  }
1071
1071
  }
@@ -1078,71 +1078,71 @@ var V = class {
1078
1078
  }
1079
1079
  buildIntervalFromISO(e) {
1080
1080
  let t = this.parseISODuration(e), n = [];
1081
- if (t.years && n.push(`${t.years} YEAR`), t.months && n.push(`${t.months} MONTH`), t.days && n.push(`${t.days} DAY`), t.hours && n.push(`${t.hours} HOUR`), t.minutes && n.push(`${t.minutes} MINUTE`), t.seconds && n.push(`${t.seconds} SECOND`), n.length === 0) return O`INTERVAL 0 SECOND`;
1082
- if (n.length === 1) return O`INTERVAL ${O.raw(n[0])}`;
1081
+ if (t.years && n.push(`${t.years} YEAR`), t.months && n.push(`${t.months} MONTH`), t.days && n.push(`${t.days} DAY`), t.hours && n.push(`${t.hours} HOUR`), t.minutes && n.push(`${t.minutes} MINUTE`), t.seconds && n.push(`${t.seconds} SECOND`), n.length === 0) return D`INTERVAL 0 SECOND`;
1082
+ if (n.length === 1) return D`INTERVAL ${D.raw(n[0])}`;
1083
1083
  let r = n.map((e) => `INTERVAL ${e}`);
1084
- return O`(${O.raw(r.join(" + "))})`;
1084
+ return D`(${D.raw(r.join(" + "))})`;
1085
1085
  }
1086
1086
  buildTimeDifferenceSeconds(e, t) {
1087
- return O`EXTRACT(EPOCH FROM TIMESTAMP_DIFF(${e}, ${t}))`;
1087
+ return D`EXTRACT(EPOCH FROM TIMESTAMP_DIFF(${e}, ${t}))`;
1088
1088
  }
1089
1089
  buildDateAddInterval(e, t) {
1090
- return O`(${e} + ${this.buildIntervalFromISO(t)})`;
1090
+ return D`(${e} + ${this.buildIntervalFromISO(t)})`;
1091
1091
  }
1092
1092
  buildConditionalAggregation(e, t, n) {
1093
1093
  let r = e.toUpperCase();
1094
- return e === "count" && !t ? O`${O.raw(r)}(CASE WHEN ${n} THEN 1 END)` : O`${O.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
1094
+ return e === "count" && !t ? D`${D.raw(r)}(CASE WHEN ${n} THEN 1 END)` : D`${D.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
1095
1095
  }
1096
1096
  buildDateDiffPeriods(e, t, n) {
1097
- return O`DATE_DIFF('${O.raw(n)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
1097
+ return D`DATE_DIFF('${D.raw(n)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
1098
1098
  }
1099
1099
  buildPeriodSeriesSubquery(e) {
1100
- return O`(SELECT number as period_number FROM numbers(${e + 1})) p`;
1100
+ return D`(SELECT number as period_number FROM numbers(${e + 1})) p`;
1101
1101
  }
1102
1102
  buildTimeDimension(e, t) {
1103
1103
  switch (e) {
1104
- case "year": return O`DATE_TRUNC(YEAR, ${t}::TIMESTAMP)`;
1105
- case "quarter": return O`DATE_TRUNC(QUARTER, ${t}::TIMESTAMP)`;
1106
- case "month": return O`DATE_TRUNC(MONTH, ${t}::TIMESTAMP)`;
1107
- case "week": return O`DATE_TRUNC(WEEK, ${t}::TIMESTAMP)`;
1108
- case "day": return O`DATE_TRUNC(DAY, ${t}::TIMESTAMP)::TIMESTAMP`;
1109
- case "hour": return O`DATE_TRUNC(HOUR, ${t}::TIMESTAMP)`;
1110
- case "minute": return O`DATE_TRUNC(MINUTE, ${t}::TIMESTAMP)`;
1111
- case "second": return O`DATE_TRUNC(SECOND, ${t}::TIMESTAMP)`;
1104
+ case "year": return D`DATE_TRUNC(YEAR, ${t}::TIMESTAMP)`;
1105
+ case "quarter": return D`DATE_TRUNC(QUARTER, ${t}::TIMESTAMP)`;
1106
+ case "month": return D`DATE_TRUNC(MONTH, ${t}::TIMESTAMP)`;
1107
+ case "week": return D`DATE_TRUNC(WEEK, ${t}::TIMESTAMP)`;
1108
+ case "day": return D`DATE_TRUNC(DAY, ${t}::TIMESTAMP)::TIMESTAMP`;
1109
+ case "hour": return D`DATE_TRUNC(HOUR, ${t}::TIMESTAMP)`;
1110
+ case "minute": return D`DATE_TRUNC(MINUTE, ${t}::TIMESTAMP)`;
1111
+ case "second": return D`DATE_TRUNC(SECOND, ${t}::TIMESTAMP)`;
1112
1112
  default: return t;
1113
1113
  }
1114
1114
  }
1115
1115
  buildStringCondition(e, t, n) {
1116
1116
  switch (t) {
1117
- case "contains": return O`LOWER(${e}) LIKE LOWER(${`%${n}%`})`;
1118
- case "notContains": return O`LOWER(${e}) NOT LIKE LOWER(${`%${n}%`})`;
1119
- case "startsWith": return O`LOWER(${e}) LIKE LOWER(${`${n}%`})`;
1120
- case "endsWith": return O`LOWER(${e}) LIKE LOWER(${`%${n}`})`;
1121
- case "like": return O`${e} LIKE ${n}`;
1122
- case "notLike": return O`${e} NOT LIKE ${n}`;
1123
- case "ilike": return O`LOWER(${e}) LIKE LOWER(${n})`;
1124
- case "regex": return O`${e} REGEXP ${n}`;
1125
- case "notRegex": return O`NOT (${e} REGEXP ${n})`;
1117
+ case "contains": return D`LOWER(${e}) LIKE LOWER(${`%${n}%`})`;
1118
+ case "notContains": return D`LOWER(${e}) NOT LIKE LOWER(${`%${n}%`})`;
1119
+ case "startsWith": return D`LOWER(${e}) LIKE LOWER(${`${n}%`})`;
1120
+ case "endsWith": return D`LOWER(${e}) LIKE LOWER(${`%${n}`})`;
1121
+ case "like": return D`${e} LIKE ${n}`;
1122
+ case "notLike": return D`${e} NOT LIKE ${n}`;
1123
+ case "ilike": return D`LOWER(${e}) LIKE LOWER(${n})`;
1124
+ case "regex": return D`${e} REGEXP ${n}`;
1125
+ case "notRegex": return D`NOT (${e} REGEXP ${n})`;
1126
1126
  default: throw Error(`Unsupported string operator: ${t}`);
1127
1127
  }
1128
1128
  }
1129
1129
  castToType(e, t) {
1130
1130
  switch (t) {
1131
- case "timestamp": return O`${e}::TIMESTAMP`;
1132
- case "decimal": return O`${e}::DECIMAL`;
1133
- case "integer": return O`${e}::INTEGER`;
1131
+ case "timestamp": return D`${e}::TIMESTAMP`;
1132
+ case "decimal": return D`${e}::DECIMAL`;
1133
+ case "integer": return D`${e}::INTEGER`;
1134
1134
  default: throw Error(`Unsupported cast type: ${t}`);
1135
1135
  }
1136
1136
  }
1137
1137
  buildAvg(e) {
1138
- return O`COALESCE(AVG(${e}), 0)`;
1138
+ return D`COALESCE(AVG(${e}), 0)`;
1139
1139
  }
1140
1140
  buildCaseWhen(e, t) {
1141
- let n = e.map((e) => O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
1142
- return t === void 0 ? O`CASE ${n} END` : O`CASE ${n} ELSE ${t} END`;
1141
+ let n = e.map((e) => D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
1142
+ return t === void 0 ? D`CASE ${n} END` : D`CASE ${n} ELSE ${t} END`;
1143
1143
  }
1144
1144
  buildBooleanLiteral(e) {
1145
- return e ? O`TRUE` : O`FALSE`;
1145
+ return e ? D`TRUE` : D`FALSE`;
1146
1146
  }
1147
1147
  convertFilterValue(e) {
1148
1148
  return e;
@@ -1171,35 +1171,35 @@ var V = class {
1171
1171
  }
1172
1172
  buildStddev(e, t = !1) {
1173
1173
  let n = t ? "STDDEV_SAMP" : "STDDEV_POP";
1174
- return O`COALESCE(${O.raw(n)}(${e}), 0)`;
1174
+ return D`COALESCE(${D.raw(n)}(${e}), 0)`;
1175
1175
  }
1176
1176
  buildVariance(e, t = !1) {
1177
1177
  let n = t ? "COVAR_SAMP" : "COVAR_POP";
1178
- return O`COALESCE(${O.raw(n)}(${e}, ${e}), 0)`;
1178
+ return D`COALESCE(${D.raw(n)}(${e}, ${e}), 0)`;
1179
1179
  }
1180
1180
  buildPercentile(e, t) {
1181
1181
  throw Error("Percentile functions are not yet supported for Databend");
1182
1182
  }
1183
1183
  buildWindowFunction(e, t, n, r, i) {
1184
- let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
1184
+ let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
1185
1185
  if (i?.frame) {
1186
1186
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
1187
- s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
1187
+ s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
1188
1188
  }
1189
1189
  let c = [];
1190
1190
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
1191
- let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
1191
+ let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
1192
1192
  switch (e) {
1193
- case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1194
- case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1195
- case "rank": return O`RANK() ${l}`;
1196
- case "denseRank": return O`DENSE_RANK() ${l}`;
1197
- case "rowNumber": return O`ROW_NUMBER() ${l}`;
1198
- case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
1199
- case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
1200
- case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
1201
- case "movingAvg": return O`AVG(${t}) ${l}`;
1202
- case "movingSum": return O`SUM(${t}) ${l}`;
1193
+ case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1194
+ case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1195
+ case "rank": return D`RANK() ${l}`;
1196
+ case "denseRank": return D`DENSE_RANK() ${l}`;
1197
+ case "rowNumber": return D`ROW_NUMBER() ${l}`;
1198
+ case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
1199
+ case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
1200
+ case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
1201
+ case "movingAvg": return D`AVG(${t}) ${l}`;
1202
+ case "movingSum": return D`SUM(${t}) ${l}`;
1203
1203
  default: throw Error(`Unsupported window function: ${e}`);
1204
1204
  }
1205
1205
  }
@@ -1211,70 +1211,70 @@ var V = class {
1211
1211
  return !0;
1212
1212
  }
1213
1213
  buildIntervalFromISO(e) {
1214
- return O`${this.durationToSeconds(e)}`;
1214
+ return D`${this.durationToSeconds(e)}`;
1215
1215
  }
1216
1216
  buildTimeDifferenceSeconds(e, t) {
1217
- return O`DATEDIFF('SECOND', ${t}, ${e})`;
1217
+ return D`DATEDIFF('SECOND', ${t}, ${e})`;
1218
1218
  }
1219
1219
  buildDateAddInterval(e, t) {
1220
1220
  let n = this.parseISODuration(t), r = e;
1221
- return n.years && (r = O`DATEADD('YEAR', ${n.years}, ${r})`), n.months && (r = O`DATEADD('MONTH', ${n.months}, ${r})`), n.days && (r = O`DATEADD('DAY', ${n.days}, ${r})`), n.hours && (r = O`DATEADD('HOUR', ${n.hours}, ${r})`), n.minutes && (r = O`DATEADD('MINUTE', ${n.minutes}, ${r})`), n.seconds && (r = O`DATEADD('SECOND', ${n.seconds}, ${r})`), r;
1221
+ return n.years && (r = D`DATEADD('YEAR', ${n.years}, ${r})`), n.months && (r = D`DATEADD('MONTH', ${n.months}, ${r})`), n.days && (r = D`DATEADD('DAY', ${n.days}, ${r})`), n.hours && (r = D`DATEADD('HOUR', ${n.hours}, ${r})`), n.minutes && (r = D`DATEADD('MINUTE', ${n.minutes}, ${r})`), n.seconds && (r = D`DATEADD('SECOND', ${n.seconds}, ${r})`), r;
1222
1222
  }
1223
1223
  buildConditionalAggregation(e, t, n) {
1224
1224
  let r = e.toUpperCase();
1225
- return e === "count" && !t ? O`${O.raw(r)}(CASE WHEN ${n} THEN 1 END)` : O`${O.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
1225
+ return e === "count" && !t ? D`${D.raw(r)}(CASE WHEN ${n} THEN 1 END)` : D`${D.raw(r)}(CASE WHEN ${n} THEN ${t} END)`;
1226
1226
  }
1227
1227
  buildDateDiffPeriods(e, t, n) {
1228
1228
  let r = n.toUpperCase();
1229
- return O`DATEDIFF('${O.raw(r)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
1229
+ return D`DATEDIFF('${D.raw(r)}', ${e}::TIMESTAMP, ${t}::TIMESTAMP)`;
1230
1230
  }
1231
1231
  buildPeriodSeriesSubquery(e) {
1232
- return O`(SELECT ROW_NUMBER() OVER (ORDER BY 1) - 1 AS period_number FROM TABLE(GENERATOR(ROWCOUNT => ${e + 1}))) p`;
1232
+ return D`(SELECT ROW_NUMBER() OVER (ORDER BY 1) - 1 AS period_number FROM TABLE(GENERATOR(ROWCOUNT => ${e + 1}))) p`;
1233
1233
  }
1234
1234
  buildTimeDimension(e, t) {
1235
1235
  switch (e) {
1236
- case "year": return O`DATE_TRUNC('YEAR', ${t}::TIMESTAMP)`;
1237
- case "quarter": return O`DATE_TRUNC('QUARTER', ${t}::TIMESTAMP)`;
1238
- case "month": return O`DATE_TRUNC('MONTH', ${t}::TIMESTAMP)`;
1239
- case "week": return O`DATE_TRUNC('WEEK', ${t}::TIMESTAMP)`;
1240
- case "day": return O`DATE_TRUNC('DAY', ${t}::TIMESTAMP)::TIMESTAMP`;
1241
- case "hour": return O`DATE_TRUNC('HOUR', ${t}::TIMESTAMP)`;
1242
- case "minute": return O`DATE_TRUNC('MINUTE', ${t}::TIMESTAMP)`;
1243
- case "second": return O`DATE_TRUNC('SECOND', ${t}::TIMESTAMP)`;
1236
+ case "year": return D`DATE_TRUNC('YEAR', ${t}::TIMESTAMP)`;
1237
+ case "quarter": return D`DATE_TRUNC('QUARTER', ${t}::TIMESTAMP)`;
1238
+ case "month": return D`DATE_TRUNC('MONTH', ${t}::TIMESTAMP)`;
1239
+ case "week": return D`DATE_TRUNC('WEEK', ${t}::TIMESTAMP)`;
1240
+ case "day": return D`DATE_TRUNC('DAY', ${t}::TIMESTAMP)::TIMESTAMP`;
1241
+ case "hour": return D`DATE_TRUNC('HOUR', ${t}::TIMESTAMP)`;
1242
+ case "minute": return D`DATE_TRUNC('MINUTE', ${t}::TIMESTAMP)`;
1243
+ case "second": return D`DATE_TRUNC('SECOND', ${t}::TIMESTAMP)`;
1244
1244
  default: return t;
1245
1245
  }
1246
1246
  }
1247
1247
  buildStringCondition(e, t, n) {
1248
1248
  switch (t) {
1249
- case "contains": return O`${e} ILIKE ${`%${n}%`}`;
1250
- case "notContains": return O`${e} NOT ILIKE ${`%${n}%`}`;
1251
- case "startsWith": return O`${e} ILIKE ${`${n}%`}`;
1252
- case "endsWith": return O`${e} ILIKE ${`%${n}`}`;
1253
- case "like": return O`${e} LIKE ${n}`;
1254
- case "notLike": return O`${e} NOT LIKE ${n}`;
1255
- case "ilike": return O`${e} ILIKE ${n}`;
1256
- case "regex": return O`REGEXP_LIKE(${e}, ${n})`;
1257
- case "notRegex": return O`NOT REGEXP_LIKE(${e}, ${n})`;
1249
+ case "contains": return D`${e} ILIKE ${`%${n}%`}`;
1250
+ case "notContains": return D`${e} NOT ILIKE ${`%${n}%`}`;
1251
+ case "startsWith": return D`${e} ILIKE ${`${n}%`}`;
1252
+ case "endsWith": return D`${e} ILIKE ${`%${n}`}`;
1253
+ case "like": return D`${e} LIKE ${n}`;
1254
+ case "notLike": return D`${e} NOT LIKE ${n}`;
1255
+ case "ilike": return D`${e} ILIKE ${n}`;
1256
+ case "regex": return D`REGEXP_LIKE(${e}, ${n})`;
1257
+ case "notRegex": return D`NOT REGEXP_LIKE(${e}, ${n})`;
1258
1258
  default: throw Error(`Unsupported string operator: ${t}`);
1259
1259
  }
1260
1260
  }
1261
1261
  castToType(e, t) {
1262
1262
  switch (t) {
1263
- case "timestamp": return O`${e}::TIMESTAMP`;
1264
- case "decimal": return O`${e}::DECIMAL`;
1265
- case "integer": return O`${e}::INTEGER`;
1263
+ case "timestamp": return D`${e}::TIMESTAMP`;
1264
+ case "decimal": return D`${e}::DECIMAL`;
1265
+ case "integer": return D`${e}::INTEGER`;
1266
1266
  default: throw Error(`Unsupported cast type: ${t}`);
1267
1267
  }
1268
1268
  }
1269
1269
  buildAvg(e) {
1270
- return O`COALESCE(AVG(${e}), 0)`;
1270
+ return D`COALESCE(AVG(${e}), 0)`;
1271
1271
  }
1272
1272
  buildCaseWhen(e, t) {
1273
- let n = e.map((e) => O`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => O`${e} ${t}`);
1274
- return t === void 0 ? O`CASE ${n} END` : O`CASE ${n} ELSE ${t} END`;
1273
+ let n = e.map((e) => D`WHEN ${e.when} THEN ${e.then}`).reduce((e, t) => D`${e} ${t}`);
1274
+ return t === void 0 ? D`CASE ${n} END` : D`CASE ${n} ELSE ${t} END`;
1275
1275
  }
1276
1276
  buildBooleanLiteral(e) {
1277
- return e ? O`TRUE` : O`FALSE`;
1277
+ return e ? D`TRUE` : D`FALSE`;
1278
1278
  }
1279
1279
  convertFilterValue(e) {
1280
1280
  return e;
@@ -1303,36 +1303,36 @@ var V = class {
1303
1303
  }
1304
1304
  buildStddev(e, t = !1) {
1305
1305
  let n = t ? "STDDEV_SAMP" : "STDDEV_POP";
1306
- return O`COALESCE(${O.raw(n)}(${e}), 0)`;
1306
+ return D`COALESCE(${D.raw(n)}(${e}), 0)`;
1307
1307
  }
1308
1308
  buildVariance(e, t = !1) {
1309
1309
  let n = t ? "VAR_SAMP" : "VAR_POP";
1310
- return O`COALESCE(${O.raw(n)}(${e}), 0)`;
1310
+ return D`COALESCE(${D.raw(n)}(${e}), 0)`;
1311
1311
  }
1312
1312
  buildPercentile(e, t) {
1313
1313
  let n = (t / 100).toString();
1314
- return O`PERCENTILE_CONT(${O.raw(n)}) WITHIN GROUP (ORDER BY ${e})`;
1314
+ return D`PERCENTILE_CONT(${D.raw(n)}) WITHIN GROUP (ORDER BY ${e})`;
1315
1315
  }
1316
1316
  buildWindowFunction(e, t, n, r, i) {
1317
- let a = n && n.length > 0 ? O`PARTITION BY ${O.join(n, O`, `)}` : O``, o = r && r.length > 0 ? O`ORDER BY ${O.join(r.map((e) => e.direction === "desc" ? O`${e.field} DESC` : O`${e.field} ASC`), O`, `)}` : O``, s = O``;
1317
+ let a = n && n.length > 0 ? D`PARTITION BY ${D.join(n, D`, `)}` : D``, o = r && r.length > 0 ? D`ORDER BY ${D.join(r.map((e) => e.direction === "desc" ? D`${e.field} DESC` : D`${e.field} ASC`), D`, `)}` : D``, s = D``;
1318
1318
  if (i?.frame) {
1319
1319
  let { type: e, start: t, end: n } = i.frame, r = e.toUpperCase(), a = t === "unbounded" ? "UNBOUNDED PRECEDING" : typeof t == "number" ? `${t} PRECEDING` : "CURRENT ROW", o = n === "unbounded" ? "UNBOUNDED FOLLOWING" : n === "current" ? "CURRENT ROW" : typeof n == "number" ? `${n} FOLLOWING` : "CURRENT ROW";
1320
- s = O`${O.raw(r)} BETWEEN ${O.raw(a)} AND ${O.raw(o)}`;
1320
+ s = D`${D.raw(r)} BETWEEN ${D.raw(a)} AND ${D.raw(o)}`;
1321
1321
  }
1322
1322
  let c = [];
1323
1323
  n && n.length > 0 && c.push(a), r && r.length > 0 && c.push(o), i?.frame && c.push(s);
1324
- let l = O`OVER (${c.length > 0 ? O.join(c, O` `) : O``})`;
1324
+ let l = D`OVER (${c.length > 0 ? D.join(c, D` `) : D``})`;
1325
1325
  switch (e) {
1326
- case "lag": return O`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1327
- case "lead": return O`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? O`` : O`, ${i.defaultValue}`}) ${l}`;
1328
- case "rank": return O`RANK() ${l}`;
1329
- case "denseRank": return O`DENSE_RANK() ${l}`;
1330
- case "rowNumber": return O`ROW_NUMBER() ${l}`;
1331
- case "ntile": return O`NTILE(${i?.nTile ?? 4}) ${l}`;
1332
- case "firstValue": return O`FIRST_VALUE(${t}) ${l}`;
1333
- case "lastValue": return O`LAST_VALUE(${t}) ${l}`;
1334
- case "movingAvg": return O`AVG(${t}) ${l}`;
1335
- case "movingSum": return O`SUM(${t}) ${l}`;
1326
+ case "lag": return D`LAG(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1327
+ case "lead": return D`LEAD(${t}, ${i?.offset ?? 1}${i?.defaultValue === void 0 ? D`` : D`, ${i.defaultValue}`}) ${l}`;
1328
+ case "rank": return D`RANK() ${l}`;
1329
+ case "denseRank": return D`DENSE_RANK() ${l}`;
1330
+ case "rowNumber": return D`ROW_NUMBER() ${l}`;
1331
+ case "ntile": return D`NTILE(${i?.nTile ?? 4}) ${l}`;
1332
+ case "firstValue": return D`FIRST_VALUE(${t}) ${l}`;
1333
+ case "lastValue": return D`LAST_VALUE(${t}) ${l}`;
1334
+ case "movingAvg": return D`AVG(${t}) ${l}`;
1335
+ case "movingSum": return D`SUM(${t}) ${l}`;
1336
1336
  default: throw Error(`Unsupported window function: ${e}`);
1337
1337
  }
1338
1338
  }
@@ -1467,7 +1467,7 @@ var Te = class extends H {
1467
1467
  async explainQuery(e, t, n) {
1468
1468
  let r = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
1469
1469
  if (!this.db.execute) throw Error("PostgreSQL database instance must have an execute method");
1470
- let i = await this.db.execute(O`${O.raw(r)} ${O.raw(e.replace(/\$(\d+)/g, (e, n) => {
1470
+ let i = await this.db.execute(D`${D.raw(r)} ${D.raw(e.replace(/\$(\d+)/g, (e, n) => {
1471
1471
  let r = t[parseInt(n, 10) - 1];
1472
1472
  return r === null ? "NULL" : typeof r == "number" ? String(r) : typeof r == "boolean" ? r ? "TRUE" : "FALSE" : r instanceof Date ? `'${r.toISOString()}'` : `'${String(r).replace(/'/g, "''")}'`;
1473
1473
  }))}`), a = [];
@@ -1484,7 +1484,7 @@ var Te = class extends H {
1484
1484
  if (!e || e.length === 0) return [];
1485
1485
  if (!this.db.execute) throw Error("PostgreSQL database instance must have an execute method");
1486
1486
  try {
1487
- let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = we(await this.db.execute(O`
1487
+ let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = we(await this.db.execute(D`
1488
1488
  SELECT
1489
1489
  t.relname as table_name,
1490
1490
  i.relname as index_name,
@@ -1498,7 +1498,7 @@ var Te = class extends H {
1498
1498
  JOIN LATERAL unnest(ix.indkey) WITH ORDINALITY AS k(attnum, n) ON true
1499
1499
  JOIN pg_attribute a ON a.attrelid = t.oid AND a.attnum = k.attnum
1500
1500
  WHERE n.nspname = 'public'
1501
- AND t.relname IN (${O.raw(t)})
1501
+ AND t.relname IN (${D.raw(t)})
1502
1502
  GROUP BY t.relname, i.relname, ix.indisunique, ix.indisprimary
1503
1503
  ORDER BY t.relname, i.relname
1504
1504
  `));
@@ -1602,7 +1602,7 @@ var ke = class extends H {
1602
1602
  });
1603
1603
  let a = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
1604
1604
  if (!this.db.execute) throw Error("MySQL database instance must have an execute method");
1605
- let o = await this.db.execute(O.raw(`${a} ${r}`)), s = [];
1605
+ let o = await this.db.execute(D.raw(`${a} ${r}`)), s = [];
1606
1606
  if (Array.isArray(o)) for (let e of o) e && typeof e == "object" && s.push({
1607
1607
  id: e.id || 1,
1608
1608
  select_type: e.select_type || "SIMPLE",
@@ -1626,7 +1626,7 @@ var ke = class extends H {
1626
1626
  if (!e || e.length === 0) return [];
1627
1627
  if (!this.db.execute) throw Error("MySQL database instance must have an execute method");
1628
1628
  try {
1629
- let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(O`
1629
+ let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(D`
1630
1630
  SELECT
1631
1631
  TABLE_NAME as table_name,
1632
1632
  INDEX_NAME as index_name,
@@ -1635,7 +1635,7 @@ var ke = class extends H {
1635
1635
  CASE WHEN INDEX_NAME = 'PRIMARY' THEN TRUE ELSE FALSE END as is_primary
1636
1636
  FROM INFORMATION_SCHEMA.STATISTICS
1637
1637
  WHERE TABLE_SCHEMA = DATABASE()
1638
- AND LOWER(TABLE_NAME) IN (${O.raw(t)})
1638
+ AND LOWER(TABLE_NAME) IN (${D.raw(t)})
1639
1639
  GROUP BY TABLE_NAME, INDEX_NAME, NON_UNIQUE
1640
1640
  ORDER BY TABLE_NAME, INDEX_NAME
1641
1641
  `);
@@ -1755,7 +1755,7 @@ var Ne = class extends H {
1755
1755
  return e === null ? "NULL" : typeof e == "number" ? String(e) : typeof e == "boolean" ? e ? "1" : "0" : e instanceof Date ? `'${e.toISOString()}'` : `'${String(e).replace(/'/g, "''")}'`;
1756
1756
  });
1757
1757
  let a = `EXPLAIN QUERY PLAN ${r}`, o;
1758
- if (this.db.all) o = this.db.all(O.raw(a));
1758
+ if (this.db.all) o = this.db.all(D.raw(a));
1759
1759
  else throw Error("SQLite database instance must have an all() method for EXPLAIN");
1760
1760
  let s = [];
1761
1761
  if (Array.isArray(o)) for (let e of o) e && typeof e == "object" && s.push({
@@ -1775,9 +1775,9 @@ var Ne = class extends H {
1775
1775
  try {
1776
1776
  let t = [];
1777
1777
  for (let n of e) {
1778
- let e = this.db.all(O.raw(`SELECT name, "unique", origin FROM pragma_index_list('${n.toLowerCase()}')`));
1778
+ let e = this.db.all(D.raw(`SELECT name, "unique", origin FROM pragma_index_list('${n.toLowerCase()}')`));
1779
1779
  if (Array.isArray(e)) for (let r of e) {
1780
- let e = r.name, i = !!r.unique, a = r.origin, o = this.db.all(O.raw(`SELECT name FROM pragma_index_info('${e}') ORDER BY seqno`)), s = [];
1780
+ let e = r.name, i = !!r.unique, a = r.origin, o = this.db.all(D.raw(`SELECT name FROM pragma_index_info('${e}') ORDER BY seqno`)), s = [];
1781
1781
  if (Array.isArray(o)) for (let e of o) {
1782
1782
  let t = e.name;
1783
1783
  typeof t == "string" && s.push(t);
@@ -1962,7 +1962,7 @@ var Be = class extends H {
1962
1962
  async explainQuery(e, t, n) {
1963
1963
  let r = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
1964
1964
  if (!this.db.execute) throw Error("DuckDB database instance must have an execute method");
1965
- let i = await this.db.execute(O`${O.raw(r)} ${O.raw(e.replace(/\$(\d+)/g, (e, n) => {
1965
+ let i = await this.db.execute(D`${D.raw(r)} ${D.raw(e.replace(/\$(\d+)/g, (e, n) => {
1966
1966
  let r = t[parseInt(n, 10) - 1];
1967
1967
  return r === null ? "NULL" : typeof r == "number" ? String(r) : typeof r == "boolean" ? r ? "TRUE" : "FALSE" : r instanceof Date ? `'${r.toISOString()}'` : `'${String(r).replace(/'/g, "''")}'`;
1968
1968
  }))}`), a = [];
@@ -1981,7 +1981,7 @@ var Be = class extends H {
1981
1981
  if (!e || e.length === 0) return [];
1982
1982
  if (!this.db.execute) throw Error("DuckDB database instance must have an execute method");
1983
1983
  try {
1984
- let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(O`
1984
+ let t = e.map((e) => `'${e.toLowerCase()}'`).join(","), n = await this.db.execute(D`
1985
1985
  SELECT
1986
1986
  table_name,
1987
1987
  index_name,
@@ -1989,7 +1989,7 @@ var Be = class extends H {
1989
1989
  is_unique,
1990
1990
  is_primary
1991
1991
  FROM duckdb_indexes()
1992
- WHERE LOWER(table_name) IN (${O.raw(t)})
1992
+ WHERE LOWER(table_name) IN (${D.raw(t)})
1993
1993
  GROUP BY table_name, index_name, is_unique, is_primary
1994
1994
  ORDER BY table_name, index_name
1995
1995
  `);
@@ -2148,7 +2148,7 @@ var Ge = class extends H {
2148
2148
  async explainQuery(e, t, n) {
2149
2149
  let r = n?.analyze ? "EXPLAIN ANALYZE" : "EXPLAIN";
2150
2150
  if (!this.db.execute) throw Error("Databend database instance must have an execute method");
2151
- let i = await this.db.execute(O`${O.raw(r)} ${O.raw(e.replace(/\$(\d+)/g, (e, n) => {
2151
+ let i = await this.db.execute(D`${D.raw(r)} ${D.raw(e.replace(/\$(\d+)/g, (e, n) => {
2152
2152
  let r = t[parseInt(n, 10) - 1];
2153
2153
  return r === null ? "NULL" : typeof r == "number" ? String(r) : typeof r == "boolean" ? r ? "TRUE" : "FALSE" : r instanceof Date ? `'${r.toISOString()}'` : `'${String(r).replace(/'/g, "''")}'`;
2154
2154
  }))}`), a = [];
@@ -2309,7 +2309,7 @@ var Xe = class extends H {
2309
2309
  }
2310
2310
  async explainQuery(e, t, n) {
2311
2311
  if (n?.analyze, !this.db.execute) throw Error("Snowflake database instance must have an execute method");
2312
- let r = await this.db.execute(O`${O.raw("EXPLAIN")} ${O.raw(e.replace(/\?/g, () => {
2312
+ let r = await this.db.execute(D`${D.raw("EXPLAIN")} ${D.raw(e.replace(/\?/g, () => {
2313
2313
  let e = t.shift();
2314
2314
  return e === null ? "NULL" : typeof e == "number" ? String(e) : typeof e == "boolean" ? e ? "TRUE" : "FALSE" : e instanceof Date ? `'${e.toISOString()}'` : `'${String(e).replace(/'/g, "''")}'`;
2315
2315
  }))}`), i = [];
@@ -2372,7 +2372,7 @@ function et(e, t) {
2372
2372
  }
2373
2373
  }
2374
2374
  function tt(e) {
2375
- return e && typeof e == "object" ? O`${O`${e}`}` : e;
2375
+ return e && typeof e == "object" ? D`${D`${e}`}` : e;
2376
2376
  }
2377
2377
  function nt(e) {
2378
2378
  if (e === "__proto__" || e === "constructor" || e === "prototype") throw Error(`Unsafe property key: ${e}`);
@@ -2385,12 +2385,12 @@ function rt(e, t) {
2385
2385
  if (e.relationship !== "belongsToMany" || !e.through) throw Error("expandBelongsToManyJoin can only be called on belongsToMany relationships with through configuration");
2386
2386
  let { table: n, sourceKey: r, targetKey: i, securitySql: a } = e.through, o = [];
2387
2387
  for (let e of r) {
2388
- let t = e.as || N;
2388
+ let t = e.as || M;
2389
2389
  o.push(t(e.source, e.target));
2390
2390
  }
2391
2391
  let s = [];
2392
2392
  for (let e of i) {
2393
- let t = e.as || N;
2393
+ let t = e.as || M;
2394
2394
  s.push(t(e.source, e.target));
2395
2395
  }
2396
2396
  let c;
@@ -2403,11 +2403,11 @@ function rt(e, t) {
2403
2403
  junctionJoins: [{
2404
2404
  joinType: l,
2405
2405
  table: n,
2406
- condition: F(...o)
2406
+ condition: P(...o)
2407
2407
  }, {
2408
2408
  joinType: l,
2409
2409
  table: n,
2410
- condition: F(...s)
2410
+ condition: P(...s)
2411
2411
  }],
2412
2412
  junctionSecurityConditions: c
2413
2413
  };
@@ -2575,7 +2575,7 @@ var Y = class {
2575
2575
  }
2576
2576
  buildTimeDimensionExpression(e, t, n) {
2577
2577
  let r = W(e, n);
2578
- return t ? this.databaseAdapter.buildTimeDimension(t, r) : r instanceof S ? r : O`${r}`;
2578
+ return t ? this.databaseAdapter.buildTimeDimension(t, r) : r instanceof S ? r : D`${r}`;
2579
2579
  }
2580
2580
  buildDateRangeCondition(e, t) {
2581
2581
  if (!t) return null;
@@ -2586,13 +2586,13 @@ var Y = class {
2586
2586
  let e = typeof r == "number" ? /* @__PURE__ */ new Date(r * (this.databaseAdapter.getEngineType() === "sqlite" ? 1e3 : 1)) : new Date(r), t = new Date(e);
2587
2587
  t.setUTCHours(23, 59, 59, 999), r = this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? Math.floor(t.getTime() / 1e3) : t.getTime() : t.toISOString();
2588
2588
  }
2589
- return F(L(e, n), R(e, r));
2589
+ return P(I(e, n), L(e, r));
2590
2590
  }
2591
2591
  if (typeof t == "string") {
2592
2592
  let n = this.parseRelativeDateRange(t);
2593
2593
  if (n) {
2594
2594
  let t, r;
2595
- return this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? (t = Math.floor(n.start.getTime() / 1e3), r = Math.floor(n.end.getTime() / 1e3)) : (t = n.start.getTime(), r = n.end.getTime()) : (t = n.start.toISOString(), r = n.end.toISOString()), F(L(e, t), R(e, r));
2595
+ return this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? (t = Math.floor(n.start.getTime() / 1e3), r = Math.floor(n.end.getTime() / 1e3)) : (t = n.start.getTime(), r = n.end.getTime()) : (t = n.start.toISOString(), r = n.end.toISOString()), P(I(e, t), L(e, r));
2596
2596
  }
2597
2597
  let r = this.normalizeDate(t);
2598
2598
  if (!r) return null;
@@ -2601,7 +2601,7 @@ var Y = class {
2601
2601
  let o = new Date(i);
2602
2602
  o.setUTCHours(23, 59, 59, 999);
2603
2603
  let s, c;
2604
- return this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? (s = Math.floor(a.getTime() / 1e3), c = Math.floor(o.getTime() / 1e3)) : (s = a.getTime(), c = o.getTime()) : (s = a.toISOString(), c = o.toISOString()), F(L(e, s), R(e, c));
2604
+ return this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? (s = Math.floor(a.getTime() / 1e3), c = Math.floor(o.getTime() / 1e3)) : (s = a.getTime(), c = o.getTime()) : (s = a.toISOString(), c = o.toISOString()), P(I(e, s), L(e, c));
2605
2605
  }
2606
2606
  return null;
2607
2607
  }
@@ -2751,18 +2751,18 @@ var Y = class {
2751
2751
  if (a.length === 0 && !["set", "notSet"].includes(t)) return t === "equals" ? this.databaseAdapter.buildBooleanLiteral(!1) : null;
2752
2752
  let o = a[0];
2753
2753
  switch (t) {
2754
- case "equals": return a.length > 1 ? r?.type === "time" ? ne(e, a.map((e) => this.dateTimeBuilder.normalizeDate(e) || e)) : ne(e, a) : a.length === 1 ? N(e, r?.type === "time" && this.dateTimeBuilder.normalizeDate(o) || o) : this.databaseAdapter.buildBooleanLiteral(!1);
2755
- case "notEquals": return a.length > 1 ? re(e, a) : a.length === 1 ? P(e, o) : null;
2754
+ case "equals": return a.length > 1 ? r?.type === "time" ? re(e, a.map((e) => this.dateTimeBuilder.normalizeDate(e) || e)) : re(e, a) : a.length === 1 ? M(e, r?.type === "time" && this.dateTimeBuilder.normalizeDate(o) || o) : this.databaseAdapter.buildBooleanLiteral(!1);
2755
+ case "notEquals": return a.length > 1 ? ie(e, a) : a.length === 1 ? N(e, o) : null;
2756
2756
  case "contains": return this.databaseAdapter.buildStringCondition(e, "contains", o);
2757
2757
  case "notContains": return this.databaseAdapter.buildStringCondition(e, "notContains", o);
2758
2758
  case "startsWith": return this.databaseAdapter.buildStringCondition(e, "startsWith", o);
2759
2759
  case "endsWith": return this.databaseAdapter.buildStringCondition(e, "endsWith", o);
2760
- case "gt": return ee(e, o);
2761
- case "gte": return L(e, o);
2762
- case "lt": return te(e, o);
2763
- case "lte": return R(e, o);
2764
- case "set": return ae(e);
2765
- case "notSet": return ie(e);
2760
+ case "gt": return te(e, o);
2761
+ case "gte": return I(e, o);
2762
+ case "lt": return ne(e, o);
2763
+ case "lte": return L(e, o);
2764
+ case "set": return oe(e);
2765
+ case "notSet": return ae(e);
2766
2766
  case "inDateRange":
2767
2767
  if (a.length >= 2) {
2768
2768
  let t = this.dateTimeBuilder.normalizeDate(a[0]), r = this.dateTimeBuilder.normalizeDate(a[1]);
@@ -2772,43 +2772,43 @@ var Y = class {
2772
2772
  let e = typeof r == "number" ? /* @__PURE__ */ new Date(r * (this.databaseAdapter.getEngineType() === "sqlite" ? 1e3 : 1)) : new Date(r), t = new Date(e);
2773
2773
  t.setUTCHours(23, 59, 59, 999), r = this.databaseAdapter.isTimestampInteger() ? this.databaseAdapter.getEngineType() === "sqlite" ? Math.floor(t.getTime() / 1e3) : t.getTime() : t.toISOString();
2774
2774
  }
2775
- return F(L(e, t), R(e, r));
2775
+ return P(I(e, t), L(e, r));
2776
2776
  }
2777
2777
  }
2778
2778
  return null;
2779
2779
  case "beforeDate": {
2780
2780
  let t = this.dateTimeBuilder.normalizeDate(o);
2781
- return t ? te(e, t) : null;
2781
+ return t ? ne(e, t) : null;
2782
2782
  }
2783
2783
  case "afterDate": {
2784
2784
  let t = this.dateTimeBuilder.normalizeDate(o);
2785
- return t ? ee(e, t) : null;
2785
+ return t ? te(e, t) : null;
2786
2786
  }
2787
- case "between": return a.length >= 2 ? F(L(e, a[0]), R(e, a[1])) : null;
2788
- case "notBetween": return a.length >= 2 ? I(te(e, a[0]), ee(e, a[1])) : null;
2789
- case "in": return a.length > 0 ? ne(e, a) : null;
2790
- case "notIn": return a.length > 0 ? re(e, a) : null;
2787
+ case "between": return a.length >= 2 ? P(I(e, a[0]), L(e, a[1])) : null;
2788
+ case "notBetween": return a.length >= 2 ? F(ne(e, a[0]), te(e, a[1])) : null;
2789
+ case "in": return a.length > 0 ? re(e, a) : null;
2790
+ case "notIn": return a.length > 0 ? ie(e, a) : null;
2791
2791
  case "like": return this.databaseAdapter.buildStringCondition(e, "like", o);
2792
2792
  case "notLike": return this.databaseAdapter.buildStringCondition(e, "notLike", o);
2793
2793
  case "ilike": return this.databaseAdapter.buildStringCondition(e, "ilike", o);
2794
2794
  case "regex": return this.databaseAdapter.buildStringCondition(e, "regex", o);
2795
2795
  case "notRegex": return this.databaseAdapter.buildStringCondition(e, "notRegex", o);
2796
- case "isEmpty": return I(ie(e), N(e, ""));
2797
- case "isNotEmpty": return F(ae(e), P(e, ""));
2798
- case "arrayContains": return this.databaseAdapter.getEngineType() === "postgres" ? oe(e, a) : null;
2799
- case "arrayOverlaps": return this.databaseAdapter.getEngineType() === "postgres" ? ce(e, a) : null;
2800
- case "arrayContained": return this.databaseAdapter.getEngineType() === "postgres" ? se(e, a) : null;
2796
+ case "isEmpty": return F(ae(e), M(e, ""));
2797
+ case "isNotEmpty": return P(oe(e), N(e, ""));
2798
+ case "arrayContains": return this.databaseAdapter.getEngineType() === "postgres" ? se(e, a) : null;
2799
+ case "arrayOverlaps": return this.databaseAdapter.getEngineType() === "postgres" ? le(e, a) : null;
2800
+ case "arrayContained": return this.databaseAdapter.getEngineType() === "postgres" ? ce(e, a) : null;
2801
2801
  default: return null;
2802
2802
  }
2803
2803
  }
2804
2804
  buildLogicalFilter(e, t, n) {
2805
2805
  if ("and" in e && e.and) {
2806
2806
  let r = e.and.map((e) => this.buildSingleFilter(e, t, n)).filter((e) => e !== null);
2807
- return r.length > 0 ? r.length === 1 ? r[0] : F(...r) : null;
2807
+ return r.length > 0 ? r.length === 1 ? r[0] : P(...r) : null;
2808
2808
  }
2809
2809
  if ("or" in e && e.or) {
2810
2810
  let r = e.or.map((e) => this.buildSingleFilter(e, t, n)).filter((e) => e !== null);
2811
- return r.length > 0 ? r.length === 1 ? r[0] : I(...r) : null;
2811
+ return r.length > 0 ? r.length === 1 ? r[0] : F(...r) : null;
2812
2812
  }
2813
2813
  return null;
2814
2814
  }
@@ -2956,7 +2956,7 @@ function pt(e, t) {
2956
2956
  if (!r.get(c)) throw Error(`Cannot substitute {${t}}: cube '${c}' not found`);
2957
2957
  let l = `${c}.${s}`, u = i.get(l);
2958
2958
  if (!u) throw Error(`Cannot substitute {${t}}: measure '${l}' not resolved yet. Ensure measures are resolved in dependency order.`);
2959
- let d = O`${u()}`;
2959
+ let d = D`${u()}`;
2960
2960
  o.set(t, d);
2961
2961
  }
2962
2962
  let s = [], c = [], l = 0;
@@ -2968,10 +2968,10 @@ function pt(e, t) {
2968
2968
  i && c.push(i), l = r + n.length;
2969
2969
  }
2970
2970
  }
2971
- if (s.push(e.substring(l)), c.length === 0) return O.raw(e);
2971
+ if (s.push(e.substring(l)), c.length === 0) return D.raw(e);
2972
2972
  let u = [];
2973
2973
  for (let e = 0; e < s.length; e++) s[e] && u.push(new x(s[e])), e < c.length && u.push(c[e]);
2974
- return O.join(u, O.raw(""));
2974
+ return D.join(u, D.raw(""));
2975
2975
  }
2976
2976
  function mt(e) {
2977
2977
  if (e.length > 1e3) return [];
@@ -3089,26 +3089,26 @@ var Q = class e {
3089
3089
  if (o && o.measures[i]) {
3090
3090
  let t = o.measures[i];
3091
3091
  if (n.measures.includes(e)) {
3092
- let r = O`${O.identifier(n.cteAlias)}.${O.identifier(i)}`, o;
3092
+ let r = D`${D.identifier(n.cteAlias)}.${D.identifier(i)}`, o;
3093
3093
  switch (t.type) {
3094
3094
  case "count":
3095
3095
  case "countDistinct":
3096
3096
  case "sum":
3097
- o = z(r);
3097
+ o = R(r);
3098
3098
  break;
3099
3099
  case "avg":
3100
3100
  o = this.databaseAdapter.buildAvg(r);
3101
3101
  break;
3102
3102
  case "min":
3103
- o = pe(r);
3103
+ o = B(r);
3104
3104
  break;
3105
3105
  case "max":
3106
- o = B(r);
3106
+ o = z(r);
3107
3107
  break;
3108
3108
  case "number":
3109
- o = z(r);
3109
+ o = R(r);
3110
3110
  break;
3111
- default: o = z(r);
3111
+ default: o = R(r);
3112
3112
  }
3113
3113
  a.set(e, () => o);
3114
3114
  }
@@ -3126,16 +3126,16 @@ var Q = class e {
3126
3126
  if (i.joinCubes) for (let e of i.joinCubes) o.set(e.cube.name, e.cube);
3127
3127
  return this.buildCTECalculatedMeasure(n, t, a, o, r);
3128
3128
  } else {
3129
- let e = O`${O.identifier(a.cteAlias)}.${O.identifier(t)}`;
3129
+ let e = D`${D.identifier(a.cteAlias)}.${D.identifier(t)}`;
3130
3130
  switch (n.type) {
3131
3131
  case "count":
3132
3132
  case "countDistinct":
3133
- case "sum": return z(e);
3133
+ case "sum": return R(e);
3134
3134
  case "avg": return this.databaseAdapter.buildAvg(e);
3135
- case "min": return pe(e);
3136
- case "max": return B(e);
3137
- case "number": return z(e);
3138
- default: return z(e);
3135
+ case "min": return B(e);
3136
+ case "max": return z(e);
3137
+ case "number": return R(e);
3138
+ default: return R(e);
3139
3139
  }
3140
3140
  }
3141
3141
  }
@@ -3150,10 +3150,10 @@ var Q = class e {
3150
3150
  if (t.filters && t.filters.length > 0) {
3151
3151
  let e = t.filters.map((e) => {
3152
3152
  let t = e(n);
3153
- return t ? O`(${t})` : void 0;
3153
+ return t ? D`(${t})` : void 0;
3154
3154
  }).filter(Boolean);
3155
3155
  if (e.length > 0) {
3156
- let t = e.length === 1 ? e[0] : F(...e);
3156
+ let t = e.length === 1 ? e[0] : P(...e);
3157
3157
  i = this.databaseAdapter.buildCaseWhen([{
3158
3158
  when: t,
3159
3159
  then: i
@@ -3161,22 +3161,22 @@ var Q = class e {
3161
3161
  }
3162
3162
  }
3163
3163
  switch (t.type) {
3164
- case "count": return de(i);
3165
- case "countDistinct": return fe(i);
3166
- case "sum": return z(i);
3164
+ case "count": return fe(i);
3165
+ case "countDistinct": return pe(i);
3166
+ case "sum": return R(i);
3167
3167
  case "avg": return this.databaseAdapter.buildAvg(i);
3168
- case "min": return pe(i);
3169
- case "max": return B(i);
3168
+ case "min": return B(i);
3169
+ case "max": return z(i);
3170
3170
  case "number": return i;
3171
3171
  case "stddev":
3172
3172
  case "stddevSamp": {
3173
3173
  let e = t.type === "stddevSamp" || t.statisticalConfig?.useSample, n = this.databaseAdapter.buildStddev(i, e);
3174
- return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), O`MAX(NULL)`) : n;
3174
+ return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), D`MAX(NULL)`) : n;
3175
3175
  }
3176
3176
  case "variance":
3177
3177
  case "varianceSamp": {
3178
3178
  let e = t.type === "varianceSamp" || t.statisticalConfig?.useSample, n = this.databaseAdapter.buildVariance(i, e);
3179
- return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), O`MAX(NULL)`) : n;
3179
+ return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), D`MAX(NULL)`) : n;
3180
3180
  }
3181
3181
  case "percentile":
3182
3182
  case "median":
@@ -3196,7 +3196,7 @@ var Q = class e {
3196
3196
  default: e = t.statisticalConfig?.percentile ?? 50;
3197
3197
  }
3198
3198
  let n = this.databaseAdapter.buildPercentile(i, e);
3199
- return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), O`MAX(NULL)`) : n;
3199
+ return n === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), D`MAX(NULL)`) : n;
3200
3200
  }
3201
3201
  case "lag":
3202
3202
  case "lead":
@@ -3242,9 +3242,9 @@ var Q = class e {
3242
3242
  nTile: e.nTile,
3243
3243
  frame: e.frame
3244
3244
  });
3245
- return s === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), O`NULL`) : s;
3245
+ return s === null ? (console.warn(`[drizzle-cube] ${t.type} not supported on ${this.databaseAdapter.getEngineType()}, returning NULL`), D`NULL`) : s;
3246
3246
  }
3247
- default: return de(i);
3247
+ default: return fe(i);
3248
3248
  }
3249
3249
  }
3250
3250
  static WINDOW_FUNCTION_TYPES = [
@@ -3387,7 +3387,7 @@ var Q = class e {
3387
3387
  let t = e.joinKeys.find((e) => e.targetColumn === o);
3388
3388
  if (t && t.sourceColumnObj) i.push(t.sourceColumnObj);
3389
3389
  else {
3390
- let t = O`${O.identifier(e.cteAlias)}.${O.identifier(o)}`;
3390
+ let t = D`${D.identifier(e.cteAlias)}.${D.identifier(o)}`;
3391
3391
  i.push(t);
3392
3392
  }
3393
3393
  } else {
@@ -3406,7 +3406,7 @@ var Q = class e {
3406
3406
  let r = this.dateTimeBuilder.buildTimeDimensionExpression(t.sourceColumnObj, e.granularity, n);
3407
3407
  i.push(r);
3408
3408
  } else {
3409
- let e = O`${O.identifier(a.cteAlias)}.${O.identifier(o)}`;
3409
+ let e = D`${D.identifier(a.cteAlias)}.${D.identifier(o)}`;
3410
3410
  i.push(e);
3411
3411
  }
3412
3412
  } else {
@@ -3434,24 +3434,24 @@ var Q = class e {
3434
3434
  let [t, a] = e.split("."), o = i.get(t);
3435
3435
  if (o && o.dimensions && o.dimensions[a]) {
3436
3436
  let t = o.dimensions[a];
3437
- r[e] = O`${W(t.sql, n)}`.as(e);
3437
+ r[e] = D`${W(t.sql, n)}`.as(e);
3438
3438
  }
3439
3439
  }
3440
3440
  if (t.measures) {
3441
3441
  let e = this.buildResolvedMeasures(t.measures, i, n);
3442
3442
  for (let n of t.measures) {
3443
3443
  let t = e.get(n);
3444
- t && typeof t == "function" && (r[n] = O`${t()}`.as(n));
3444
+ t && typeof t == "function" && (r[n] = D`${t()}`.as(n));
3445
3445
  }
3446
3446
  }
3447
3447
  if (t.timeDimensions) for (let e of t.timeDimensions) {
3448
3448
  let [t, a] = e.dimension.split("."), o = i.get(t);
3449
3449
  if (o && o.dimensions && o.dimensions[a]) {
3450
3450
  let t = o.dimensions[a], i = this.buildTimeDimensionExpression(t.sql, e.granularity, n);
3451
- r[e.dimension] = O`${i}`.as(e.dimension);
3451
+ r[e.dimension] = D`${i}`.as(e.dimension);
3452
3452
  }
3453
3453
  }
3454
- return Object.keys(r).length === 0 && (r.count = de()), r;
3454
+ return Object.keys(r).length === 0 && (r.count = fe()), r;
3455
3455
  }
3456
3456
  buildCalculatedMeasure(e, t, n, r, i) {
3457
3457
  return this.measureBuilder.buildCalculatedMeasure(e, t, n, r, i);
@@ -3513,11 +3513,11 @@ var Q = class e {
3513
3513
  let a = e;
3514
3514
  if (a.and) {
3515
3515
  let e = a.and.map((e) => this.processFilter(e, t, n, r, i)).filter((e) => e !== null);
3516
- return e.length > 0 ? F(...e) : null;
3516
+ return e.length > 0 ? P(...e) : null;
3517
3517
  }
3518
3518
  if (a.or) {
3519
3519
  let e = a.or.map((e) => this.processFilter(e, t, n, r, i)).filter((e) => e !== null);
3520
- return e.length > 0 ? I(...e) : null;
3520
+ return e.length > 0 ? F(...e) : null;
3521
3521
  }
3522
3522
  }
3523
3523
  let a = e, [o, s] = a.member.split("."), c = t.get(o);
@@ -3557,12 +3557,12 @@ var Q = class e {
3557
3557
  ];
3558
3558
  if (e.order && Object.keys(e.order).length > 0) for (let [t, i] of Object.entries(e.order)) {
3559
3559
  if (!r.includes(t)) throw Error(`Cannot order by '${t}': field is not selected in the query`);
3560
- let e = i === "desc" ? ue(O.identifier(t)) : le(O.identifier(t));
3560
+ let e = i === "desc" ? de(D.identifier(t)) : ue(D.identifier(t));
3561
3561
  n.push(e);
3562
3562
  }
3563
3563
  if (e.timeDimensions && e.timeDimensions.length > 0) {
3564
3564
  let t = new Set(Object.keys(e.order || {})), r = [...e.timeDimensions].sort((e, t) => e.dimension.localeCompare(t.dimension));
3565
- for (let e of r) t.has(e.dimension) || n.push(le(O.identifier(e.dimension)));
3565
+ for (let e of r) t.has(e.dimension) || n.push(ue(D.identifier(e.dimension)));
3566
3566
  }
3567
3567
  return n;
3568
3568
  }
@@ -3804,10 +3804,10 @@ var Q = class e {
3804
3804
  buildJoinCondition(e, t, n) {
3805
3805
  let r = [];
3806
3806
  for (let i of e.on) {
3807
- let e = t ? O`${O.identifier(t)}.${O.identifier(i.source.name)}` : tt(i.source), a = n ? O`${O.identifier(n)}.${O.identifier(i.target.name)}` : tt(i.target), o = i.as || N;
3807
+ let e = t ? D`${D.identifier(t)}.${D.identifier(i.source.name)}` : tt(i.source), a = n ? D`${D.identifier(n)}.${D.identifier(i.target.name)}` : tt(i.target), o = i.as || M;
3808
3808
  r.push(o(e, a));
3809
3809
  }
3810
- return F(...r);
3810
+ return P(...r);
3811
3811
  }
3812
3812
  getReachableCubes(e) {
3813
3813
  let t = new Set([e]), n = [e];
@@ -4425,19 +4425,19 @@ var Q = class e {
4425
4425
  }
4426
4426
  } else for (let t of e.joinKeys) if (t.targetColumnObj) {
4427
4427
  c[t.targetColumn] = t.targetColumnObj;
4428
- for (let [e, n] of Object.entries(a.dimensions || {})) n.sql === t.targetColumnObj && e !== t.targetColumn && (c[e] = O`${t.targetColumnObj}`.as(e));
4428
+ for (let [e, n] of Object.entries(a.dimensions || {})) n.sql === t.targetColumnObj && e !== t.targetColumn && (c[e] = D`${t.targetColumnObj}`.as(e));
4429
4429
  }
4430
4430
  if (e.downstreamJoinKeys) for (let t of e.downstreamJoinKeys) for (let e of t.joinKeys) e.sourceColumnObj && (c[e.sourceColumn] = e.sourceColumnObj);
4431
4431
  let l = a.name, u = new Map([[l, a]]), d = this.queryBuilder.buildResolvedMeasures(e.measures, u, n);
4432
4432
  for (let t of e.measures) {
4433
4433
  let [, e] = t.split("."), n = d.get(t);
4434
- n && (c[e] = O`${n()}`.as(e));
4434
+ n && (c[e] = D`${n()}`.as(e));
4435
4435
  }
4436
4436
  if (t.dimensions) for (let e of t.dimensions) {
4437
4437
  let [t, r] = e.split(".");
4438
4438
  if (t === l && a.dimensions && a.dimensions[r]) {
4439
4439
  let e = a.dimensions[r];
4440
- c[r] = O`${this.queryBuilder.buildMeasureExpression({
4440
+ c[r] = D`${this.queryBuilder.buildMeasureExpression({
4441
4441
  sql: e.sql,
4442
4442
  type: "number"
4443
4443
  }, n)}`.as(r);
@@ -4447,7 +4447,7 @@ var Q = class e {
4447
4447
  let [t, r] = e.dimension.split(".");
4448
4448
  if (t === l && a.dimensions && a.dimensions[r]) {
4449
4449
  let t = a.dimensions[r];
4450
- c[r] = O`${this.queryBuilder.buildTimeDimensionExpression(t.sql, e.granularity, n)}`.as(r);
4450
+ c[r] = D`${this.queryBuilder.buildTimeDimensionExpression(t.sql, e.granularity, n)}`.as(r);
4451
4451
  }
4452
4452
  }
4453
4453
  if (Object.keys(c).length === 0) return null;
@@ -4455,8 +4455,8 @@ var Q = class e {
4455
4455
  if (s && e.intermediateJoins) {
4456
4456
  let t = [...e.intermediateJoins].reverse();
4457
4457
  for (let e of t) {
4458
- let t = e.cube.sql(n), r = [N(e.cteJoinColumn, e.joinDef.on[0]?.target)];
4459
- e.securityFilter && r.push(e.securityFilter), f = f.leftJoin(t.from, F(...r));
4458
+ let t = e.cube.sql(n), r = [M(e.cteJoinColumn, e.joinDef.on[0]?.target)];
4459
+ e.securityFilter && r.push(e.securityFilter), f = f.leftJoin(t.from, P(...r));
4460
4460
  }
4461
4461
  }
4462
4462
  let p = r ? {
@@ -4494,7 +4494,7 @@ var Q = class e {
4494
4494
  }
4495
4495
  let g = [];
4496
4496
  if (o.where && g.push(o.where), g.push(...m, ...h), g.length > 0) {
4497
- let e = g.length === 1 ? g[0] : F(...g);
4497
+ let e = g.length === 1 ? g[0] : P(...g);
4498
4498
  f = f.where(e);
4499
4499
  }
4500
4500
  let _ = [], v = /* @__PURE__ */ new Set(), y = (e) => {
@@ -4527,20 +4527,20 @@ var Q = class e {
4527
4527
  if (!r) throw Error(`CTE info not found for cube ${e.cube.name}`);
4528
4528
  let i = [];
4529
4529
  if (r.intermediateJoins && r.intermediateJoins.length > 0) {
4530
- let e = r.intermediateJoins[0], a = this.resolveCTEJoinSourceColumn(r.joinKeys[0], r, n), o = O`${O.identifier(t)}.${O.identifier(e.primaryJoinColumn.name)}`;
4531
- i.push(N(a, o));
4530
+ let e = r.intermediateJoins[0], a = this.resolveCTEJoinSourceColumn(r.joinKeys[0], r, n), o = D`${D.identifier(t)}.${D.identifier(e.primaryJoinColumn.name)}`;
4531
+ i.push(M(a, o));
4532
4532
  } else for (let e of r.joinKeys) {
4533
- let a = this.resolveCTEJoinSourceColumn(e, r, n), o = O`${O.identifier(t)}.${O.identifier(e.targetColumn)}`;
4534
- i.push(N(a, o));
4533
+ let a = this.resolveCTEJoinSourceColumn(e, r, n), o = D`${D.identifier(t)}.${D.identifier(e.targetColumn)}`;
4534
+ i.push(M(a, o));
4535
4535
  }
4536
- return i.length === 1 ? i[0] : F(...i);
4536
+ return i.length === 1 ? i[0] : P(...i);
4537
4537
  }
4538
4538
  resolveCTEJoinSourceColumn(e, t, n) {
4539
4539
  if (!e) throw Error(`Missing join key while building CTE join condition for '${t.cube.name}'`);
4540
- let r = e.sourceColumnObj || O.identifier(e.sourceColumn);
4540
+ let r = e.sourceColumnObj || D.identifier(e.sourceColumn);
4541
4541
  if (!e.sourceColumnObj || !n.preAggregationCTEs) return r;
4542
4542
  for (let r of n.preAggregationCTEs) if (r.cube.name !== t.cube.name) {
4543
- for (let [t, n] of Object.entries(r.cube.dimensions || {})) if (typeof n.sql != "function" && n.sql === e.sourceColumnObj) return O`${O.identifier(r.cteAlias)}.${O.identifier(t)}`;
4543
+ for (let [t, n] of Object.entries(r.cube.dimensions || {})) if (typeof n.sql != "function" && n.sql === e.sourceColumnObj) return D`${D.identifier(r.cteAlias)}.${D.identifier(t)}`;
4544
4544
  }
4545
4545
  return r;
4546
4546
  }
@@ -4552,24 +4552,139 @@ var Q = class e {
4552
4552
  i.push(...o);
4553
4553
  }
4554
4554
  if (i.length === 0) return null;
4555
- let a = i.length === 1 ? i[0] : F(...i), o = e.joinConditions;
4555
+ let a = i.length === 1 ? i[0] : P(...i), o = e.joinConditions;
4556
4556
  if (o.length === 1) {
4557
4557
  let { source: e, target: n } = o[0];
4558
- return O`${n} IN ${t.db.select({ pk: e }).from(r.from).where(a)}`;
4558
+ return D`${n} IN ${t.db.select({ pk: e }).from(r.from).where(a)}`;
4559
4559
  } else {
4560
- let e = F(...o.map((e) => N(e.source, e.target)), a);
4561
- return O`EXISTS ${t.db.select({ one: O`1` }).from(r.from).where(e)}`;
4560
+ let e = P(...o.map((e) => M(e.source, e.target)), a);
4561
+ return D`EXISTS ${t.db.select({ one: D`1` }).from(r.from).where(e)}`;
4562
4562
  }
4563
4563
  }
4564
4564
  };
4565
4565
  //#endregion
4566
+ //#region src/shared/date-utils.ts
4567
+ function St(e) {
4568
+ let t = /* @__PURE__ */ new Date(), n = e.toLowerCase().trim(), r = t.getUTCFullYear(), i = t.getUTCMonth(), a = t.getUTCDate(), o = t.getUTCDay();
4569
+ if (n === "today") {
4570
+ let e = new Date(t);
4571
+ e.setUTCHours(0, 0, 0, 0);
4572
+ let n = new Date(t);
4573
+ return n.setUTCHours(23, 59, 59, 999), {
4574
+ start: e,
4575
+ end: n
4576
+ };
4577
+ }
4578
+ if (n === "yesterday") {
4579
+ let e = new Date(t);
4580
+ e.setUTCDate(a - 1), e.setUTCHours(0, 0, 0, 0);
4581
+ let n = new Date(t);
4582
+ return n.setUTCDate(a - 1), n.setUTCHours(23, 59, 59, 999), {
4583
+ start: e,
4584
+ end: n
4585
+ };
4586
+ }
4587
+ if (n === "this week") {
4588
+ let e = o === 0 ? -6 : 1 - o, n = new Date(t);
4589
+ n.setUTCDate(a + e), n.setUTCHours(0, 0, 0, 0);
4590
+ let r = new Date(n);
4591
+ return r.setUTCDate(n.getUTCDate() + 6), r.setUTCHours(23, 59, 59, 999), {
4592
+ start: n,
4593
+ end: r
4594
+ };
4595
+ }
4596
+ if (n === "this month") return {
4597
+ start: new Date(Date.UTC(r, i, 1, 0, 0, 0, 0)),
4598
+ end: new Date(Date.UTC(r, i + 1, 0, 23, 59, 59, 999))
4599
+ };
4600
+ if (n === "this quarter") {
4601
+ let e = Math.floor(i / 3);
4602
+ return {
4603
+ start: new Date(Date.UTC(r, e * 3, 1, 0, 0, 0, 0)),
4604
+ end: new Date(Date.UTC(r, e * 3 + 3, 0, 23, 59, 59, 999))
4605
+ };
4606
+ }
4607
+ if (n === "this year") return {
4608
+ start: new Date(Date.UTC(r, 0, 1, 0, 0, 0, 0)),
4609
+ end: new Date(Date.UTC(r, 11, 31, 23, 59, 59, 999))
4610
+ };
4611
+ let s = n.match(/^last\s+(\d+)\s+days?$/);
4612
+ if (s) {
4613
+ let e = parseInt(s[1], 10), n = new Date(t);
4614
+ n.setUTCDate(a - e + 1), n.setUTCHours(0, 0, 0, 0);
4615
+ let r = new Date(t);
4616
+ return r.setUTCHours(23, 59, 59, 999), {
4617
+ start: n,
4618
+ end: r
4619
+ };
4620
+ }
4621
+ let c = n.match(/^last\s+(\d+)\s+weeks?$/);
4622
+ if (c) {
4623
+ let e = parseInt(c[1], 10) * 7, n = new Date(t);
4624
+ n.setUTCDate(a - e + 1), n.setUTCHours(0, 0, 0, 0);
4625
+ let r = new Date(t);
4626
+ return r.setUTCHours(23, 59, 59, 999), {
4627
+ start: n,
4628
+ end: r
4629
+ };
4630
+ }
4631
+ if (n === "last week") {
4632
+ let e = o === 0 ? -13 : -6 - o, n = new Date(t);
4633
+ n.setUTCDate(a + e), n.setUTCHours(0, 0, 0, 0);
4634
+ let r = new Date(n);
4635
+ return r.setUTCDate(n.getUTCDate() + 6), r.setUTCHours(23, 59, 59, 999), {
4636
+ start: n,
4637
+ end: r
4638
+ };
4639
+ }
4640
+ if (n === "last month") return {
4641
+ start: new Date(Date.UTC(r, i - 1, 1, 0, 0, 0, 0)),
4642
+ end: new Date(Date.UTC(r, i, 0, 23, 59, 59, 999))
4643
+ };
4644
+ if (n === "last quarter") {
4645
+ let e = Math.floor(i / 3), t = e === 0 ? 3 : e - 1, n = e === 0 ? r - 1 : r;
4646
+ return {
4647
+ start: new Date(Date.UTC(n, t * 3, 1, 0, 0, 0, 0)),
4648
+ end: new Date(Date.UTC(n, t * 3 + 3, 0, 23, 59, 59, 999))
4649
+ };
4650
+ }
4651
+ if (n === "last year") return {
4652
+ start: new Date(Date.UTC(r - 1, 0, 1, 0, 0, 0, 0)),
4653
+ end: new Date(Date.UTC(r - 1, 11, 31, 23, 59, 59, 999))
4654
+ };
4655
+ if (n === "last 12 months") {
4656
+ let e = new Date(Date.UTC(r, i - 11, 1, 0, 0, 0, 0)), n = new Date(t);
4657
+ return n.setUTCHours(23, 59, 59, 999), {
4658
+ start: e,
4659
+ end: n
4660
+ };
4661
+ }
4662
+ let l = n.match(/^last\s+(\d+)\s+months?$/);
4663
+ if (l) {
4664
+ let e = parseInt(l[1], 10), n = new Date(Date.UTC(r, i - e + 1, 1, 0, 0, 0, 0)), a = new Date(t);
4665
+ return a.setUTCHours(23, 59, 59, 999), {
4666
+ start: n,
4667
+ end: a
4668
+ };
4669
+ }
4670
+ let u = n.match(/^last\s+(\d+)\s+years?$/);
4671
+ if (u) {
4672
+ let e = parseInt(u[1], 10), n = new Date(Date.UTC(r - e, 0, 1, 0, 0, 0, 0)), i = new Date(t);
4673
+ return i.setUTCHours(23, 59, 59, 999), {
4674
+ start: n,
4675
+ end: i
4676
+ };
4677
+ }
4678
+ return null;
4679
+ }
4680
+ //#endregion
4566
4681
  //#region src/server/gap-filler.ts
4567
- function St(e, t, n) {
4568
- let r = [], i = Ct(new Date(e), n), a = Ct(new Date(t), n);
4569
- for (; i <= a && r.length < 1e4;) r.push(new Date(i)), i = wt(i, n);
4682
+ function Ct(e, t, n) {
4683
+ let r = [], i = wt(new Date(e), n), a = wt(new Date(t), n);
4684
+ for (; i <= a && r.length < 1e4;) r.push(new Date(i)), i = Tt(i, n);
4570
4685
  return r;
4571
4686
  }
4572
- function Ct(e, t) {
4687
+ function wt(e, t) {
4573
4688
  let n = new Date(e);
4574
4689
  switch (t) {
4575
4690
  case "second":
@@ -4603,7 +4718,7 @@ function Ct(e, t) {
4603
4718
  }
4604
4719
  return n;
4605
4720
  }
4606
- function wt(e, t) {
4721
+ function Tt(e, t) {
4607
4722
  let n = new Date(e);
4608
4723
  switch (t) {
4609
4724
  case "second":
@@ -4633,7 +4748,7 @@ function wt(e, t) {
4633
4748
  }
4634
4749
  return n;
4635
4750
  }
4636
- function Tt(e) {
4751
+ function Et(e) {
4637
4752
  if (e instanceof Date) return e.toISOString();
4638
4753
  if (typeof e == "string") {
4639
4754
  let t = new Date(e);
@@ -4641,15 +4756,15 @@ function Tt(e) {
4641
4756
  }
4642
4757
  return String(e);
4643
4758
  }
4644
- function Et(e, t) {
4759
+ function Dt(e, t) {
4645
4760
  return t.length === 0 ? "__all__" : t.map((t) => String(e[t] ?? "")).join("|||");
4646
4761
  }
4647
- function Dt(e, t) {
4648
- let { timeDimensionKey: n, granularity: r, dateRange: i, fillValue: a, measures: o, dimensions: s } = t, c = St(i[0], i[1], r);
4762
+ function Ot(e, t) {
4763
+ let { timeDimensionKey: n, granularity: r, dateRange: i, fillValue: a, measures: o, dimensions: s } = t, c = Ct(i[0], i[1], r);
4649
4764
  if (c.length === 0) return e;
4650
4765
  let l = /* @__PURE__ */ new Map();
4651
4766
  for (let t of e) {
4652
- let e = Et(t, s), r = Tt(t[n]);
4767
+ let e = Dt(t, s), r = Et(t[n]);
4653
4768
  l.has(e) || l.set(e, /* @__PURE__ */ new Map()), l.get(e).set(r, t);
4654
4769
  }
4655
4770
  l.size === 0 && s.length === 0 && l.set("__all__", /* @__PURE__ */ new Map());
@@ -4669,42 +4784,74 @@ function Dt(e, t) {
4669
4784
  }
4670
4785
  return u;
4671
4786
  }
4672
- function Ot(e) {
4787
+ function kt(e) {
4673
4788
  if (!e) return null;
4674
4789
  if (Array.isArray(e)) {
4675
4790
  if (e.length < 2) return null;
4676
4791
  let t = new Date(e[0]), n = new Date(e[1]);
4677
4792
  return isNaN(t.getTime()) || isNaN(n.getTime()) ? null : [t, n];
4678
4793
  }
4679
- let t = new Date(e);
4680
- return isNaN(t.getTime()) ? null : [t, t];
4794
+ let t = St(e);
4795
+ if (t) return [t.start, t.end];
4796
+ let n = new Date(e);
4797
+ return isNaN(n.getTime()) ? null : [n, n];
4681
4798
  }
4682
- function kt(e, t, n) {
4799
+ function At(e, t, n) {
4683
4800
  if (!t.timeDimensions || t.timeDimensions.length === 0) return e;
4684
4801
  let r = t.timeDimensions.filter((e) => {
4685
- let t = e.fillMissingDates !== !1, n = e.granularity && e.dateRange;
4686
- return t && n;
4802
+ let n = e.fillMissingDates !== !1, r = !!e.granularity, i = e.dateRange || jt(e.dimension, t.filters);
4803
+ return n && r && i;
4687
4804
  });
4688
4805
  if (r.length === 0) return e;
4689
4806
  let i = t.fillMissingDatesValue === void 0 ? 0 : t.fillMissingDatesValue, a = new Set(t.timeDimensions.map((e) => e.dimension)), o = (t.dimensions || []).filter((e) => !a.has(e)), s = e;
4690
4807
  for (let e of r) {
4691
- let t = Ot(e.dateRange);
4692
- if (!t) continue;
4693
- let r = {
4808
+ let r = kt(e.dateRange) || Mt(e.dimension, t.filters);
4809
+ if (!r) continue;
4810
+ let a = {
4694
4811
  timeDimensionKey: e.dimension,
4695
4812
  granularity: e.granularity,
4696
- dateRange: t,
4813
+ dateRange: r,
4697
4814
  fillValue: i,
4698
4815
  measures: n,
4699
4816
  dimensions: o
4700
4817
  };
4701
- s = Dt(s, r);
4818
+ s = Ot(s, a);
4702
4819
  }
4703
4820
  return s;
4704
4821
  }
4822
+ function jt(e, t) {
4823
+ if (!t) return null;
4824
+ for (let n of t) {
4825
+ if ("member" in n && "operator" in n && n.member === e && n.operator === "inDateRange") return n;
4826
+ if ("and" in n && n.and) {
4827
+ let t = jt(e, n.and);
4828
+ if (t) return t;
4829
+ }
4830
+ if ("or" in n && n.or) {
4831
+ let t = jt(e, n.or);
4832
+ if (t) return t;
4833
+ }
4834
+ }
4835
+ return null;
4836
+ }
4837
+ function Mt(e, t) {
4838
+ let n = jt(e, t);
4839
+ if (!n) return null;
4840
+ if (n.dateRange) {
4841
+ let e = kt(n.dateRange);
4842
+ if (e) return e;
4843
+ }
4844
+ let r = n.values;
4845
+ if (!r || r.length === 0) return null;
4846
+ if (r.length === 1 && typeof r[0] == "string") {
4847
+ let e = St(r[0]);
4848
+ return e ? [e.start, e.end] : kt(r);
4849
+ }
4850
+ return r.length >= 2 ? kt(r) : null;
4851
+ }
4705
4852
  //#endregion
4706
4853
  //#region src/server/builders/comparison-query-builder.ts
4707
- var At = class {
4854
+ var Nt = class {
4708
4855
  dateTimeBuilder;
4709
4856
  constructor(e) {
4710
4857
  this.dateTimeBuilder = new Y(e);
@@ -4835,7 +4982,7 @@ var At = class {
4835
4982
  return typeof i == "string" && typeof a == "string" ? new Date(i).getTime() - new Date(a).getTime() : 0;
4836
4983
  });
4837
4984
  }
4838
- }, jt = class {
4985
+ }, Pt = class {
4839
4986
  filterBuilder;
4840
4987
  dateTimeBuilder;
4841
4988
  constructor(e) {
@@ -5028,7 +5175,7 @@ var At = class {
5028
5175
  a && i.push(a);
5029
5176
  }
5030
5177
  }
5031
- return i.length === 0 ? null : i.length === 1 ? i[0] : o ? F(...i) : O`(${O.join(i, O` OR `)})`;
5178
+ return i.length === 0 ? null : i.length === 1 ? i[0] : o ? P(...i) : D`(${D.join(i, D` OR `)})`;
5032
5179
  }
5033
5180
  let o = e, [s, c] = o.member.split("."), l = o.dateRange !== void 0;
5034
5181
  if (o.operator !== "set" && o.operator !== "notSet" && !l && (!o.values || o.values.length === 0 || o.values[0] === void 0 || o.values[0] === "")) return null;
@@ -5050,11 +5197,11 @@ var At = class {
5050
5197
  let n = `step_${e.index}`, r = e.cube.sql(t), i = [];
5051
5198
  r.where && i.push(r.where), i.push(...e.filterConditions);
5052
5199
  let a = t.db.select({
5053
- binding_key: O`${e.bindingKeyExpr}`.as("binding_key"),
5054
- step_time: O`MIN(${e.timeExpr})`.as("step_time")
5200
+ binding_key: D`${e.bindingKeyExpr}`.as("binding_key"),
5201
+ step_time: D`MIN(${e.timeExpr})`.as("step_time")
5055
5202
  }).from(r.from);
5056
5203
  if (a = this.addCrossJoinsToQuery(a, e, t, i), i.length > 0) {
5057
- let e = i.length === 1 ? i[0] : F(...i);
5204
+ let e = i.length === 1 ? i[0] : P(...i);
5058
5205
  a = a.where(e);
5059
5206
  }
5060
5207
  return a = a.groupBy(e.bindingKeyExpr), t.db.$with(n).as(a);
@@ -5062,18 +5209,18 @@ var At = class {
5062
5209
  buildSubsequentStepCTE(e, t, n) {
5063
5210
  let r = `step_${e.index}`, i = `step_${e.index - 1}`, a = e.cube.sql(t), o = [];
5064
5211
  a.where && o.push(a.where), o.push(...e.filterConditions);
5065
- let s = O`${O.identifier(i)}.step_time`, c = O`${e.timeExpr} > ${s}`;
5212
+ let s = D`${D.identifier(i)}.step_time`, c = D`${e.timeExpr} > ${s}`;
5066
5213
  if (e.timeToConvert) {
5067
5214
  let t = this.databaseAdapter.buildDateAddInterval(s, e.timeToConvert);
5068
- c = O`${c} AND ${e.timeExpr} <= ${t}`;
5215
+ c = D`${c} AND ${e.timeExpr} <= ${t}`;
5069
5216
  }
5070
5217
  o.push(c);
5071
5218
  let l = t.db.select({
5072
- binding_key: O`${e.bindingKeyExpr}`.as("binding_key"),
5073
- step_time: O`MIN(${e.timeExpr})`.as("step_time")
5074
- }).from(a.from).innerJoin(n, O`${e.bindingKeyExpr} = ${O.identifier(i)}.binding_key`);
5219
+ binding_key: D`${e.bindingKeyExpr}`.as("binding_key"),
5220
+ step_time: D`MIN(${e.timeExpr})`.as("step_time")
5221
+ }).from(a.from).innerJoin(n, D`${e.bindingKeyExpr} = ${D.identifier(i)}.binding_key`);
5075
5222
  if (l = this.addCrossJoinsToQuery(l, e, t, o), o.length > 0) {
5076
- let e = o.length === 1 ? o[0] : F(...o);
5223
+ let e = o.length === 1 ? o[0] : P(...o);
5077
5224
  l = l.where(e);
5078
5225
  }
5079
5226
  return l = l.groupBy(e.bindingKeyExpr), t.db.$with(r).as(l);
@@ -5082,41 +5229,41 @@ var At = class {
5082
5229
  if (t.joinedCubes.length === 0) return e;
5083
5230
  for (let i of t.joinedCubes) for (let t of i.joinPath) {
5084
5231
  let a = t.joinDef, o = [];
5085
- for (let e of a.on) e.as ? o.push(e.as(e.source, e.target)) : o.push(N(e.source, e.target));
5086
- let s = o.length === 1 ? o[0] : F(...o), c = i.cube.sql(n);
5232
+ for (let e of a.on) e.as ? o.push(e.as(e.source, e.target)) : o.push(M(e.source, e.target));
5233
+ let s = o.length === 1 ? o[0] : P(...o), c = i.cube.sql(n);
5087
5234
  e = e.leftJoin(c.from, s), c.where && r.push(c.where);
5088
5235
  }
5089
5236
  return e;
5090
5237
  }
5091
5238
  buildFunnelResultsCTE(e, t, n, r) {
5092
5239
  let i = {
5093
- binding_key: O`s0.binding_key`,
5094
- step_0_time: O`s0.step_time`
5240
+ binding_key: D`s0.binding_key`,
5241
+ step_0_time: D`s0.step_time`
5095
5242
  };
5096
- for (let e = 1; e < t.length; e++) i[`step_${e}_time`] = O`s${O.raw(String(e))}.step_time`;
5097
- let a = O`${O.identifier("step_0")} s0`;
5098
- for (let e = 1; e < t.length; e++) a = O`${a}
5099
- LEFT JOIN ${O.identifier(`step_${e}`)} s${O.raw(String(e))} ON s0.binding_key = s${O.raw(String(e))}.binding_key`;
5100
- let o = Object.entries(i).map(([e, t]) => O`${t} AS ${O.identifier(e)}`), s = O`SELECT ${O.join(o, O`, `)} FROM ${a}`;
5243
+ for (let e = 1; e < t.length; e++) i[`step_${e}_time`] = D`s${D.raw(String(e))}.step_time`;
5244
+ let a = D`${D.identifier("step_0")} s0`;
5245
+ for (let e = 1; e < t.length; e++) a = D`${a}
5246
+ LEFT JOIN ${D.identifier(`step_${e}`)} s${D.raw(String(e))} ON s0.binding_key = s${D.raw(String(e))}.binding_key`;
5247
+ let o = Object.entries(i).map(([e, t]) => D`${t} AS ${D.identifier(e)}`), s = D`SELECT ${D.join(o, D`, `)} FROM ${a}`;
5101
5248
  return r.db.$with("funnel_joined").as(s);
5102
5249
  }
5103
5250
  buildAggregationCTE(e, t, n, r, i) {
5104
5251
  let a = {};
5105
- a.step_0_count = O`COUNT(*)`.as("step_0_count");
5106
- for (let e = 1; e < n.length; e++) a[`step_${e}_count`] = O`COUNT(${O.identifier(`step_${e}_time`)})`.as(`step_${e}_count`);
5252
+ a.step_0_count = D`COUNT(*)`.as("step_0_count");
5253
+ for (let e = 1; e < n.length; e++) a[`step_${e}_count`] = D`COUNT(${D.identifier(`step_${e}_time`)})`.as(`step_${e}_count`);
5107
5254
  if (r.includeTimeMetrics) for (let e = 1; e < n.length; e++) {
5108
- let t = O.identifier(`step_${e}_time`), n = O.identifier(`step_${e - 1}_time`), r = this.databaseAdapter.buildTimeDifferenceSeconds(O`${t}`, O`${n}`), i = O`${t} IS NOT NULL`;
5255
+ let t = D.identifier(`step_${e}_time`), n = D.identifier(`step_${e - 1}_time`), r = this.databaseAdapter.buildTimeDifferenceSeconds(D`${t}`, D`${n}`), i = D`${t} IS NOT NULL`;
5109
5256
  if (a[`step_${e}_avg_seconds`] = this.databaseAdapter.buildConditionalAggregation("avg", r, i).as(`step_${e}_avg_seconds`), a[`step_${e}_min_seconds`] = this.databaseAdapter.buildConditionalAggregation("min", r, i).as(`step_${e}_min_seconds`), a[`step_${e}_max_seconds`] = this.databaseAdapter.buildConditionalAggregation("max", r, i).as(`step_${e}_max_seconds`), this.databaseAdapter.getCapabilities().supportsPercentileSubqueries) {
5110
5257
  let n = this.databaseAdapter.buildPercentile(r, 50);
5111
- n && (a[`step_${e}_median_seconds`] = O`(SELECT ${n} FROM ${O.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_median_seconds`));
5258
+ n && (a[`step_${e}_median_seconds`] = D`(SELECT ${n} FROM ${D.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_median_seconds`));
5112
5259
  let i = this.databaseAdapter.buildPercentile(r, 90);
5113
- i && (a[`step_${e}_p90_seconds`] = O`(SELECT ${i} FROM ${O.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_p90_seconds`));
5260
+ i && (a[`step_${e}_p90_seconds`] = D`(SELECT ${i} FROM ${D.identifier("funnel_joined")} WHERE ${t} IS NOT NULL)`.as(`step_${e}_p90_seconds`));
5114
5261
  }
5115
5262
  }
5116
5263
  let o = i.db.select(a).from(e);
5117
5264
  return i.db.$with("funnel_metrics").as(o);
5118
5265
  }
5119
- }, Mt = class {
5266
+ }, Ft = class {
5120
5267
  filterBuilder;
5121
5268
  dateTimeBuilder;
5122
5269
  databaseAdapter;
@@ -5283,7 +5430,7 @@ var At = class {
5283
5430
  let r = this.buildFilterCondition(e, t, n);
5284
5431
  r && i.push(r);
5285
5432
  }
5286
- return i.length === 0 ? null : i.length === 1 ? i[0] : "and" in e ? F(...i) : O`(${O.join(i, O` OR `)})`;
5433
+ return i.length === 0 ? null : i.length === 1 ? i[0] : "and" in e ? P(...i) : D`(${D.join(i, D` OR `)})`;
5287
5434
  }
5288
5435
  if ("type" in e && "filters" in e) {
5289
5436
  let r = e, i = [];
@@ -5291,7 +5438,7 @@ var At = class {
5291
5438
  let r = this.buildFilterCondition(e, t, n);
5292
5439
  r && i.push(r);
5293
5440
  }
5294
- return i.length === 0 ? null : i.length === 1 ? i[0] : r.type === "and" ? F(...i) : O`(${O.join(i, O` OR `)})`;
5441
+ return i.length === 0 ? null : i.length === 1 ? i[0] : r.type === "and" ? P(...i) : D`(${D.join(i, D` OR `)})`;
5295
5442
  }
5296
5443
  let r = e, [, i] = r.member.split("."), a = t.dimensions?.[i];
5297
5444
  if (!a) return null;
@@ -5302,13 +5449,13 @@ var At = class {
5302
5449
  let { cubeBase: r, bindingKeyExpr: i, timeExpr: a, eventExpr: o, startingStepFilters: s } = t, c = [];
5303
5450
  r.where && c.push(r.where), c.push(...s);
5304
5451
  let l = n.db.select({
5305
- binding_key: O`${i}`.as("binding_key"),
5306
- start_time: O`MIN(${a})`.as("start_time"),
5307
- event_type: O`${o}`.as("event_type"),
5308
- event_path: O`${o}`.as("event_path")
5452
+ binding_key: D`${i}`.as("binding_key"),
5453
+ start_time: D`MIN(${a})`.as("start_time"),
5454
+ event_type: D`${o}`.as("event_type"),
5455
+ event_path: D`${o}`.as("event_path")
5309
5456
  }).from(r.from);
5310
5457
  if (c.length > 0) {
5311
- let e = c.length === 1 ? c[0] : F(...c);
5458
+ let e = c.length === 1 ? c[0] : P(...c);
5312
5459
  l = l.where(e);
5313
5460
  }
5314
5461
  return l = l.groupBy(i, o), e.entityLimit && (l = l.limit(e.entityLimit)), n.db.$with("starting_entities").as(l);
@@ -5317,18 +5464,18 @@ var At = class {
5317
5464
  let { cubeBase: r, bindingKeyExpr: i, timeExpr: a, eventExpr: o } = t, s = [], c = e.outputMode === "sunburst";
5318
5465
  for (let t = 1; t <= e.stepsBefore; t++) {
5319
5466
  let e = t === 1 ? "starting_entities" : `before_step_${t - 1}`, l = t === 1 ? "start_time" : "step_time", u = `before_step_${t}`, d = [];
5320
- r.where && d.push(r.where), d.push(O`${i} = ${O.identifier(e)}.binding_key`, O`${a} < ${O.identifier(e)}.${O.identifier(l)}`);
5321
- let f = d.length === 1 ? d[0] : F(...d), p = c ? O`${o} || ${"→"} || ${O.identifier(e)}.event_path` : O`${o}`, m = n.db.select({
5322
- binding_key: O`${i}`.as("binding_key"),
5323
- step_time: O`${a}`.as("step_time"),
5324
- event_type: O`${o}`.as("event_type"),
5467
+ r.where && d.push(r.where), d.push(D`${i} = ${D.identifier(e)}.binding_key`, D`${a} < ${D.identifier(e)}.${D.identifier(l)}`);
5468
+ let f = d.length === 1 ? d[0] : P(...d), p = c ? D`${o} || ${"→"} || ${D.identifier(e)}.event_path` : D`${o}`, m = n.db.select({
5469
+ binding_key: D`${i}`.as("binding_key"),
5470
+ step_time: D`${a}`.as("step_time"),
5471
+ event_type: D`${o}`.as("event_type"),
5325
5472
  event_path: p.as("event_path")
5326
- }).from(r.from).where(f).orderBy(O`${a} DESC`).limit(1), h = n.db.$with(u).as(n.db.select({
5327
- binding_key: O`e.binding_key`.as("binding_key"),
5328
- step_time: O`e.step_time`.as("step_time"),
5329
- event_type: O`e.event_type`.as("event_type"),
5330
- event_path: O`e.event_path`.as("event_path")
5331
- }).from(O`${O.identifier(e)}`).crossJoinLateral(m.as("e")));
5473
+ }).from(r.from).where(f).orderBy(D`${a} DESC`).limit(1), h = n.db.$with(u).as(n.db.select({
5474
+ binding_key: D`e.binding_key`.as("binding_key"),
5475
+ step_time: D`e.step_time`.as("step_time"),
5476
+ event_type: D`e.event_type`.as("event_type"),
5477
+ event_path: D`e.event_path`.as("event_path")
5478
+ }).from(D`${D.identifier(e)}`).crossJoinLateral(m.as("e")));
5332
5479
  s.push(h);
5333
5480
  }
5334
5481
  return s;
@@ -5337,18 +5484,18 @@ var At = class {
5337
5484
  let { cubeBase: r, bindingKeyExpr: i, timeExpr: a, eventExpr: o } = t, s = [], c = e.outputMode === "sunburst";
5338
5485
  for (let t = 1; t <= e.stepsAfter; t++) {
5339
5486
  let e = t === 1 ? "starting_entities" : `after_step_${t - 1}`, l = t === 1 ? "start_time" : "step_time", u = `after_step_${t}`, d = [];
5340
- r.where && d.push(r.where), d.push(O`${i} = ${O.identifier(e)}.binding_key`, O`${a} > ${O.identifier(e)}.${O.identifier(l)}`);
5341
- let f = d.length === 1 ? d[0] : F(...d), p = c ? O`${O.identifier(e)}.event_path || ${"→"} || ${o}` : O`${o}`, m = n.db.select({
5342
- binding_key: O`${i}`.as("binding_key"),
5343
- step_time: O`${a}`.as("step_time"),
5344
- event_type: O`${o}`.as("event_type"),
5487
+ r.where && d.push(r.where), d.push(D`${i} = ${D.identifier(e)}.binding_key`, D`${a} > ${D.identifier(e)}.${D.identifier(l)}`);
5488
+ let f = d.length === 1 ? d[0] : P(...d), p = c ? D`${D.identifier(e)}.event_path || ${"→"} || ${o}` : D`${o}`, m = n.db.select({
5489
+ binding_key: D`${i}`.as("binding_key"),
5490
+ step_time: D`${a}`.as("step_time"),
5491
+ event_type: D`${o}`.as("event_type"),
5345
5492
  event_path: p.as("event_path")
5346
- }).from(r.from).where(f).orderBy(O`${a} ASC`).limit(1), h = n.db.$with(u).as(n.db.select({
5347
- binding_key: O`e.binding_key`.as("binding_key"),
5348
- step_time: O`e.step_time`.as("step_time"),
5349
- event_type: O`e.event_type`.as("event_type"),
5350
- event_path: O`e.event_path`.as("event_path")
5351
- }).from(O`${O.identifier(e)}`).crossJoinLateral(m.as("e")));
5493
+ }).from(r.from).where(f).orderBy(D`${a} ASC`).limit(1), h = n.db.$with(u).as(n.db.select({
5494
+ binding_key: D`e.binding_key`.as("binding_key"),
5495
+ step_time: D`e.step_time`.as("step_time"),
5496
+ event_type: D`e.event_type`.as("event_type"),
5497
+ event_path: D`e.event_path`.as("event_path")
5498
+ }).from(D`${D.identifier(e)}`).crossJoinLateral(m.as("e")));
5352
5499
  s.push(h);
5353
5500
  }
5354
5501
  return s;
@@ -5357,19 +5504,19 @@ var At = class {
5357
5504
  let { cubeBase: r, bindingKeyExpr: i, timeExpr: a, eventExpr: o } = t, s = [], c = e.outputMode === "sunburst";
5358
5505
  for (let t = 1; t <= e.stepsBefore; t++) {
5359
5506
  let e = t === 1 ? "starting_entities" : `before_step_${t - 1}`, l = t === 1 ? "start_time" : "step_time", u = `before_step_${t}`, d = [];
5360
- r.where && d.push(r.where), d.push(O`${a} < ${O.identifier(e)}.${O.identifier(l)}`);
5361
- let f = d.length === 1 ? d[0] : F(...d), p = c ? O`${o} || ${"→"} || ${O.identifier(e)}.event_path` : O`${o}`, m = n.db.select({
5362
- binding_key: O`${i}`.as("binding_key"),
5363
- step_time: O`${a}`.as("step_time"),
5364
- event_type: O`${o}`.as("event_type"),
5507
+ r.where && d.push(r.where), d.push(D`${a} < ${D.identifier(e)}.${D.identifier(l)}`);
5508
+ let f = d.length === 1 ? d[0] : P(...d), p = c ? D`${o} || ${"→"} || ${D.identifier(e)}.event_path` : D`${o}`, m = n.db.select({
5509
+ binding_key: D`${i}`.as("binding_key"),
5510
+ step_time: D`${a}`.as("step_time"),
5511
+ event_type: D`${o}`.as("event_type"),
5365
5512
  event_path: p.as("event_path"),
5366
- rn: O`ROW_NUMBER() OVER (PARTITION BY ${i} ORDER BY ${a} DESC)`.as("rn")
5367
- }).from(r.from).innerJoin(O`${O.identifier(e)}`, O`${i} = ${O.identifier(e)}.binding_key`).where(f), h = n.db.select({
5368
- binding_key: O`binding_key`.as("binding_key"),
5369
- step_time: O`step_time`.as("step_time"),
5370
- event_type: O`event_type`.as("event_type"),
5371
- event_path: O`event_path`.as("event_path")
5372
- }).from(m.as("ranked")).where(O`rn = 1`);
5513
+ rn: D`ROW_NUMBER() OVER (PARTITION BY ${i} ORDER BY ${a} DESC)`.as("rn")
5514
+ }).from(r.from).innerJoin(D`${D.identifier(e)}`, D`${i} = ${D.identifier(e)}.binding_key`).where(f), h = n.db.select({
5515
+ binding_key: D`binding_key`.as("binding_key"),
5516
+ step_time: D`step_time`.as("step_time"),
5517
+ event_type: D`event_type`.as("event_type"),
5518
+ event_path: D`event_path`.as("event_path")
5519
+ }).from(m.as("ranked")).where(D`rn = 1`);
5373
5520
  s.push(n.db.$with(u).as(h));
5374
5521
  }
5375
5522
  return s;
@@ -5378,19 +5525,19 @@ var At = class {
5378
5525
  let { cubeBase: r, bindingKeyExpr: i, timeExpr: a, eventExpr: o } = t, s = [], c = e.outputMode === "sunburst";
5379
5526
  for (let t = 1; t <= e.stepsAfter; t++) {
5380
5527
  let e = t === 1 ? "starting_entities" : `after_step_${t - 1}`, l = t === 1 ? "start_time" : "step_time", u = `after_step_${t}`, d = [];
5381
- r.where && d.push(r.where), d.push(O`${a} > ${O.identifier(e)}.${O.identifier(l)}`);
5382
- let f = d.length === 1 ? d[0] : F(...d), p = c ? O`${O.identifier(e)}.event_path || ${"→"} || ${o}` : O`${o}`, m = n.db.select({
5383
- binding_key: O`${i}`.as("binding_key"),
5384
- step_time: O`${a}`.as("step_time"),
5385
- event_type: O`${o}`.as("event_type"),
5528
+ r.where && d.push(r.where), d.push(D`${a} > ${D.identifier(e)}.${D.identifier(l)}`);
5529
+ let f = d.length === 1 ? d[0] : P(...d), p = c ? D`${D.identifier(e)}.event_path || ${"→"} || ${o}` : D`${o}`, m = n.db.select({
5530
+ binding_key: D`${i}`.as("binding_key"),
5531
+ step_time: D`${a}`.as("step_time"),
5532
+ event_type: D`${o}`.as("event_type"),
5386
5533
  event_path: p.as("event_path"),
5387
- rn: O`ROW_NUMBER() OVER (PARTITION BY ${i} ORDER BY ${a} ASC)`.as("rn")
5388
- }).from(r.from).innerJoin(O`${O.identifier(e)}`, O`${i} = ${O.identifier(e)}.binding_key`).where(f), h = n.db.select({
5389
- binding_key: O`binding_key`.as("binding_key"),
5390
- step_time: O`step_time`.as("step_time"),
5391
- event_type: O`event_type`.as("event_type"),
5392
- event_path: O`event_path`.as("event_path")
5393
- }).from(m.as("ranked")).where(O`rn = 1`);
5534
+ rn: D`ROW_NUMBER() OVER (PARTITION BY ${i} ORDER BY ${a} ASC)`.as("rn")
5535
+ }).from(r.from).innerJoin(D`${D.identifier(e)}`, D`${i} = ${D.identifier(e)}.binding_key`).where(f), h = n.db.select({
5536
+ binding_key: D`binding_key`.as("binding_key"),
5537
+ step_time: D`step_time`.as("step_time"),
5538
+ event_type: D`event_type`.as("event_type"),
5539
+ event_path: D`event_path`.as("event_path")
5540
+ }).from(m.as("ranked")).where(D`rn = 1`);
5394
5541
  s.push(n.db.$with(u).as(h));
5395
5542
  }
5396
5543
  return s;
@@ -5399,27 +5546,27 @@ var At = class {
5399
5546
  let n = [], r = e.outputMode === "sunburst";
5400
5547
  for (let t = e.stepsBefore; t >= 1; t--) {
5401
5548
  let e = -t, i = `before_step_${t}`;
5402
- r ? n.push(O`
5549
+ r ? n.push(D`
5403
5550
  SELECT
5404
- ${O.raw(`'before_${t}_'`)} || event_path AS node_id,
5551
+ ${D.raw(`'before_${t}_'`)} || event_path AS node_id,
5405
5552
  event_type AS name,
5406
- ${O.raw(String(e))} AS layer,
5553
+ ${D.raw(String(e))} AS layer,
5407
5554
  COUNT(*) AS value
5408
- FROM ${O.identifier(i)}
5555
+ FROM ${D.identifier(i)}
5409
5556
  GROUP BY event_path, event_type
5410
- `) : n.push(O`
5557
+ `) : n.push(D`
5411
5558
  SELECT
5412
- ${O.raw(`'before_${t}_'`)} || event_type AS node_id,
5559
+ ${D.raw(`'before_${t}_'`)} || event_type AS node_id,
5413
5560
  event_type AS name,
5414
- ${O.raw(String(e))} AS layer,
5561
+ ${D.raw(String(e))} AS layer,
5415
5562
  COUNT(*) AS value
5416
- FROM ${O.identifier(i)}
5563
+ FROM ${D.identifier(i)}
5417
5564
  GROUP BY event_type
5418
5565
  `);
5419
5566
  }
5420
- n.push(O`
5567
+ n.push(D`
5421
5568
  SELECT
5422
- ${O.raw("'start_'")} || event_type AS node_id,
5569
+ ${D.raw("'start_'")} || event_type AS node_id,
5423
5570
  event_type AS name,
5424
5571
  0 AS layer,
5425
5572
  COUNT(*) AS value
@@ -5428,82 +5575,82 @@ var At = class {
5428
5575
  `);
5429
5576
  for (let t = 1; t <= e.stepsAfter; t++) {
5430
5577
  let e = t, i = `after_step_${t}`;
5431
- r ? n.push(O`
5578
+ r ? n.push(D`
5432
5579
  SELECT
5433
- ${O.raw(`'after_${t}_'`)} || event_path AS node_id,
5580
+ ${D.raw(`'after_${t}_'`)} || event_path AS node_id,
5434
5581
  event_type AS name,
5435
- ${O.raw(String(e))} AS layer,
5582
+ ${D.raw(String(e))} AS layer,
5436
5583
  COUNT(*) AS value
5437
- FROM ${O.identifier(i)}
5584
+ FROM ${D.identifier(i)}
5438
5585
  GROUP BY event_path, event_type
5439
- `) : n.push(O`
5586
+ `) : n.push(D`
5440
5587
  SELECT
5441
- ${O.raw(`'after_${t}_'`)} || event_type AS node_id,
5588
+ ${D.raw(`'after_${t}_'`)} || event_type AS node_id,
5442
5589
  event_type AS name,
5443
- ${O.raw(String(e))} AS layer,
5590
+ ${D.raw(String(e))} AS layer,
5444
5591
  COUNT(*) AS value
5445
- FROM ${O.identifier(i)}
5592
+ FROM ${D.identifier(i)}
5446
5593
  GROUP BY event_type
5447
5594
  `);
5448
5595
  }
5449
- let i = O.join(n, O` UNION ALL `), a = t.db.select({
5450
- node_id: O`node_id`.as("node_id"),
5451
- name: O`name`.as("name"),
5452
- layer: O`layer`.as("layer"),
5453
- value: O`value`.as("value")
5454
- }).from(O`(${i}) AS nodes_union`);
5596
+ let i = D.join(n, D` UNION ALL `), a = t.db.select({
5597
+ node_id: D`node_id`.as("node_id"),
5598
+ name: D`name`.as("name"),
5599
+ layer: D`layer`.as("layer"),
5600
+ value: D`value`.as("value")
5601
+ }).from(D`(${i}) AS nodes_union`);
5455
5602
  return t.db.$with("nodes_agg").as(a);
5456
5603
  }
5457
5604
  buildLinksAggregationCTE(e, t) {
5458
5605
  let n = [], r = e.outputMode === "sunburst";
5459
5606
  for (let t = e.stepsBefore; t >= 2; t--) {
5460
5607
  let e = `before_step_${t}`, i = `before_step_${t - 1}`;
5461
- r ? n.push(O`
5608
+ r ? n.push(D`
5462
5609
  SELECT
5463
- ${O.raw(`'before_${t}_'`)} || f.event_path AS source_id,
5464
- ${O.raw(`'before_${t - 1}_'`)} || t.event_path AS target_id,
5610
+ ${D.raw(`'before_${t}_'`)} || f.event_path AS source_id,
5611
+ ${D.raw(`'before_${t - 1}_'`)} || t.event_path AS target_id,
5465
5612
  COUNT(*) AS value
5466
- FROM ${O.identifier(e)} f
5467
- INNER JOIN ${O.identifier(i)} t ON f.binding_key = t.binding_key
5613
+ FROM ${D.identifier(e)} f
5614
+ INNER JOIN ${D.identifier(i)} t ON f.binding_key = t.binding_key
5468
5615
  GROUP BY f.event_path, t.event_path
5469
- `) : n.push(O`
5616
+ `) : n.push(D`
5470
5617
  SELECT
5471
- ${O.raw(`'before_${t}_'`)} || f.event_type AS source_id,
5472
- ${O.raw(`'before_${t - 1}_'`)} || t.event_type AS target_id,
5618
+ ${D.raw(`'before_${t}_'`)} || f.event_type AS source_id,
5619
+ ${D.raw(`'before_${t - 1}_'`)} || t.event_type AS target_id,
5473
5620
  COUNT(*) AS value
5474
- FROM ${O.identifier(e)} f
5475
- INNER JOIN ${O.identifier(i)} t ON f.binding_key = t.binding_key
5621
+ FROM ${D.identifier(e)} f
5622
+ INNER JOIN ${D.identifier(i)} t ON f.binding_key = t.binding_key
5476
5623
  GROUP BY f.event_type, t.event_type
5477
5624
  `);
5478
5625
  }
5479
- e.stepsBefore >= 1 && (r ? n.push(O`
5626
+ e.stepsBefore >= 1 && (r ? n.push(D`
5480
5627
  SELECT
5481
- ${O.raw("'before_1_'")} || b.event_path AS source_id,
5482
- ${O.raw("'start_'")} || s.event_type AS target_id,
5628
+ ${D.raw("'before_1_'")} || b.event_path AS source_id,
5629
+ ${D.raw("'start_'")} || s.event_type AS target_id,
5483
5630
  COUNT(*) AS value
5484
5631
  FROM before_step_1 b
5485
5632
  INNER JOIN starting_entities s ON b.binding_key = s.binding_key
5486
5633
  GROUP BY b.event_path, s.event_type
5487
- `) : n.push(O`
5634
+ `) : n.push(D`
5488
5635
  SELECT
5489
- ${O.raw("'before_1_'")} || b.event_type AS source_id,
5490
- ${O.raw("'start_'")} || s.event_type AS target_id,
5636
+ ${D.raw("'before_1_'")} || b.event_type AS source_id,
5637
+ ${D.raw("'start_'")} || s.event_type AS target_id,
5491
5638
  COUNT(*) AS value
5492
5639
  FROM before_step_1 b
5493
5640
  INNER JOIN starting_entities s ON b.binding_key = s.binding_key
5494
5641
  GROUP BY b.event_type, s.event_type
5495
- `)), e.stepsAfter >= 1 && (r ? n.push(O`
5642
+ `)), e.stepsAfter >= 1 && (r ? n.push(D`
5496
5643
  SELECT
5497
- ${O.raw("'start_'")} || s.event_type AS source_id,
5498
- ${O.raw("'after_1_'")} || a.event_path AS target_id,
5644
+ ${D.raw("'start_'")} || s.event_type AS source_id,
5645
+ ${D.raw("'after_1_'")} || a.event_path AS target_id,
5499
5646
  COUNT(*) AS value
5500
5647
  FROM starting_entities s
5501
5648
  INNER JOIN after_step_1 a ON s.binding_key = a.binding_key
5502
5649
  GROUP BY s.event_type, a.event_path
5503
- `) : n.push(O`
5650
+ `) : n.push(D`
5504
5651
  SELECT
5505
- ${O.raw("'start_'")} || s.event_type AS source_id,
5506
- ${O.raw("'after_1_'")} || a.event_type AS target_id,
5652
+ ${D.raw("'start_'")} || s.event_type AS source_id,
5653
+ ${D.raw("'after_1_'")} || a.event_type AS target_id,
5507
5654
  COUNT(*) AS value
5508
5655
  FROM starting_entities s
5509
5656
  INNER JOIN after_step_1 a ON s.binding_key = a.binding_key
@@ -5511,41 +5658,41 @@ var At = class {
5511
5658
  `));
5512
5659
  for (let t = 1; t < e.stepsAfter; t++) {
5513
5660
  let e = `after_step_${t}`, i = `after_step_${t + 1}`;
5514
- r ? n.push(O`
5661
+ r ? n.push(D`
5515
5662
  SELECT
5516
- ${O.raw(`'after_${t}_'`)} || f.event_path AS source_id,
5517
- ${O.raw(`'after_${t + 1}_'`)} || t.event_path AS target_id,
5663
+ ${D.raw(`'after_${t}_'`)} || f.event_path AS source_id,
5664
+ ${D.raw(`'after_${t + 1}_'`)} || t.event_path AS target_id,
5518
5665
  COUNT(*) AS value
5519
- FROM ${O.identifier(e)} f
5520
- INNER JOIN ${O.identifier(i)} t ON f.binding_key = t.binding_key
5666
+ FROM ${D.identifier(e)} f
5667
+ INNER JOIN ${D.identifier(i)} t ON f.binding_key = t.binding_key
5521
5668
  GROUP BY f.event_path, t.event_path
5522
- `) : n.push(O`
5669
+ `) : n.push(D`
5523
5670
  SELECT
5524
- ${O.raw(`'after_${t}_'`)} || f.event_type AS source_id,
5525
- ${O.raw(`'after_${t + 1}_'`)} || t.event_type AS target_id,
5671
+ ${D.raw(`'after_${t}_'`)} || f.event_type AS source_id,
5672
+ ${D.raw(`'after_${t + 1}_'`)} || t.event_type AS target_id,
5526
5673
  COUNT(*) AS value
5527
- FROM ${O.identifier(e)} f
5528
- INNER JOIN ${O.identifier(i)} t ON f.binding_key = t.binding_key
5674
+ FROM ${D.identifier(e)} f
5675
+ INNER JOIN ${D.identifier(i)} t ON f.binding_key = t.binding_key
5529
5676
  GROUP BY f.event_type, t.event_type
5530
5677
  `);
5531
5678
  }
5532
5679
  if (n.length === 0) {
5533
5680
  let e = t.db.select({
5534
- source_id: O`NULL`.as("source_id"),
5535
- target_id: O`NULL`.as("target_id"),
5536
- value: O`0`.as("value")
5537
- }).from(O`(SELECT 1) AS empty`).where(O`1 = 0`);
5681
+ source_id: D`NULL`.as("source_id"),
5682
+ target_id: D`NULL`.as("target_id"),
5683
+ value: D`0`.as("value")
5684
+ }).from(D`(SELECT 1) AS empty`).where(D`1 = 0`);
5538
5685
  return t.db.$with("links_agg").as(e);
5539
5686
  }
5540
- let i = O.join(n, O` UNION ALL `), a = t.db.select({
5541
- source_id: O`source_id`.as("source_id"),
5542
- target_id: O`target_id`.as("target_id"),
5543
- value: O`value`.as("value")
5544
- }).from(O`(${i}) AS links_union`);
5687
+ let i = D.join(n, D` UNION ALL `), a = t.db.select({
5688
+ source_id: D`source_id`.as("source_id"),
5689
+ target_id: D`target_id`.as("target_id"),
5690
+ value: D`value`.as("value")
5691
+ }).from(D`(${i}) AS links_union`);
5545
5692
  return t.db.$with("links_agg").as(a);
5546
5693
  }
5547
5694
  buildFinalResultCTE(e) {
5548
- let t = O`
5695
+ let t = D`
5549
5696
  SELECT
5550
5697
  'node' AS record_type,
5551
5698
  node_id AS id,
@@ -5567,40 +5714,40 @@ var At = class {
5567
5714
  FROM links_agg
5568
5715
  WHERE source_id IS NOT NULL
5569
5716
  `, n = e.db.select({
5570
- record_type: O`record_type`.as("record_type"),
5571
- id: O`id`.as("id"),
5572
- name: O`name`.as("name"),
5573
- layer: O`layer`.as("layer"),
5574
- value: O`value`.as("value"),
5575
- source_id: O`source_id`.as("source_id"),
5576
- target_id: O`target_id`.as("target_id")
5577
- }).from(O`(${t}) AS final_union`);
5717
+ record_type: D`record_type`.as("record_type"),
5718
+ id: D`id`.as("id"),
5719
+ name: D`name`.as("name"),
5720
+ layer: D`layer`.as("layer"),
5721
+ value: D`value`.as("value"),
5722
+ source_id: D`source_id`.as("source_id"),
5723
+ target_id: D`target_id`.as("target_id")
5724
+ }).from(D`(${t}) AS final_union`);
5578
5725
  return e.db.$with("final_result").as(n);
5579
5726
  }
5580
5727
  };
5581
5728
  //#endregion
5582
5729
  //#region src/server/types/retention.ts
5583
- function Nt(e) {
5730
+ function It(e) {
5584
5731
  return Array.isArray(e);
5585
5732
  }
5586
- function Pt(e) {
5733
+ function Lt(e) {
5587
5734
  return typeof e == "object" && !!e && "cube" in e;
5588
5735
  }
5589
- function Ft(e) {
5590
- if (Pt(e)) return e.cube;
5736
+ function Rt(e) {
5737
+ if (Lt(e)) return e.cube;
5591
5738
  let t = e.indexOf(".");
5592
5739
  if (t === -1) throw Error(`Invalid time dimension format: ${e}. Expected 'CubeName.dimensionName'`);
5593
5740
  return e.substring(0, t);
5594
5741
  }
5595
- function It(e) {
5596
- if (Pt(e)) return e.dimension;
5742
+ function zt(e) {
5743
+ if (Lt(e)) return e.dimension;
5597
5744
  let t = e.indexOf(".");
5598
5745
  if (t === -1) throw Error(`Invalid time dimension format: ${e}. Expected 'CubeName.dimensionName'`);
5599
5746
  return e.substring(t + 1);
5600
5747
  }
5601
5748
  //#endregion
5602
5749
  //#region src/server/builders/retention-query-builder.ts
5603
- var Lt = class {
5750
+ var Bt = class {
5604
5751
  filterBuilder;
5605
5752
  dateTimeBuilder;
5606
5753
  constructor(e) {
@@ -5612,12 +5759,12 @@ var Lt = class {
5612
5759
  validateConfig(e, t) {
5613
5760
  let n = [];
5614
5761
  try {
5615
- let r = Ft(e.timeDimension), i = It(e.timeDimension), a = t.get(r);
5762
+ let r = Rt(e.timeDimension), i = zt(e.timeDimension), a = t.get(r);
5616
5763
  a ? a.dimensions?.[i] || n.push(`Time dimension not found: ${i} in cube ${r}`) : n.push(`Cube not found: ${r}`);
5617
5764
  } catch {
5618
5765
  n.push(`Invalid time dimension format: ${e.timeDimension}`);
5619
5766
  }
5620
- if (Nt(e.bindingKey)) for (let r of e.bindingKey) {
5767
+ if (It(e.bindingKey)) for (let r of e.bindingKey) {
5621
5768
  let e = t.get(r.cube);
5622
5769
  if (!e) n.push(`Binding key mapping cube not found: ${r.cube}`);
5623
5770
  else {
@@ -5669,20 +5816,20 @@ var Lt = class {
5669
5816
  }
5670
5817
  buildRetentionQuery(e, t, n) {
5671
5818
  let r = this.resolveConfig(e, t, n), i = r.breakdowns.length, a = this.buildCohortBaseCTE(e, r, n), o = this.buildActivityPeriodsCTE(e, r, n), s = this.buildCohortSizesCTE(e, n, i), c = this.buildRetentionCountsCTE(e, n, i), l = r.breakdowns.length > 0, u = {
5672
- period: O`rc.period_number`.as("period"),
5673
- cohort_size: O`cs.cohort_size`.as("cohort_size"),
5674
- retained_users: O`rc.retained_users`.as("retained_users"),
5675
- retention_rate: O`CAST(rc.retained_users AS NUMERIC) / NULLIF(cs.cohort_size, 0)`.as("retention_rate")
5819
+ period: D`rc.period_number`.as("period"),
5820
+ cohort_size: D`cs.cohort_size`.as("cohort_size"),
5821
+ retained_users: D`rc.retained_users`.as("retained_users"),
5822
+ retention_rate: D`CAST(rc.retained_users AS NUMERIC) / NULLIF(cs.cohort_size, 0)`.as("retention_rate")
5676
5823
  };
5677
- for (let e = 0; e < r.breakdowns.length; e++) u[`breakdown_${e}`] = O.raw(`rc.breakdown_${e}`).as(`breakdown_${e}`);
5678
- let d = n.db.with(a, o, s, c).select(u).from(O`retention_counts rc`);
5824
+ for (let e = 0; e < r.breakdowns.length; e++) u[`breakdown_${e}`] = D.raw(`rc.breakdown_${e}`).as(`breakdown_${e}`);
5825
+ let d = n.db.with(a, o, s, c).select(u).from(D`retention_counts rc`);
5679
5826
  if (l) {
5680
- let e = r.breakdowns.map((e, t) => O`COALESCE(CAST(rc.breakdown_${O.raw(String(t))} AS TEXT), '') = COALESCE(CAST(cs.breakdown_${O.raw(String(t))} AS TEXT), '')`), t = e.length === 1 ? e[0] : O.join(e, O` AND `);
5681
- d = d.innerJoin(O`cohort_sizes cs`, t);
5682
- } else d = d.innerJoin(O`cohort_sizes cs`, O`1 = 1`);
5827
+ let e = r.breakdowns.map((e, t) => D`COALESCE(CAST(rc.breakdown_${D.raw(String(t))} AS TEXT), '') = COALESCE(CAST(cs.breakdown_${D.raw(String(t))} AS TEXT), '')`), t = e.length === 1 ? e[0] : D.join(e, D` AND `);
5828
+ d = d.innerJoin(D`cohort_sizes cs`, t);
5829
+ } else d = d.innerJoin(D`cohort_sizes cs`, D`1 = 1`);
5683
5830
  let f = [];
5684
- for (let e = 0; e < r.breakdowns.length; e++) f.push(O.raw(`rc.breakdown_${e}`));
5685
- return f.push(O`rc.period_number`), d = d.orderBy(...f), d;
5831
+ for (let e = 0; e < r.breakdowns.length; e++) f.push(D.raw(`rc.breakdown_${e}`));
5832
+ return f.push(D`rc.period_number`), d = d.orderBy(...f), d;
5686
5833
  }
5687
5834
  transformResult(e, t) {
5688
5835
  let n = t.breakdownDimensions || [], r = Math.min(n.length, 100), i = r > 0;
@@ -5705,7 +5852,7 @@ var Lt = class {
5705
5852
  });
5706
5853
  }
5707
5854
  resolveConfig(e, t, n) {
5708
- let r = Ft(e.timeDimension), i = It(e.timeDimension), a = t.get(r);
5855
+ let r = Rt(e.timeDimension), i = zt(e.timeDimension), a = t.get(r);
5709
5856
  if (!a) throw Error(`Cube not found: ${r}`);
5710
5857
  let o = a.dimensions?.[i];
5711
5858
  if (!o) throw Error(`Time dimension not found: ${i}`);
@@ -5730,7 +5877,7 @@ var Lt = class {
5730
5877
  };
5731
5878
  }
5732
5879
  resolveBindingKey(e, t, n, r) {
5733
- if (Nt(e)) {
5880
+ if (It(e)) {
5734
5881
  let i = e.find((e) => e.cube === t.name);
5735
5882
  if (!i) throw Error(`No binding key mapping found for cube: ${t.name}`);
5736
5883
  let a = this.extractDimensionName(i.dimension), o = n.get(i.cube);
@@ -5761,7 +5908,7 @@ var Lt = class {
5761
5908
  let i = this.buildSingleFilterCondition(e, t, n, r);
5762
5909
  i && a.push(i);
5763
5910
  }
5764
- return a.length === 0 ? null : a.length === 1 ? a[0] : o ? F(...a) : O`(${O.join(a, O` OR `)})`;
5911
+ return a.length === 0 ? null : a.length === 1 ? a[0] : o ? P(...a) : D`(${D.join(a, D` OR `)})`;
5765
5912
  }
5766
5913
  let i = e, [a, o] = i.member.split("."), s = n.get(a);
5767
5914
  if (!s) return null;
@@ -5777,16 +5924,16 @@ var Lt = class {
5777
5924
  i.push(n);
5778
5925
  }
5779
5926
  let a = this.databaseAdapter.buildTimeDimension(e.granularity, t.timeExpr), o = {
5780
- binding_key: O`${t.bindingKeyExpr}`.as("binding_key"),
5781
- cohort_entry: O`MIN(${a})`.as("cohort_entry")
5927
+ binding_key: D`${t.bindingKeyExpr}`.as("binding_key"),
5928
+ cohort_entry: D`MIN(${a})`.as("cohort_entry")
5782
5929
  };
5783
5930
  for (let e = 0; e < t.breakdowns.length; e++) {
5784
5931
  let { expr: n } = t.breakdowns[e];
5785
- o[`breakdown_${e}`] = O`MIN(${n})`.as(`breakdown_${e}`);
5932
+ o[`breakdown_${e}`] = D`MIN(${n})`.as(`breakdown_${e}`);
5786
5933
  }
5787
5934
  let s = n.db.select(o).from(r.from);
5788
5935
  if (i.length > 0) {
5789
- let e = i.length === 1 ? i[0] : F(...i);
5936
+ let e = i.length === 1 ? i[0] : P(...i);
5790
5937
  s = s.where(e);
5791
5938
  }
5792
5939
  let c = [t.bindingKeyExpr];
@@ -5798,36 +5945,36 @@ var Lt = class {
5798
5945
  return n.db.$with("cohort_base").as(s);
5799
5946
  }
5800
5947
  buildDateRangeCondition(e, t) {
5801
- return O`${e} >= ${t.start}::date AND ${e} < (${t.end}::date + interval '1 day')`;
5948
+ return D`${e} >= ${t.start}::date AND ${e} < (${t.end}::date + interval '1 day')`;
5802
5949
  }
5803
5950
  buildDateRangeHavingCondition(e, t) {
5804
- return O`MIN(${e}) >= ${t.start}::date AND MIN(${e}) < (${t.end}::date + interval '1 day')`;
5951
+ return D`MIN(${e}) >= ${t.start}::date AND MIN(${e}) < (${t.end}::date + interval '1 day')`;
5805
5952
  }
5806
5953
  buildActivityPeriodsCTE(e, t, n) {
5807
5954
  let r = t.cube.sql(n), i = [];
5808
- r.where && i.push(r.where), i.push(...t.activityFilterConditions), i.push(O`${t.timeExpr} >= cohort_base.cohort_entry`);
5809
- let a = this.databaseAdapter.buildTimeDimension(e.granularity, t.timeExpr), o = this.buildPeriodNumberExpression(O`cohort_base.cohort_entry`, a, e.granularity), s = {
5810
- binding_key: O`cohort_base.binding_key`.as("binding_key"),
5955
+ r.where && i.push(r.where), i.push(...t.activityFilterConditions), i.push(D`${t.timeExpr} >= cohort_base.cohort_entry`);
5956
+ let a = this.databaseAdapter.buildTimeDimension(e.granularity, t.timeExpr), o = this.buildPeriodNumberExpression(D`cohort_base.cohort_entry`, a, e.granularity), s = {
5957
+ binding_key: D`cohort_base.binding_key`.as("binding_key"),
5811
5958
  period_number: o.as("period_number")
5812
5959
  };
5813
- for (let e = 0; e < t.breakdowns.length; e++) s[`breakdown_${e}`] = O.raw(`cohort_base.breakdown_${e}`).as(`breakdown_${e}`);
5814
- let c = n.db.select(s).from(r.from).innerJoin(O`cohort_base`, O`${t.bindingKeyExpr} = cohort_base.binding_key`);
5960
+ for (let e = 0; e < t.breakdowns.length; e++) s[`breakdown_${e}`] = D.raw(`cohort_base.breakdown_${e}`).as(`breakdown_${e}`);
5961
+ let c = n.db.select(s).from(r.from).innerJoin(D`cohort_base`, D`${t.bindingKeyExpr} = cohort_base.binding_key`);
5815
5962
  if (i.length > 0) {
5816
- let e = i.length === 1 ? i[0] : F(...i);
5963
+ let e = i.length === 1 ? i[0] : P(...i);
5817
5964
  c = c.where(e);
5818
5965
  }
5819
- let l = [O`cohort_base.binding_key`, o];
5820
- for (let e = 0; e < t.breakdowns.length; e++) l.push(O.raw(`cohort_base.breakdown_${e}`));
5966
+ let l = [D`cohort_base.binding_key`, o];
5967
+ for (let e = 0; e < t.breakdowns.length; e++) l.push(D.raw(`cohort_base.breakdown_${e}`));
5821
5968
  return c = c.groupBy(...l), n.db.$with("activity_periods").as(c);
5822
5969
  }
5823
5970
  buildCohortSizesCTE(e, t, n) {
5824
5971
  if (n > 0) {
5825
- let e = { cohort_size: O`COUNT(*)`.as("cohort_size") }, r = [];
5826
- for (let t = 0; t < n; t++) e[`breakdown_${t}`] = O.raw(`breakdown_${t}`).as(`breakdown_${t}`), r.push(O.raw(`breakdown_${t}`));
5827
- let i = t.db.select(e).from(O`cohort_base`).groupBy(...r);
5972
+ let e = { cohort_size: D`COUNT(*)`.as("cohort_size") }, r = [];
5973
+ for (let t = 0; t < n; t++) e[`breakdown_${t}`] = D.raw(`breakdown_${t}`).as(`breakdown_${t}`), r.push(D.raw(`breakdown_${t}`));
5974
+ let i = t.db.select(e).from(D`cohort_base`).groupBy(...r);
5828
5975
  return t.db.$with("cohort_sizes").as(i);
5829
5976
  }
5830
- let r = t.db.select({ cohort_size: O`COUNT(*)`.as("cohort_size") }).from(O`cohort_base`);
5977
+ let r = t.db.select({ cohort_size: D`COUNT(*)`.as("cohort_size") }).from(D`cohort_base`);
5831
5978
  return t.db.$with("cohort_sizes").as(r);
5832
5979
  }
5833
5980
  buildRetentionCountsCTE(e, t, n) {
@@ -5835,32 +5982,32 @@ var Lt = class {
5835
5982
  if (e.retentionType === "rolling") r = this.buildRollingRetentionCountsQuery(e, t, n);
5836
5983
  else {
5837
5984
  let i = {
5838
- period_number: O`period_number`.as("period_number"),
5839
- retained_users: O`COUNT(DISTINCT binding_key)`.as("retained_users")
5840
- }, a = [O`period_number`];
5841
- for (let e = 0; e < n; e++) i[`breakdown_${e}`] = O.raw(`breakdown_${e}`).as(`breakdown_${e}`), a.push(O.raw(`breakdown_${e}`));
5985
+ period_number: D`period_number`.as("period_number"),
5986
+ retained_users: D`COUNT(DISTINCT binding_key)`.as("retained_users")
5987
+ }, a = [D`period_number`];
5988
+ for (let e = 0; e < n; e++) i[`breakdown_${e}`] = D.raw(`breakdown_${e}`).as(`breakdown_${e}`), a.push(D.raw(`breakdown_${e}`));
5842
5989
  let o = Math.min(e.periods, 52);
5843
- r = t.db.select(i).from(O`activity_periods`).where(O`period_number >= 0 AND period_number <= ${o}`).groupBy(...a);
5990
+ r = t.db.select(i).from(D`activity_periods`).where(D`period_number >= 0 AND period_number <= ${o}`).groupBy(...a);
5844
5991
  }
5845
5992
  return t.db.$with("retention_counts").as(r);
5846
5993
  }
5847
5994
  buildRollingRetentionCountsQuery(e, t, n) {
5848
5995
  let r = [];
5849
5996
  for (let e = 0; e < n; e++) r.push(`breakdown_${e}`);
5850
- let i = r.length > 0 ? `, ${r.join(", ")}` : "", a = O`(
5997
+ let i = r.length > 0 ? `, ${r.join(", ")}` : "", a = D`(
5851
5998
  SELECT
5852
5999
  binding_key,
5853
- ${O.raw(r.map((e) => `${e}`).join(", ") + (r.length > 0 ? "," : ""))}
6000
+ ${D.raw(r.map((e) => `${e}`).join(", ") + (r.length > 0 ? "," : ""))}
5854
6001
  MAX(period_number) as max_period
5855
6002
  FROM activity_periods
5856
6003
  WHERE period_number >= 0 AND period_number <= ${e.periods}
5857
- GROUP BY binding_key${O.raw(i)}
6004
+ GROUP BY binding_key${D.raw(i)}
5858
6005
  )`, o = this.databaseAdapter.buildPeriodSeriesSubquery(e.periods), s = {
5859
- period_number: O`p.period_number`.as("period_number"),
5860
- retained_users: O`COUNT(DISTINCT CASE WHEN ump.max_period >= p.period_number THEN ump.binding_key END)`.as("retained_users")
5861
- }, c = [O`p.period_number`];
5862
- for (let e = 0; e < n; e++) s[`breakdown_${e}`] = O.raw(`ump.breakdown_${e}`).as(`breakdown_${e}`), c.push(O.raw(`ump.breakdown_${e}`));
5863
- return t.db.select(s).from(O`${a} ump`).innerJoin(o, O`TRUE`).groupBy(...c);
6006
+ period_number: D`p.period_number`.as("period_number"),
6007
+ retained_users: D`COUNT(DISTINCT CASE WHEN ump.max_period >= p.period_number THEN ump.binding_key END)`.as("retained_users")
6008
+ }, c = [D`p.period_number`];
6009
+ for (let e = 0; e < n; e++) s[`breakdown_${e}`] = D.raw(`ump.breakdown_${e}`).as(`breakdown_${e}`), c.push(D.raw(`ump.breakdown_${e}`));
6010
+ return t.db.select(s).from(D`${a} ump`).innerJoin(o, D`TRUE`).groupBy(...c);
5864
6011
  }
5865
6012
  buildPeriodNumberExpression(e, t, n) {
5866
6013
  return this.databaseAdapter.buildDateDiffPeriods(e, t, n);
@@ -5869,7 +6016,7 @@ var Lt = class {
5869
6016
  let t = e.split(".");
5870
6017
  return t.length > 1 ? t[1] : t[0];
5871
6018
  }
5872
- }, Rt = class {
6019
+ }, Vt = class {
5873
6020
  constructor(e) {
5874
6021
  this.queryPlanner = e;
5875
6022
  }
@@ -6304,7 +6451,7 @@ var Lt = class {
6304
6451
  timeDimensions: []
6305
6452
  };
6306
6453
  }
6307
- }, zt = class {
6454
+ }, Ht = class {
6308
6455
  name = "identity";
6309
6456
  optimise(e) {
6310
6457
  return e;
@@ -6312,7 +6459,7 @@ var Lt = class {
6312
6459
  };
6313
6460
  //#endregion
6314
6461
  //#region src/server/physical-plan/processors/cte-processor.ts
6315
- function Bt(e, t, n, r) {
6462
+ function Ut(e, t, n, r) {
6316
6463
  let i = /* @__PURE__ */ new Map();
6317
6464
  if (e.preAggregationCTEs && e.preAggregationCTEs.length > 0) {
6318
6465
  for (let t of e.preAggregationCTEs) if (t.propagatingFilters && t.propagatingFilters.length > 0) for (let e of t.propagatingFilters) {
@@ -6322,7 +6469,7 @@ function Bt(e, t, n, r) {
6322
6469
  i.set(t, s);
6323
6470
  }
6324
6471
  let a = i.get(t);
6325
- a && a.length > 0 && (e.preBuiltFilterSQL = a.length === 1 ? a[0] : F(...a));
6472
+ a && a.length > 0 && (e.preBuiltFilterSQL = a.length === 1 ? a[0] : P(...a));
6326
6473
  }
6327
6474
  }
6328
6475
  let a = [], o = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map();
@@ -6342,7 +6489,7 @@ function Bt(e, t, n, r) {
6342
6489
  }
6343
6490
  //#endregion
6344
6491
  //#region src/server/physical-plan/processors/window-processor.ts
6345
- function Vt(e, t, n, r, i, a) {
6492
+ function Wt(e, t, n, r, i, a) {
6346
6493
  if (n.measures) for (let o of n.measures) {
6347
6494
  let [s, c] = o.split("."), l = i.get(s);
6348
6495
  if (!l?.measures?.[c]) continue;
@@ -6353,16 +6500,16 @@ function Vt(e, t, n, r, i, a) {
6353
6500
  let [f, p] = d.split("."), m = i.get(f);
6354
6501
  if (!m?.measures?.[p]) continue;
6355
6502
  let h = m.measures[p], g = t.preAggregationCTEs?.find((e) => e.cube?.name === f && e.measures?.includes(d)), _;
6356
- _ = g ? O`sum(${O`${O.identifier(g.cteAlias)}.${O.identifier(p)}`})` : a.queryBuilder.buildMeasureExpression(h, r, m), e[d] || (e[d] = O`${_}`.as(d));
6357
- let v = Ht(u, _, n, r, l, t, a);
6358
- v && (e[o] = O`${v}`.as(o));
6503
+ _ = g ? D`sum(${D`${D.identifier(g.cteAlias)}.${D.identifier(p)}`})` : a.queryBuilder.buildMeasureExpression(h, r, m), e[d] || (e[d] = D`${_}`.as(d));
6504
+ let v = Gt(u, _, n, r, l, t, a);
6505
+ v && (e[o] = D`${v}`.as(o));
6359
6506
  }
6360
6507
  }
6361
- function Ht(e, t, n, r, i, a, o) {
6508
+ function Gt(e, t, n, r, i, a, o) {
6362
6509
  let s = e.windowConfig || {}, c = (e, t) => {
6363
6510
  if (!a.preAggregationCTEs) return null;
6364
6511
  let n = a.preAggregationCTEs.find((t) => t.cube?.name === e);
6365
- return n && n.cteAlias ? O`${O.identifier(n.cteAlias)}.${O.identifier(t)}` : null;
6512
+ return n && n.cteAlias ? D`${D.identifier(n.cteAlias)}.${D.identifier(t)}` : null;
6366
6513
  }, l;
6367
6514
  if (s.orderBy && s.orderBy.length > 0) l = s.orderBy.map((e) => {
6368
6515
  let a = e.field.includes(".") ? e.field.split(".")[1] : e.field;
@@ -6420,15 +6567,15 @@ function Ht(e, t, n, r, i, a, o) {
6420
6567
  });
6421
6568
  if (!d) return null;
6422
6569
  switch (s.operation || Q.getDefaultWindowOperation(e.type)) {
6423
- case "difference": return O`${t} - ${d}`;
6424
- case "ratio": return O`${t} / NULLIF(${d}, 0)`;
6425
- case "percentChange": return O`((${t} - ${d}) / NULLIF(${d}, 0)) * 100`;
6570
+ case "difference": return D`${t} - ${d}`;
6571
+ case "ratio": return D`${t} / NULLIF(${d}, 0)`;
6572
+ case "percentChange": return D`((${t} - ${d}) / NULLIF(${d}, 0)) * 100`;
6426
6573
  default: return d;
6427
6574
  }
6428
6575
  }
6429
6576
  //#endregion
6430
6577
  //#region src/server/physical-plan/processors/selection-processor.ts
6431
- function Ut(e, t, n, r, i) {
6578
+ function Kt(e, t, n, r, i) {
6432
6579
  let a = { ...i.queryBuilder.buildSelections(e.joinCubes.length > 0 ? r : e.primaryCube, t, n) };
6433
6580
  if (e.preAggregationCTEs) for (let o of e.preAggregationCTEs) {
6434
6581
  let e = o.cube.name;
@@ -6436,32 +6583,32 @@ function Ut(e, t, n, r, i) {
6436
6583
  if (!a[s]) continue;
6437
6584
  let [, c] = s.split("."), l = r.get(e);
6438
6585
  if (!l?.measures?.[c]) continue;
6439
- let u = l.measures[c], d = O`${O.identifier(o.cteAlias)}.${O.identifier(c)}`, f;
6586
+ let u = l.measures[c], d = D`${D.identifier(o.cteAlias)}.${D.identifier(c)}`, f;
6440
6587
  if (u.type === "calculated" && u.calculatedSql) f = i.queryBuilder.buildCTECalculatedMeasure(u, l, o, r, n);
6441
6588
  else {
6442
- let e = o.cteReason === "fanOutPrevention", n = Wt(o, t, r), a = e || n;
6589
+ let e = o.cteReason === "fanOutPrevention", n = qt(o, t, r), a = e || n;
6443
6590
  switch (u.type) {
6444
6591
  case "count":
6445
6592
  case "countDistinct":
6446
6593
  case "sum":
6447
- f = a ? B(d) : z(d);
6594
+ f = a ? z(d) : R(d);
6448
6595
  break;
6449
6596
  case "avg":
6450
- f = a ? B(d) : i.databaseAdapter.buildAvg(d);
6597
+ f = a ? z(d) : i.databaseAdapter.buildAvg(d);
6451
6598
  break;
6452
6599
  case "min":
6453
- f = pe(d);
6600
+ f = B(d);
6454
6601
  break;
6455
6602
  case "max":
6456
- f = B(d);
6603
+ f = z(d);
6457
6604
  break;
6458
6605
  case "number":
6459
- f = B(d);
6606
+ f = z(d);
6460
6607
  break;
6461
- default: f = a ? B(d) : z(d);
6608
+ default: f = a ? z(d) : R(d);
6462
6609
  }
6463
6610
  }
6464
- a[s] = O`${f}`.as(s);
6611
+ a[s] = D`${f}`.as(s);
6465
6612
  }
6466
6613
  for (let t in a) {
6467
6614
  let [n, i] = t.split(".");
@@ -6473,15 +6620,15 @@ function Ut(e, t, n, r, i) {
6473
6620
  let e = s.dimensions[i].sql;
6474
6621
  u = o.joinKeys.find((t) => t.targetColumnObj === e);
6475
6622
  }
6476
- (u || l && s?.dimensions?.[i]) && (a[t] = O`${O.identifier(o.cteAlias)}.${O.identifier(i)}`.as(t));
6623
+ (u || l && s?.dimensions?.[i]) && (a[t] = D`${D.identifier(o.cteAlias)}.${D.identifier(i)}`.as(t));
6477
6624
  }
6478
6625
  }
6479
- return Vt(a, e, t, n, r, i), a;
6626
+ return Wt(a, e, t, n, r, i), a;
6480
6627
  }
6481
- function Wt(e, t, n) {
6482
- return e.cteReason !== "hasMany" || e.downstreamJoinKeys && e.downstreamJoinKeys.length > 0 || e.intermediateJoins && e.intermediateJoins.length > 0 || !(t.dimensions && t.dimensions.length > 0 || t.timeDimensions && t.timeDimensions.length > 0) || t.dimensions?.some((t) => t.startsWith(`${e.cube.name}.`)) || t.timeDimensions?.some((t) => t.dimension.startsWith(`${e.cube.name}.`)) ? !1 : e.joinKeys.length > 0 && e.joinKeys.every((e) => !!e.sourceColumnObj && Gt(e.sourceColumnObj, t, n));
6628
+ function qt(e, t, n) {
6629
+ return e.cteReason !== "hasMany" || e.downstreamJoinKeys && e.downstreamJoinKeys.length > 0 || e.intermediateJoins && e.intermediateJoins.length > 0 || !(t.dimensions && t.dimensions.length > 0 || t.timeDimensions && t.timeDimensions.length > 0) || t.dimensions?.some((t) => t.startsWith(`${e.cube.name}.`)) || t.timeDimensions?.some((t) => t.dimension.startsWith(`${e.cube.name}.`)) ? !1 : e.joinKeys.length > 0 && e.joinKeys.every((e) => !!e.sourceColumnObj && Jt(e.sourceColumnObj, t, n));
6483
6630
  }
6484
- function Gt(e, t, n) {
6631
+ function Jt(e, t, n) {
6485
6632
  if (t.dimensions) for (let r of t.dimensions) {
6486
6633
  let [t, i] = r.split(".");
6487
6634
  if (n.get(t)?.dimensions?.[i]?.sql === e) return !0;
@@ -6495,7 +6642,7 @@ function Gt(e, t, n) {
6495
6642
  }
6496
6643
  //#endregion
6497
6644
  //#region src/server/physical-plan/processors/joins-processor.ts
6498
- function Kt(e, t, n, r, i, a) {
6645
+ function Yt(e, t, n, r, i, a) {
6499
6646
  let o = [], s = t.db.select(r).from(n.from);
6500
6647
  if (i.ctes.length > 0 && (s = t.db.with(...i.ctes).select(r).from(n.from)), n.joins) for (let e of n.joins) switch (e.type || "left") {
6501
6648
  case "left":
@@ -6526,10 +6673,10 @@ function Kt(e, t, n, r, i, a) {
6526
6673
  if (t && t.joinKeys.length > 0) {
6527
6674
  let e = [];
6528
6675
  for (let n of t.joinKeys) {
6529
- let t = O`${O.identifier(c)}.${O.identifier(n.sourceColumn)}`, r = n.targetColumnObj;
6530
- r && e.push(N(r, t));
6676
+ let t = D`${D.identifier(c)}.${D.identifier(n.sourceColumn)}`, r = n.targetColumnObj;
6677
+ r && e.push(M(r, t));
6531
6678
  }
6532
- e.length > 0 && (a = F(...e));
6679
+ e.length > 0 && (a = P(...e));
6533
6680
  }
6534
6681
  }
6535
6682
  let l = [];
@@ -6556,19 +6703,19 @@ function Kt(e, t, n, r, i, a) {
6556
6703
  } catch {}
6557
6704
  }
6558
6705
  let d, f, p;
6559
- if (u) d = O`${O.identifier(u)}`, f = a.cteBuilder.buildCTEJoinCondition(n, u, e), p = void 0;
6706
+ if (u) d = D`${D.identifier(u)}`, f = a.cteBuilder.buildCTEJoinCondition(n, u, e), p = void 0;
6560
6707
  else {
6561
6708
  let e = i.downstreamCubeMap.get(n.cube.name), r = n.cube.sql(t);
6562
6709
  if (d = r.from, p = r.where, e && !n.junctionTable) {
6563
6710
  let t = [];
6564
6711
  for (let n of e.joinKeys) {
6565
- let r = O`${O.identifier(e.cteAlias)}.${O.identifier(n.sourceColumn)}`, i = n.targetColumnObj || O.identifier(n.targetColumn);
6566
- t.push(N(r, i));
6712
+ let r = D`${D.identifier(e.cteAlias)}.${D.identifier(n.sourceColumn)}`, i = n.targetColumnObj || D.identifier(n.targetColumn);
6713
+ t.push(M(r, i));
6567
6714
  }
6568
- f = t.length === 1 ? t[0] : F(...t);
6715
+ f = t.length === 1 ? t[0] : P(...t);
6569
6716
  } else f = n.joinCondition;
6570
6717
  }
6571
- let m = n.joinType || "left", h = m !== "inner" && p ? F(f, p) : f;
6718
+ let m = n.joinType || "left", h = m !== "inner" && p ? P(f, p) : f;
6572
6719
  try {
6573
6720
  switch (m) {
6574
6721
  case "left":
@@ -6595,7 +6742,7 @@ function Kt(e, t, n, r, i, a) {
6595
6742
  }
6596
6743
  //#endregion
6597
6744
  //#region src/server/physical-plan/processors/predicates-processor.ts
6598
- function qt(e, t, n, r, i, a, o, s) {
6745
+ function Xt(e, t, n, r, i, a, o, s) {
6599
6746
  let c = [...o.allWhereConditions];
6600
6747
  if (i.where && c.push(i.where), e.joinCubes && e.joinCubes.length > 0) for (let t of e.joinCubes) {
6601
6748
  let e = t.cube.name;
@@ -6607,14 +6754,14 @@ function qt(e, t, n, r, i, a, o, s) {
6607
6754
  l.length > 0 && c.push(...l);
6608
6755
  let u = o.drizzleQuery;
6609
6756
  if (c.length > 0) {
6610
- let e = c.length === 1 ? c[0] : F(...c);
6757
+ let e = c.length === 1 ? c[0] : P(...c);
6611
6758
  u = u.where(e);
6612
6759
  }
6613
6760
  let d = s.queryBuilder.buildGroupByFields(e.joinCubes.length > 0 ? r : e.primaryCube, t, n, e);
6614
6761
  if (d.length > 0 && (u = u.groupBy(...d)), !t.ungrouped) {
6615
6762
  let i = s.queryBuilder.buildHavingConditions(e.joinCubes.length > 0 ? r : e.primaryCube, t, n, e);
6616
6763
  if (i.length > 0) {
6617
- let e = i.length === 1 ? i[0] : F(...i);
6764
+ let e = i.length === 1 ? i[0] : P(...i);
6618
6765
  u = u.having(e);
6619
6766
  }
6620
6767
  }
@@ -6623,14 +6770,14 @@ function qt(e, t, n, r, i, a, o, s) {
6623
6770
  }
6624
6771
  //#endregion
6625
6772
  //#region src/server/physical-plan/processors/shared.ts
6626
- function Jt(e) {
6773
+ function Zt(e) {
6627
6774
  let t = /* @__PURE__ */ new Map();
6628
6775
  if (t.set(e.primaryCube.name, e.primaryCube), e.joinCubes) for (let n of e.joinCubes) t.set(n.cube.name, n.cube);
6629
6776
  return t;
6630
6777
  }
6631
6778
  //#endregion
6632
6779
  //#region src/server/physical-plan/drizzle-plan-builder.ts
6633
- var Yt = class {
6780
+ var Qt = class {
6634
6781
  constructor(e, t, n) {
6635
6782
  this.queryBuilder = e, this.cteBuilder = t, this.databaseAdapter = n;
6636
6783
  }
@@ -6770,13 +6917,13 @@ var Yt = class {
6770
6917
  if (i) return i;
6771
6918
  let a = this.tryBuildKeysDeduplicationQuery(e, t, n, r);
6772
6919
  if (a) return a;
6773
- let o = Bt(e, t, n, r), s = e.primaryCube.sql(n), c = e.joinCubes.length > 0 ? Jt(e) : new Map([[e.primaryCube.name, e.primaryCube]]);
6774
- return qt(e, t, n, c, s, o, Kt(e, n, s, Ut(e, t, n, c, r), o, r), r);
6920
+ let o = Ut(e, t, n, r), s = e.primaryCube.sql(n), c = e.joinCubes.length > 0 ? Zt(e) : new Map([[e.primaryCube.name, e.primaryCube]]);
6921
+ return Xt(e, t, n, c, s, o, Yt(e, n, s, Kt(e, t, n, c, r), o, r), r);
6775
6922
  }
6776
6923
  tryBuildKeysDeduplicationQuery(e, t, n, r) {
6777
6924
  let i = e.keysDeduplication;
6778
6925
  if (!i?.multipliedCubeName || !t.measures?.length) return null;
6779
- let a = e.joinCubes.length > 0 ? Jt(e) : new Map([[e.primaryCube.name, e.primaryCube]]), o = a.get(i.multipliedCubeName);
6926
+ let a = e.joinCubes.length > 0 ? Zt(e) : new Map([[e.primaryCube.name, e.primaryCube]]), o = a.get(i.multipliedCubeName);
6780
6927
  if (!o || !this.canExecuteKeysDeduplication(t, o, i.multipliedCubeName)) return null;
6781
6928
  let s = i.primaryKeyDimensions.length > 0 ? i.primaryKeyDimensions : this.getPrimaryKeyDimensions(o);
6782
6929
  if (s.length === 0) return null;
@@ -6785,20 +6932,20 @@ var Yt = class {
6785
6932
  let [t, r] = e.split("."), i = a.get(t), o = i?.dimensions?.[r];
6786
6933
  if (!i || !o) return null;
6787
6934
  let s = W(o.sql, n);
6788
- u[e] = O`${s}`.as(e), d.push(s);
6935
+ u[e] = D`${s}`.as(e), d.push(s);
6789
6936
  }
6790
6937
  if (t.timeDimensions) for (let e of t.timeDimensions) {
6791
6938
  let [t, i] = e.dimension.split("."), o = a.get(t), s = o?.dimensions?.[i];
6792
6939
  if (!o || !s) return null;
6793
6940
  let c = r.queryBuilder.buildTimeDimensionExpression(s.sql, e.granularity, n);
6794
- u[e.dimension] = O`${c}`.as(e.dimension), d.push(c);
6941
+ u[e.dimension] = D`${c}`.as(e.dimension), d.push(c);
6795
6942
  }
6796
6943
  let f = [];
6797
6944
  for (let e of s) {
6798
6945
  let t = o.dimensions?.[e];
6799
6946
  if (!t) return null;
6800
6947
  let r = W(t.sql, n), i = `__pk__${e}`;
6801
- u[i] = O`${r}`.as(i), d.push(r), f.push(i);
6948
+ u[i] = D`${r}`.as(i), d.push(r), f.push(i);
6802
6949
  }
6803
6950
  let p = i.regularMeasures ?? [], m = new Set(p), h = t.measures.filter((e) => !m.has(e));
6804
6951
  if (p.length > 0) {
@@ -6807,7 +6954,7 @@ var Yt = class {
6807
6954
  let n = e.get(t);
6808
6955
  if (!n) return null;
6809
6956
  let r = `__reg__${t.replace(".", "__")}`;
6810
- u[r] = O`${n()}`.as(r);
6957
+ u[r] = D`${n()}`.as(r);
6811
6958
  }
6812
6959
  }
6813
6960
  let g = e.primaryCube.sql(n), _ = [];
@@ -6822,29 +6969,29 @@ var Yt = class {
6822
6969
  let e = t.cube.sql(n);
6823
6970
  v = this.applyJoinByType(v, t.joinType ?? "left", e.from, t.joinCondition), e.where && _.push(e.where);
6824
6971
  }
6825
- _.push(...r.queryBuilder.buildWhereConditions(a, t, n)), _.length > 0 && (v = v.where(_.length === 1 ? _[0] : F(..._))), d.length > 0 && (v = v.groupBy(...d));
6972
+ _.push(...r.queryBuilder.buildWhereConditions(a, t, n)), _.length > 0 && (v = v.where(_.length === 1 ? _[0] : P(..._))), d.length > 0 && (v = v.groupBy(...d));
6826
6973
  let y = n.db.$with(c).as(v), b = o.sql(n), x = {}, S = [];
6827
6974
  for (let e of s) {
6828
6975
  let t = o.dimensions?.[e];
6829
6976
  if (!t) return null;
6830
6977
  let r = W(t.sql, n);
6831
- x[e] = O`${r}`.as(e), S.push(r);
6978
+ x[e] = D`${r}`.as(e), S.push(r);
6832
6979
  }
6833
6980
  let C = /* @__PURE__ */ new Set();
6834
6981
  for (let e of h) {
6835
6982
  let [, t] = e.split(".");
6836
6983
  o.measures?.[t]?.type === "avg" && C.add(t);
6837
6984
  }
6838
- let w = h.filter((e) => {
6985
+ let ee = h.filter((e) => {
6839
6986
  let [, t] = e.split(".");
6840
6987
  return !C.has(t);
6841
6988
  });
6842
- if (w.length > 0) {
6843
- let e = r.queryBuilder.buildResolvedMeasures(w, new Map([[o.name, o]]), n);
6844
- for (let t of w) {
6989
+ if (ee.length > 0) {
6990
+ let e = r.queryBuilder.buildResolvedMeasures(ee, new Map([[o.name, o]]), n);
6991
+ for (let t of ee) {
6845
6992
  let [, n] = t.split("."), r = e.get(t);
6846
6993
  if (!r || typeof r != "function") return null;
6847
- x[n] = O`${r()}`.as(n);
6994
+ x[n] = D`${r()}`.as(n);
6848
6995
  }
6849
6996
  }
6850
6997
  for (let e of h) {
@@ -6853,27 +7000,27 @@ var Yt = class {
6853
7000
  let r = o.measures?.[t];
6854
7001
  if (!r?.sql) return null;
6855
7002
  let i = W(r.sql, n), a = `__avg_sum__${t}`, s = `__avg_count__${t}`;
6856
- x[a] = O`sum(${i})`.as(a), x[s] = O`count(${i})`.as(s);
7003
+ x[a] = D`sum(${i})`.as(a), x[s] = D`count(${i})`.as(s);
6857
7004
  }
6858
- let T = n.db.select(x).from(b.from), E = [];
6859
- b.where && E.push(b.where), E.push(...r.queryBuilder.buildWhereConditions(o, t, n)), E.length > 0 && (T = T.where(E.length === 1 ? E[0] : F(...E))), S.length > 0 && (T = T.groupBy(...S));
6860
- let D = n.db.$with(l).as(T), k = {};
6861
- for (let e of t.dimensions ?? []) k[e] = O`${O.identifier(c)}.${O.identifier(e)}`.as(e);
6862
- for (let e of t.timeDimensions ?? []) k[e.dimension] = O`${O.identifier(c)}.${O.identifier(e.dimension)}`.as(e.dimension);
7005
+ let w = n.db.select(x).from(b.from), T = [];
7006
+ b.where && T.push(b.where), T.push(...r.queryBuilder.buildWhereConditions(o, t, n)), T.length > 0 && (w = w.where(T.length === 1 ? T[0] : P(...T))), S.length > 0 && (w = w.groupBy(...S));
7007
+ let E = n.db.$with(l).as(w), O = {};
7008
+ for (let e of t.dimensions ?? []) O[e] = D`${D.identifier(c)}.${D.identifier(e)}`.as(e);
7009
+ for (let e of t.timeDimensions ?? []) O[e.dimension] = D`${D.identifier(c)}.${D.identifier(e.dimension)}`.as(e.dimension);
6863
7010
  for (let e of h) {
6864
7011
  let [, t] = e.split("."), n = o.measures?.[t];
6865
- k[e] = this.buildKeysOuterAggregation(n?.type ?? "sum", l, t, e);
7012
+ O[e] = this.buildKeysOuterAggregation(n?.type ?? "sum", l, t, e);
6866
7013
  }
6867
7014
  for (let e of p) {
6868
7015
  let [t, n] = e.split("."), r = a.get(t)?.measures?.[n], i = `__reg__${e.replace(".", "__")}`;
6869
- k[e] = this.buildKeysOuterAggregation(r?.type ?? "sum", c, i, e);
7016
+ O[e] = this.buildKeysOuterAggregation(r?.type ?? "sum", c, i, e);
6870
7017
  }
6871
- let A = n.db.with(y, D).select(k).from(O`${O.identifier(c)}`), j = f.map((e, t) => N(O`${O.identifier(c)}.${O.identifier(e)}`, O`${O.identifier(l)}.${O.identifier(s[t])}`)), M = j.length === 1 ? j[0] : F(...j);
6872
- A = A.leftJoin(O`${O.identifier(l)}`, M);
6873
- let P = [...(t.dimensions ?? []).map((e) => O`${O.identifier(c)}.${O.identifier(e)}`), ...(t.timeDimensions ?? []).map((e) => O`${O.identifier(c)}.${O.identifier(e.dimension)}`)];
6874
- P.length > 0 && (A = A.groupBy(...P));
6875
- let I = r.queryBuilder.buildOrderBy(t, Object.keys(k));
6876
- return I.length > 0 && (A = A.orderBy(...I)), A = r.queryBuilder.applyLimitAndOffset(A, t), A;
7018
+ let k = n.db.with(y, E).select(O).from(D`${D.identifier(c)}`), A = f.map((e, t) => M(D`${D.identifier(c)}.${D.identifier(e)}`, D`${D.identifier(l)}.${D.identifier(s[t])}`)), j = A.length === 1 ? A[0] : P(...A);
7019
+ k = k.leftJoin(D`${D.identifier(l)}`, j);
7020
+ let N = [...(t.dimensions ?? []).map((e) => D`${D.identifier(c)}.${D.identifier(e)}`), ...(t.timeDimensions ?? []).map((e) => D`${D.identifier(c)}.${D.identifier(e.dimension)}`)];
7021
+ N.length > 0 && (k = k.groupBy(...N));
7022
+ let F = r.queryBuilder.buildOrderBy(t, Object.keys(O));
7023
+ return F.length > 0 && (k = k.orderBy(...F)), k = r.queryBuilder.applyLimitAndOffset(k, t), k;
6877
7024
  }
6878
7025
  tryBuildMultiFactMergeQuery(e, t, n, r) {
6879
7026
  let i = e.multiFactMerge;
@@ -6884,37 +7031,37 @@ var Yt = class {
6884
7031
  });
6885
7032
  if (s) return this.buildMultiFactUnionKeysFallbackQuery(t, n, r, i, l, o);
6886
7033
  let u = i.groups[0].alias, d = i.groups.map((e) => e.alias), f = {};
6887
- if (o.length > 0) for (let e of o) f[e] = O`${this.coalesceQualifiedColumn(d, e)}`.as(e);
6888
- for (let e of i.groups) for (let t of e.measures) f[t] = O`coalesce(${O`${O.identifier(e.alias)}.${O.identifier(t)}`}, 0)`.as(t);
6889
- let p = n.db.with(...l).select(f).from(O`${O.identifier(u)}`), m = /* @__PURE__ */ new Map();
6890
- for (let e of o) m.set(e, O`${O.identifier(u)}.${O.identifier(e)}`);
7034
+ if (o.length > 0) for (let e of o) f[e] = D`${this.coalesceQualifiedColumn(d, e)}`.as(e);
7035
+ for (let e of i.groups) for (let t of e.measures) f[t] = D`coalesce(${D`${D.identifier(e.alias)}.${D.identifier(t)}`}, 0)`.as(t);
7036
+ let p = n.db.with(...l).select(f).from(D`${D.identifier(u)}`), m = /* @__PURE__ */ new Map();
7037
+ for (let e of o) m.set(e, D`${D.identifier(u)}.${D.identifier(e)}`);
6891
7038
  for (let e = 1; e < i.groups.length; e++) {
6892
7039
  let t = i.groups[e].alias, n;
6893
- if (o.length === 0) n = O`1 = 1`;
7040
+ if (o.length === 0) n = D`1 = 1`;
6894
7041
  else {
6895
- let e = o.map((e) => N(m.get(e), O`${O.identifier(t)}.${O.identifier(e)}`));
6896
- n = e.length === 1 ? e[0] : F(...e);
7042
+ let e = o.map((e) => M(m.get(e), D`${D.identifier(t)}.${D.identifier(e)}`));
7043
+ n = e.length === 1 ? e[0] : P(...e);
6897
7044
  }
6898
- if (p = this.applyJoinByType(p, c, O`${O.identifier(t)}`, n), o.length > 0 && c === "full") for (let e of o) m.set(e, O`coalesce(${m.get(e)}, ${O`${O.identifier(t)}.${O.identifier(e)}`})`);
7045
+ if (p = this.applyJoinByType(p, c, D`${D.identifier(t)}`, n), o.length > 0 && c === "full") for (let e of o) m.set(e, D`coalesce(${m.get(e)}, ${D`${D.identifier(t)}.${D.identifier(e)}`})`);
6899
7046
  }
6900
7047
  let h = r.queryBuilder.buildOrderBy(t, Object.keys(f));
6901
7048
  return h.length > 0 && (p = p.orderBy(...h)), r.queryBuilder.applyLimitAndOffset(p, t);
6902
7049
  }
6903
7050
  buildMultiFactUnionKeysFallbackQuery(e, t, n, r, i, a) {
6904
- let o = "mf_all_keys", s = r.groups.map((e) => O`select ${this.buildSharedKeySelection(e.alias, a)} from ${O.identifier(e.alias)}`), c = O`${O.join(s, O` union `)}`, l = t.db.$with(o).as(c), u = {};
6905
- for (let e of a) u[e] = O`${O.identifier(o)}.${O.identifier(e)}`.as(e);
6906
- for (let e of r.groups) for (let t of e.measures) u[t] = O`coalesce(${O`${O.identifier(e.alias)}.${O.identifier(t)}`}, 0)`.as(t);
6907
- let d = t.db.with(...i, l).select(u).from(O`${O.identifier(o)}`);
7051
+ let o = "mf_all_keys", s = r.groups.map((e) => D`select ${this.buildSharedKeySelection(e.alias, a)} from ${D.identifier(e.alias)}`), c = D`${D.join(s, D` union `)}`, l = t.db.$with(o).as(c), u = {};
7052
+ for (let e of a) u[e] = D`${D.identifier(o)}.${D.identifier(e)}`.as(e);
7053
+ for (let e of r.groups) for (let t of e.measures) u[t] = D`coalesce(${D`${D.identifier(e.alias)}.${D.identifier(t)}`}, 0)`.as(t);
7054
+ let d = t.db.with(...i, l).select(u).from(D`${D.identifier(o)}`);
6908
7055
  for (let e of r.groups) {
6909
- let t = a.map((t) => N(O`${O.identifier(o)}.${O.identifier(t)}`, O`${O.identifier(e.alias)}.${O.identifier(t)}`)), n = t.length === 1 ? t[0] : F(...t);
6910
- d = d.leftJoin(O`${O.identifier(e.alias)}`, n);
7056
+ let t = a.map((t) => M(D`${D.identifier(o)}.${D.identifier(t)}`, D`${D.identifier(e.alias)}.${D.identifier(t)}`)), n = t.length === 1 ? t[0] : P(...t);
7057
+ d = d.leftJoin(D`${D.identifier(e.alias)}`, n);
6911
7058
  }
6912
7059
  let f = n.queryBuilder.buildOrderBy(e, Object.keys(u));
6913
7060
  return f.length > 0 && (d = d.orderBy(...f)), n.queryBuilder.applyLimitAndOffset(d, e);
6914
7061
  }
6915
7062
  buildSharedKeySelection(e, t) {
6916
- let n = t.map((t) => O`${O.identifier(e)}.${O.identifier(t)} as ${O.identifier(t)}`);
6917
- return O.join(n, O`, `);
7063
+ let n = t.map((t) => D`${D.identifier(e)}.${D.identifier(t)} as ${D.identifier(t)}`);
7064
+ return D.join(n, D`, `);
6918
7065
  }
6919
7066
  selectRuntimeMergeStrategy(e, t) {
6920
7067
  return !t || e === "innerJoin" ? "inner" : e === "leftJoin" ? "left" : this.supportsFullOuterJoin() ? "full" : "left";
@@ -6924,9 +7071,9 @@ var Yt = class {
6924
7071
  return e === "postgres" || e === "duckdb";
6925
7072
  }
6926
7073
  coalesceQualifiedColumn(e, t) {
6927
- if (e.length === 1) return O`${O.identifier(e[0])}.${O.identifier(t)}`;
6928
- let n = e.map((e) => O`${O.identifier(e)}.${O.identifier(t)}`), r = n[0];
6929
- for (let e = 1; e < n.length; e++) r = O`coalesce(${r}, ${n[e]})`;
7074
+ if (e.length === 1) return D`${D.identifier(e[0])}.${D.identifier(t)}`;
7075
+ let n = e.map((e) => D`${D.identifier(e)}.${D.identifier(t)}`), r = n[0];
7076
+ for (let e = 1; e < n.length; e++) r = D`coalesce(${r}, ${n[e]})`;
6930
7077
  return r;
6931
7078
  }
6932
7079
  canExecuteKeysDeduplication(e, t, n) {
@@ -6972,10 +7119,10 @@ var Yt = class {
6972
7119
  }
6973
7120
  buildKeysOuterAggregation(e, t, n, r) {
6974
7121
  switch (e) {
6975
- case "min": return O`min(${O`${O.identifier(t)}.${O.identifier(n)}`})`.as(r);
6976
- case "max": return O`max(${O`${O.identifier(t)}.${O.identifier(n)}`})`.as(r);
6977
- case "avg": return O`sum(${O`${O.identifier(t)}.${O.identifier(`__avg_sum__${n}`)}`}) / nullif(sum(${O`${O.identifier(t)}.${O.identifier(`__avg_count__${n}`)}`}), 0)`.as(r);
6978
- default: return O`coalesce(sum(${O`${O.identifier(t)}.${O.identifier(n)}`}), 0)`.as(r);
7122
+ case "min": return D`min(${D`${D.identifier(t)}.${D.identifier(n)}`})`.as(r);
7123
+ case "max": return D`max(${D`${D.identifier(t)}.${D.identifier(n)}`})`.as(r);
7124
+ case "avg": return D`sum(${D`${D.identifier(t)}.${D.identifier(`__avg_sum__${n}`)}`}) / nullif(sum(${D`${D.identifier(t)}.${D.identifier(`__avg_count__${n}`)}`}), 0)`.as(r);
7125
+ default: return D`coalesce(sum(${D`${D.identifier(t)}.${D.identifier(n)}`}), 0)`.as(r);
6979
7126
  }
6980
7127
  }
6981
7128
  applyJoinByType(e, t, n, r) {
@@ -6995,7 +7142,7 @@ function $(e, t) {
6995
7142
  console.log(`\n[DC_DEBUG] ${e}`), console.log(n), r.length > 0 && console.log("params:", r), console.log();
6996
7143
  } catch {}
6997
7144
  }
6998
- var Xt = class {
7145
+ var $t = class {
6999
7146
  queryBuilder;
7000
7147
  drizzlePlanBuilder;
7001
7148
  databaseAdapter;
@@ -7011,7 +7158,7 @@ var Xt = class {
7011
7158
  if (this.dbExecutor = e, this.databaseAdapter = e.databaseAdapter, !this.databaseAdapter) throw Error("DatabaseExecutor must have a databaseAdapter property");
7012
7159
  this.queryBuilder = new vt(this.databaseAdapter);
7013
7160
  let r = new bt(), i = new xt(this.queryBuilder);
7014
- this.drizzlePlanBuilder = new Yt(this.queryBuilder, i, this.databaseAdapter), this.comparisonQueryBuilder = new At(this.databaseAdapter), this.funnelQueryBuilder = new jt(this.databaseAdapter), this.flowQueryBuilder = new Mt(this.databaseAdapter), this.retentionQueryBuilder = new Lt(this.databaseAdapter), this.logicalPlanBuilder = new Rt(r), this.planOptimiser = new zt(), this.cacheConfig = t, this.rlsSetup = n;
7161
+ this.drizzlePlanBuilder = new Qt(this.queryBuilder, i, this.databaseAdapter), this.comparisonQueryBuilder = new Nt(this.databaseAdapter), this.funnelQueryBuilder = new Pt(this.databaseAdapter), this.flowQueryBuilder = new Ft(this.databaseAdapter), this.retentionQueryBuilder = new Bt(this.databaseAdapter), this.logicalPlanBuilder = new Vt(r), this.planOptimiser = new Ht(), this.cacheConfig = t, this.rlsSetup = n;
7015
7162
  }
7016
7163
  async withRLSContext(e, t) {
7017
7164
  if (!this.rlsSetup) return t();
@@ -7215,7 +7362,7 @@ var Xt = class {
7215
7362
  $("query", s);
7216
7363
  let c = this.queryBuilder.collectNumericFields(e, t), l = await this.dbExecutor.execute(s, c);
7217
7364
  return {
7218
- data: kt(Array.isArray(l) ? l.map((e) => {
7365
+ data: At(Array.isArray(l) ? l.map((e) => {
7219
7366
  let n = { ...e };
7220
7367
  if (t.timeDimensions) {
7221
7368
  for (let e of t.timeDimensions) if (e.dimension in n) {
@@ -7342,7 +7489,7 @@ var Xt = class {
7342
7489
  }
7343
7490
  validateQueryForMode(e, t, n) {
7344
7491
  let r = () => {
7345
- let e = $t(t, n);
7492
+ let e = nn(t, n);
7346
7493
  if (!e.isValid) throw Error(`Query validation failed: ${e.errors.join(", ")}`);
7347
7494
  };
7348
7495
  ({
@@ -7379,7 +7526,7 @@ var Xt = class {
7379
7526
  let c = this.drizzlePlanBuilder.build(s, t, a);
7380
7527
  $("query", c);
7381
7528
  let l = this.queryBuilder.collectNumericFields(e, t), u = await this.dbExecutor.execute(c, l), d = {
7382
- data: kt(Array.isArray(u) ? u.map((e) => {
7529
+ data: At(Array.isArray(u) ? u.map((e) => {
7383
7530
  let n = { ...e };
7384
7531
  if (t.timeDimensions) {
7385
7532
  for (let e of t.timeDimensions) if (e.dimension in n) {
@@ -7498,7 +7645,7 @@ var Xt = class {
7498
7645
  }
7499
7646
  }
7500
7647
  }
7501
- }, Zt = class t {
7648
+ }, en = class t {
7502
7649
  cubes = /* @__PURE__ */ new Map();
7503
7650
  metadataCache;
7504
7651
  cacheConfig;
@@ -7526,7 +7673,7 @@ var Xt = class {
7526
7673
  return Qe(this.db, this.schema, this.engineType);
7527
7674
  }
7528
7675
  createQueryExecutor(e = !1) {
7529
- return new Xt(this.createDbExecutor(), e ? this.cacheConfig : void 0, this.rlsSetup);
7676
+ return new $t(this.createDbExecutor(), e ? this.cacheConfig : void 0, this.rlsSetup);
7530
7677
  }
7531
7678
  formatSqlResult(t) {
7532
7679
  let n = this.getEngineType() ?? "postgres";
@@ -7720,18 +7867,18 @@ var Xt = class {
7720
7867
  return Array.from(this.cubes.keys());
7721
7868
  }
7722
7869
  validateQuery(e) {
7723
- return $t(this.cubes, e);
7870
+ return nn(this.cubes, e);
7724
7871
  }
7725
7872
  analyzeQuery(e, t) {
7726
7873
  return this.createQueryExecutor(!0).analyzeQuery(this.cubes, e, t);
7727
7874
  }
7728
7875
  };
7729
- function Qt(e) {
7876
+ function tn(e) {
7730
7877
  let t = [];
7731
7878
  return e.timeDimensions?.some((e) => e.compareDateRange && e.compareDateRange.length >= 2) && t.push("comparison"), e.funnel !== void 0 && e.funnel.steps?.length >= 2 && t.push("funnel"), e.flow !== void 0 && e.flow.startingStep !== void 0 && e.flow.eventDimension !== void 0 && t.push("flow"), e.retention !== void 0 && e.retention.timeDimension != null && e.retention.bindingKey != null && t.push("retention"), t.length === 0 ? [] : t;
7732
7879
  }
7733
- function $t(e, t) {
7734
- let n = [], r = Qt(t);
7880
+ function nn(e, t) {
7881
+ let n = [], r = tn(t);
7735
7882
  if (r.length > 1) return n.push(`Query contains multiple query modes: ${r.join(", ")}`), {
7736
7883
  isValid: !1,
7737
7884
  errors: n
@@ -7752,7 +7899,7 @@ function $t(e, t) {
7752
7899
  }
7753
7900
  },
7754
7901
  retention: () => {
7755
- let r = t.retention, i = tn(r.timeDimension);
7902
+ let r = t.retention, i = an(r.timeDimension);
7756
7903
  i && !e.has(i) && n.push(`Retention cube not found: ${i}`);
7757
7904
  let a = r.bindingKey;
7758
7905
  if (typeof a == "string") {
@@ -7818,7 +7965,7 @@ function $t(e, t) {
7818
7965
  }
7819
7966
  o.dimensions[i] || n.push(`TimeDimension '${i}' not found on cube '${t}' (must be a dimension with time type)`);
7820
7967
  }
7821
- if (t.filters) for (let r of t.filters) en(r, e, n, a);
7968
+ if (t.filters) for (let r of t.filters) rn(r, e, n, a);
7822
7969
  if (a.size === 0 && n.push("Query must reference at least one cube through measures, dimensions, or filters"), t.ungrouped) {
7823
7970
  t.dimensions && t.dimensions.length > 0 || t.timeDimensions && t.timeDimensions.length > 0 || n.push("Ungrouped queries require at least one dimension or time dimension"), t.funnel && n.push("Ungrouped queries are incompatible with funnel analysis"), t.flow && n.push("Ungrouped queries are incompatible with flow analysis"), t.retention && n.push("Ungrouped queries are incompatible with retention analysis"), t.timeDimensions?.some((e) => e.compareDateRange && e.compareDateRange.length > 0) && n.push("Ungrouped queries are incompatible with compareDateRange"), t.timeDimensions?.some((e) => e.fillMissingDates === !0) && n.push("Ungrouped queries are incompatible with fillMissingDates");
7824
7971
  let r = new Set([
@@ -7873,10 +8020,10 @@ function $t(e, t) {
7873
8020
  errors: n
7874
8021
  };
7875
8022
  }
7876
- function en(e, t, n, r) {
8023
+ function rn(e, t, n, r) {
7877
8024
  if ("and" in e || "or" in e) {
7878
8025
  let i = e.and || e.or || [];
7879
- for (let e of i) en(e, t, n, r);
8026
+ for (let e of i) rn(e, t, n, r);
7880
8027
  return;
7881
8028
  }
7882
8029
  if (!("member" in e)) {
@@ -7899,7 +8046,7 @@ function en(e, t, n, r) {
7899
8046
  n.push(`Filter field '${a}' not found on cube '${i}' (must be a dimension or measure)${e}`);
7900
8047
  }
7901
8048
  }
7902
- function tn(e) {
8049
+ function an(e) {
7903
8050
  if (typeof e == "string") {
7904
8051
  let [t] = e.split(".");
7905
8052
  return t || null;
@@ -7907,4 +8054,4 @@ function tn(e) {
7907
8054
  return e.cube;
7908
8055
  }
7909
8056
  //#endregion
7910
- export { Zt as t };
8057
+ export { en as t };