@objectstack/service-analytics 9.3.0 → 9.5.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.
- 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.cjs
CHANGED
|
@@ -1414,6 +1414,14 @@ function evaluateAnalyticsQueryOverRows(query, cube, rows) {
|
|
|
1414
1414
|
}
|
|
1415
1415
|
|
|
1416
1416
|
// src/analytics-service.ts
|
|
1417
|
+
function isMissingSourceError(err) {
|
|
1418
|
+
const msg = String(err?.message ?? err ?? "").toLowerCase();
|
|
1419
|
+
return msg.includes("no such table") || // sqlite / libsql
|
|
1420
|
+
msg.includes("relation") && msg.includes("does not exist") || // postgres
|
|
1421
|
+
msg.includes("doesn't exist") || // mysql ("table ... doesn't exist")
|
|
1422
|
+
msg.includes("not registered") || // framework: object not in registry
|
|
1423
|
+
msg.includes("unknown object") || msg.includes("is not a registered object");
|
|
1424
|
+
}
|
|
1417
1425
|
var DEFAULT_CAPABILITIES = {
|
|
1418
1426
|
nativeSql: false,
|
|
1419
1427
|
objectqlAggregate: false,
|
|
@@ -1594,7 +1602,18 @@ var AnalyticsService = class {
|
|
|
1594
1602
|
return previewResult;
|
|
1595
1603
|
}
|
|
1596
1604
|
}
|
|
1597
|
-
|
|
1605
|
+
let result;
|
|
1606
|
+
try {
|
|
1607
|
+
result = await new DatasetExecutor(this).execute(compiled, selection, context);
|
|
1608
|
+
} catch (err) {
|
|
1609
|
+
if (isMissingSourceError(err)) {
|
|
1610
|
+
this.logger.warn(
|
|
1611
|
+
`[Analytics] dataset "${dataset.name}" backing object "${dataset.object}" is unavailable (${String(err?.message ?? err)}); returning an empty result instead of failing the widget`
|
|
1612
|
+
);
|
|
1613
|
+
return { rows: [], fields: [], totals: [] };
|
|
1614
|
+
}
|
|
1615
|
+
throw err;
|
|
1616
|
+
}
|
|
1598
1617
|
if (this.labelResolver && selection.dimensions?.length) {
|
|
1599
1618
|
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 }));
|
|
1600
1619
|
if (dims.length) {
|