@gscdump/cloudflare 0.35.9 → 0.35.11

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.
@@ -183,6 +183,7 @@ function buildTopNBreakdown(q, pruned, mode) {
183
183
  const w = partitionWhere(q, pruned, mode);
184
184
  if (!q.orderBy || !q.orderBy.metric || !q.orderBy.dir) throw new Error(`[archetype-sql] top-n-breakdown requires orderBy.{metric,dir}, got: ${JSON.stringify(q.orderBy)}`);
185
185
  const order = `${metricAlias(q.orderBy.metric)} ${q.orderBy.dir.toUpperCase()}`;
186
+ const compareOrder = `COALESCE(c.${metricAlias(q.orderBy.metric)}, 0) ${q.orderBy.dir.toUpperCase()}`;
186
187
  const limit = `LIMIT ${Math.max(0, Math.floor(q.limit))}`;
187
188
  const offset = q.offset && q.offset > 0 ? ` OFFSET ${Math.floor(q.offset)}` : "";
188
189
  const metricList = q.metrics.includes(q.orderBy.metric) ? q.metrics : [...q.metrics, q.orderBy.metric];
@@ -200,7 +201,7 @@ function buildTopNBreakdown(q, pruned, mode) {
200
201
  }).join(" UNION ALL ");
201
202
  const curCols = metricList.map((m) => coalesceMetric(m, "c", m)).join(", ");
202
203
  const prevCols = STD_METRICS.map((m) => coalesceMetric(m, "p", prevAlias(m))).join(", ");
203
- const sql = `WITH cur AS (${deviceSelects(w.clause, metricList)}), prev AS (${deviceSelects(wPrev.clause, STD_METRICS)}) SELECT COALESCE(c.device, p.device) AS device, ${curCols}, ${prevCols} FROM cur c FULL OUTER JOIN prev p ON c.device = p.device ORDER BY ${order} ${limit}${offset}`;
204
+ const sql = `WITH cur AS (${deviceSelects(w.clause, metricList)}), prev AS (${deviceSelects(wPrev.clause, STD_METRICS)}) SELECT COALESCE(c.device, p.device) AS device, ${curCols}, ${prevCols} FROM cur c FULL OUTER JOIN prev p ON c.device = p.device ORDER BY ${compareOrder} ${limit}${offset}`;
204
205
  return {
205
206
  table,
206
207
  params: [...DEVICE_SUFFIXES.flatMap(() => w.params), ...DEVICE_SUFFIXES.flatMap(() => wPrev.params)],
@@ -233,7 +234,7 @@ function buildTopNBreakdown(q, pruned, mode) {
233
234
  const variantOut = q.dimension === "queryCanonical" ? ", c.variantCount AS variantCount" : "";
234
235
  const mover = q.movers ? moverClause(q.movers) : null;
235
236
  const moverWhere = mover ? `WHERE ${mover.where} ` : "";
236
- const orderSql = mover ? `ORDER BY ${mover.order}` : `ORDER BY ${order}`;
237
+ const orderSql = mover ? `ORDER BY ${mover.order}` : `ORDER BY ${compareOrder}`;
237
238
  const sql = `WITH cur AS (SELECT ${col} AS k, ${curMetrics}${variantSel} FROM ${TABLE_PLACEHOLDER} WHERE ${w.clause}${facet.sql} GROUP BY ${col}), prev AS (SELECT ${col} AS k, ${prevMetrics} FROM ${TABLE_PLACEHOLDER} WHERE ${wPrev.clause}${facet.sql} GROUP BY ${col}) SELECT COALESCE(c.k, p.k) AS ${q.dimension}, ${curCols}, ${prevCols}${variantOut}${totalCol} FROM cur c FULL OUTER JOIN prev p ON c.k = p.k ${moverWhere}${orderSql} ${limit}${offset}`;
238
239
  return {
239
240
  table,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gscdump/cloudflare",
3
3
  "type": "module",
4
- "version": "0.35.9",
4
+ "version": "0.35.11",
5
5
  "description": "Cloudflare-Workers-flavored helpers for the gscdump analytics stack: AnalyticsEnv binding contract, R2 SigV4 presigner, size-hint HMAC, DuckDB Workers shims, engine factory.",
6
6
  "author": {
7
7
  "name": "Harlan Wilton",
@@ -46,10 +46,10 @@
46
46
  "dependencies": {
47
47
  "@uwdata/flechette": "^2.5.0",
48
48
  "aws4fetch": "^1.0.20",
49
- "@gscdump/engine": "0.35.9",
50
- "@gscdump/contracts": "0.35.9",
51
- "@gscdump/engine-sqlite": "0.35.9",
52
- "gscdump": "0.35.9"
49
+ "@gscdump/engine": "0.35.11",
50
+ "@gscdump/engine-sqlite": "0.35.11",
51
+ "@gscdump/contracts": "0.35.11",
52
+ "gscdump": "0.35.11"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@cloudflare/vitest-pool-workers": "^0.18.0",