@gscdump/engine 6.0.0 → 7.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -29,12 +29,9 @@ function withMinimumImpressions(state, options) {
29
29
  }
30
30
  function orderByClause(state, prefix = "", columnOverride) {
31
31
  const ties = dimensionOrder(state.dimensions, state.orderBy?.column, prefix);
32
- if (state.orderBy) {
33
- const safeCol = (columnOverride ?? state.orderBy.column).replace(/\W/g, "");
34
- const safeDir = state.orderBy.dir.toUpperCase() === "ASC" ? "ASC" : "DESC";
35
- return sql.raw(`ORDER BY ${prefix}${safeCol} ${safeDir}${ties}`);
36
- }
37
- return sql.raw(`ORDER BY ${prefix}clicks DESC${ties}`);
32
+ const column = typeof columnOverride === "object" ? columnOverride : sql.raw(`${prefix}${(columnOverride ?? state.orderBy?.column ?? "clicks").replace(/\W/g, "")}`);
33
+ const safeDir = state.orderBy?.dir.toUpperCase() === "ASC" ? "ASC" : "DESC";
34
+ return sql`ORDER BY ${column} ${sql.raw(`${safeDir}${ties}`)}`;
38
35
  }
39
36
  function dimensionOrder(dimensions, primary, prefix = "") {
40
37
  return [...new Set(dimensions)].filter((d) => d !== primary).map((d) => `, ${prefix}"${d.replace(/\W/g, "")}" ASC`).join("");
@@ -227,7 +224,9 @@ function resolveToSQL(state, options) {
227
224
  let body = wherePredicates.length > 0 ? sql`SELECT ${joinComma(selectExprs)} FROM ${table} WHERE ${joinAnd(wherePredicates)}` : sql`SELECT ${joinComma(selectExprs)} FROM ${table}`;
228
225
  if (groupByExprs.length > 0) body = sql`${body} GROUP BY ${joinComma(groupByExprs)}`;
229
226
  if (having.length > 0) body = sql`${body} HAVING ${joinAnd(having)}`;
230
- const mainQuery = sql`${body} ${orderByClause(state)} ${limitOffsetClause(state)}`;
227
+ const sortColumn = state.orderBy?.column ?? "clicks";
228
+ const sortAggregate = adapter.isMetricDimension(sortColumn) && !metrics.includes(sortColumn) ? adapter.metricSql(sortColumn, tableKey) : void 0;
229
+ const mainQuery = sql`${body} ${orderByClause(state, "", sortAggregate)} ${limitOffsetClause(state)}`;
231
230
  let countQuery;
232
231
  if (groupByExprs.length > 0) {
233
232
  let inner = wherePredicates.length > 0 ? sql`SELECT ${joinComma(groupByExprs)} FROM ${table} WHERE ${joinAnd(wherePredicates)} GROUP BY ${joinComma(groupByExprs)}` : sql`SELECT ${joinComma(groupByExprs)} FROM ${table} GROUP BY ${joinComma(groupByExprs)}`;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gscdump/engine",
3
3
  "type": "module",
4
- "version": "6.0.0",
4
+ "version": "7.1.0",
5
5
  "description": "Append-only Parquet/DuckDB storage engine + planner + adapters for the gscdump pipeline. Node + edge runtimes; opt-in heavy peers.",
6
6
  "author": {
7
7
  "name": "Harlan Wilton",
@@ -189,10 +189,10 @@
189
189
  }
190
190
  },
191
191
  "dependencies": {
192
- "@gscdump/contracts": "^6.0.0",
193
- "@gscdump/lakehouse": "^6.0.0",
192
+ "@gscdump/contracts": "^7.1.0",
193
+ "@gscdump/lakehouse": "^7.1.0",
194
194
  "drizzle-orm": "1.0.0-rc.4",
195
- "gscdump": "^6.0.0",
195
+ "gscdump": "^7.1.0",
196
196
  "pathe": "^2.0.3",
197
197
  "proper-lockfile": "^4.1.2"
198
198
  },