1
0
mirror of https://github.com/Unleash/unleash.git synced 2025-02-04 00:18:01 +01:00

feat(1-3260): impl fake interface

This commit is contained in:
Thomas Heartman 2025-01-22 09:18:56 +01:00
parent 158b877378
commit 2b36993ad0
No known key found for this signature in database
GPG Key ID: BD1F880DAED1EE78

View File

@ -1,9 +1,15 @@
import type {
IStatTrafficUsageKey,
IStatTrafficUsage,
IStatMonthlyTrafficUsage,
} from './traffic-data-usage-store-type';
import type { ITrafficDataUsageStore } from '../../types';
import { isSameMonth, parse } from 'date-fns';
import {
differenceInCalendarMonths,
format,
isSameMonth,
parse,
} from 'date-fns';
export class FakeTrafficDataUsageStore implements ITrafficDataUsageStore {
private trafficData: IStatTrafficUsage[] = [];
@ -50,4 +56,37 @@ export class FakeTrafficDataUsageStore implements ITrafficDataUsageStore {
isSameMonth(data.day, periodDate),
);
}
async getTrafficDataForMonthRange(
monthsBack: number,
): Promise<IStatMonthlyTrafficUsage[]> {
const now = new Date();
const data: { [key: string]: IStatMonthlyTrafficUsage } =
this.trafficData
.filter(
(entry) =>
differenceInCalendarMonths(now, entry.day) <=
monthsBack,
)
.reduce((acc, entry) => {
const month = format(entry.day, 'yyyy-MM');
const key = `${month}-${entry.trafficGroup}-${entry.statusCodeSeries}`;
if (acc[key]) {
acc[key].count += entry.count;
} else {
acc[key] = {
month,
trafficGroup: entry.trafficGroup,
statusCodeSeries: entry.statusCodeSeries,
count: entry.count,
};
}
return acc;
}, {});
return Object.values(data);
}
}