Fix event feed regression
This commit is contained in:
@@ -1252,6 +1252,17 @@ export class EventsService {
|
|||||||
const { timeRange, startDate, endDate, metricIds } = params;
|
const { timeRange, startDate, endDate, metricIds } = params;
|
||||||
const metrics = metricIds || Object.values(METRIC_IDS);
|
const metrics = metricIds || Object.values(METRIC_IDS);
|
||||||
|
|
||||||
|
// Get period dates using TimeManager to respect 1 AM day start
|
||||||
|
let periodStart, periodEnd;
|
||||||
|
if (startDate && endDate) {
|
||||||
|
periodStart = this.timeManager.getDayStart(this.timeManager.toDateTime(startDate));
|
||||||
|
periodEnd = this.timeManager.getDayEnd(this.timeManager.toDateTime(endDate));
|
||||||
|
} else if (timeRange) {
|
||||||
|
const range = this.timeManager.getDateRange(timeRange);
|
||||||
|
periodStart = range.start;
|
||||||
|
periodEnd = range.end;
|
||||||
|
}
|
||||||
|
|
||||||
// Try to get from cache first
|
// Try to get from cache first
|
||||||
const cacheKey = this.redisService._getCacheKey('events', params);
|
const cacheKey = this.redisService._getCacheKey('events', params);
|
||||||
let cachedData = null;
|
let cachedData = null;
|
||||||
@@ -1267,8 +1278,8 @@ export class EventsService {
|
|||||||
// Fetch events for all specified metrics
|
// Fetch events for all specified metrics
|
||||||
const eventPromises = metrics.map(metricId =>
|
const eventPromises = metrics.map(metricId =>
|
||||||
this.getEvents({
|
this.getEvents({
|
||||||
startDate,
|
startDate: periodStart.toISO(),
|
||||||
endDate,
|
endDate: periodEnd.toISO(),
|
||||||
timeRange,
|
timeRange,
|
||||||
metricId,
|
metricId,
|
||||||
sort: '-datetime'
|
sort: '-datetime'
|
||||||
@@ -1277,13 +1288,27 @@ export class EventsService {
|
|||||||
|
|
||||||
const results = await Promise.all(eventPromises);
|
const results = await Promise.all(eventPromises);
|
||||||
|
|
||||||
// Transform results into a keyed object
|
// Transform and flatten the events into a single array
|
||||||
const batchResults = {};
|
const allEvents = [];
|
||||||
metrics.forEach((metric, index) => {
|
results.forEach((result, index) => {
|
||||||
batchResults[metric] = results[index];
|
const metricId = metrics[index];
|
||||||
|
const events = result.data || [];
|
||||||
|
allEvents.push(...events);
|
||||||
});
|
});
|
||||||
|
|
||||||
return batchResults;
|
// Sort all events by datetime in descending order
|
||||||
|
allEvents.sort((a, b) => {
|
||||||
|
const dateA = new Date(a.attributes?.datetime || 0);
|
||||||
|
const dateB = new Date(b.attributes?.datetime || 0);
|
||||||
|
return dateB - dateA;
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
data: allEvents,
|
||||||
|
meta: {
|
||||||
|
total_count: allEvents.length
|
||||||
|
}
|
||||||
|
};
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('[EventsService] Error in batch metrics:', error);
|
console.error('[EventsService] Error in batch metrics:', error);
|
||||||
throw error;
|
throw error;
|
||||||
|
|||||||
Reference in New Issue
Block a user