@objectstack/service-analytics 9.4.0 → 9.5.1
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.
- package/dist/index.cjs +20 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +20 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -1375,6 +1375,14 @@ function evaluateAnalyticsQueryOverRows(query, cube, rows) {
|
|
|
1375
1375
|
}
|
|
1376
1376
|
|
|
1377
1377
|
// src/analytics-service.ts
|
|
1378
|
+
function isMissingSourceError(err) {
|
|
1379
|
+
const msg = String(err?.message ?? err ?? "").toLowerCase();
|
|
1380
|
+
return msg.includes("no such table") || // sqlite / libsql
|
|
1381
|
+
msg.includes("relation") && msg.includes("does not exist") || // postgres
|
|
1382
|
+
msg.includes("doesn't exist") || // mysql ("table ... doesn't exist")
|
|
1383
|
+
msg.includes("not registered") || // framework: object not in registry
|
|
1384
|
+
msg.includes("unknown object") || msg.includes("is not a registered object");
|
|
1385
|
+
}
|
|
1378
1386
|
var DEFAULT_CAPABILITIES = {
|
|
1379
1387
|
nativeSql: false,
|
|
1380
1388
|
objectqlAggregate: false,
|
|
@@ -1555,7 +1563,18 @@ var AnalyticsService = class {
|
|
|
1555
1563
|
return previewResult;
|
|
1556
1564
|
}
|
|
1557
1565
|
}
|
|
1558
|
-
|
|
1566
|
+
let result;
|
|
1567
|
+
try {
|
|
1568
|
+
result = await new DatasetExecutor(this).execute(compiled, selection, context);
|
|
1569
|
+
} catch (err) {
|
|
1570
|
+
if (isMissingSourceError(err)) {
|
|
1571
|
+
this.logger.warn(
|
|
1572
|
+
`[Analytics] dataset "${dataset.name}" backing object "${dataset.object}" is unavailable (${String(err?.message ?? err)}); returning an empty result instead of failing the widget`
|
|
1573
|
+
);
|
|
1574
|
+
return { rows: [], fields: [], totals: [] };
|
|
1575
|
+
}
|
|
1576
|
+
throw err;
|
|
1577
|
+
}
|
|
1559
1578
|
if (this.labelResolver && selection.dimensions?.length) {
|
|
1560
1579
|
const dims = selection.dimensions.map((name) => dataset.dimensions?.find((d) => d.name === name)).filter((d) => !!d?.field).map((d) => ({ name: d.name, field: d.field, type: d.type, dateGranularity: d.dateGranularity }));
|
|
1561
1580
|
if (dims.length) {
|