From b92c4ae650b53db5c0bb2a9cf9afb01caeb8d822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Thu, 10 Nov 2022 15:22:46 +0100 Subject: [PATCH] fix(analytics): generate mrr stats for last 30 days including Today --- packages/analytics/bin/report.ts | 4 +-- packages/analytics/src/Domain/Time/Period.ts | 1 + .../Domain/Time/PeriodKeyGenerator.spec.ts | 35 +++++++++++++++++++ .../src/Domain/Time/PeriodKeyGenerator.ts | 6 ++++ 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/packages/analytics/bin/report.ts b/packages/analytics/bin/report.ts index fe95aae71..6bcd9053e 100644 --- a/packages/analytics/bin/report.ts +++ b/packages/analytics/bin/report.ts @@ -119,8 +119,8 @@ const requestReport = async ( for (const statisticName of thirtyDaysStatisticsNames) { statisticsOverTime.push({ name: statisticName, - period: Period.Last30Days, - counts: await statisticsStore.calculateTotalCountOverPeriod(statisticName, Period.Last30Days), + period: Period.Last30DaysIncludingToday, + counts: await statisticsStore.calculateTotalCountOverPeriod(statisticName, Period.Last30DaysIncludingToday), }) } diff --git a/packages/analytics/src/Domain/Time/Period.ts b/packages/analytics/src/Domain/Time/Period.ts index f93445939..67595ddec 100644 --- a/packages/analytics/src/Domain/Time/Period.ts +++ b/packages/analytics/src/Domain/Time/Period.ts @@ -26,4 +26,5 @@ export enum Period { OctoberThisYear, NovemberThisYear, DecemberThisYear, + Last30DaysIncludingToday, } diff --git a/packages/analytics/src/Domain/Time/PeriodKeyGenerator.spec.ts b/packages/analytics/src/Domain/Time/PeriodKeyGenerator.spec.ts index 1d5a6e92e..0ec8bb62c 100644 --- a/packages/analytics/src/Domain/Time/PeriodKeyGenerator.spec.ts +++ b/packages/analytics/src/Domain/Time/PeriodKeyGenerator.spec.ts @@ -62,6 +62,41 @@ describe('PeriodKeyGenerator', () => { ]) }) + it('should generate period keys for last 30 days including Today', () => { + expect(createGenerator().getDiscretePeriodKeys(Period.Last30DaysIncludingToday)).toEqual([ + '2022-4-25', + '2022-4-26', + '2022-4-27', + '2022-4-28', + '2022-4-29', + '2022-4-30', + '2022-5-1', + '2022-5-2', + '2022-5-3', + '2022-5-4', + '2022-5-5', + '2022-5-6', + '2022-5-7', + '2022-5-8', + '2022-5-9', + '2022-5-10', + '2022-5-11', + '2022-5-12', + '2022-5-13', + '2022-5-14', + '2022-5-15', + '2022-5-16', + '2022-5-17', + '2022-5-18', + '2022-5-19', + '2022-5-20', + '2022-5-21', + '2022-5-22', + '2022-5-23', + '2022-5-24', + ]) + }) + it('should generate period keys for this year', () => { expect(createGenerator().getDiscretePeriodKeys(Period.ThisYear)).toEqual([ '2022-1', diff --git a/packages/analytics/src/Domain/Time/PeriodKeyGenerator.ts b/packages/analytics/src/Domain/Time/PeriodKeyGenerator.ts index 474110731..f5aa41123 100644 --- a/packages/analytics/src/Domain/Time/PeriodKeyGenerator.ts +++ b/packages/analytics/src/Domain/Time/PeriodKeyGenerator.ts @@ -33,6 +33,12 @@ export class PeriodKeyGenerator implements PeriodKeyGeneratorInterface { periodKeys.unshift(this.getDailyKey(this.getDateNDaysBefore(i))) } + return periodKeys + case Period.Last30DaysIncludingToday: + for (let i = 0; i <= 29; i++) { + periodKeys.unshift(this.getDailyKey(this.getDateNDaysBefore(i))) + } + return periodKeys case Period.Last7Days: for (let i = 1; i <= 7; i++) {