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:
parent
158b877378
commit
2b36993ad0
@ -1,9 +1,15 @@
|
|||||||
import type {
|
import type {
|
||||||
IStatTrafficUsageKey,
|
IStatTrafficUsageKey,
|
||||||
IStatTrafficUsage,
|
IStatTrafficUsage,
|
||||||
|
IStatMonthlyTrafficUsage,
|
||||||
} from './traffic-data-usage-store-type';
|
} from './traffic-data-usage-store-type';
|
||||||
import type { ITrafficDataUsageStore } from '../../types';
|
import type { ITrafficDataUsageStore } from '../../types';
|
||||||
import { isSameMonth, parse } from 'date-fns';
|
import {
|
||||||
|
differenceInCalendarMonths,
|
||||||
|
format,
|
||||||
|
isSameMonth,
|
||||||
|
parse,
|
||||||
|
} from 'date-fns';
|
||||||
|
|
||||||
export class FakeTrafficDataUsageStore implements ITrafficDataUsageStore {
|
export class FakeTrafficDataUsageStore implements ITrafficDataUsageStore {
|
||||||
private trafficData: IStatTrafficUsage[] = [];
|
private trafficData: IStatTrafficUsage[] = [];
|
||||||
@ -50,4 +56,37 @@ export class FakeTrafficDataUsageStore implements ITrafficDataUsageStore {
|
|||||||
isSameMonth(data.day, periodDate),
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user