From 31c849cc2d13bc97690da1cbec3d1868ddb733dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karol=20S=C3=B3jko?= Date: Mon, 8 Aug 2022 21:04:54 +0200 Subject: [PATCH] fix(analytics): format of changes over time to total count --- .../Domain/Analytics/AnalyticsStoreInterface.ts | 5 ++++- .../src/Infra/Redis/RedisAnalyticsStore.spec.ts | 15 ++++++++++++++- .../src/Infra/Redis/RedisAnalyticsStore.ts | 10 ++++++++-- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/packages/analytics/src/Domain/Analytics/AnalyticsStoreInterface.ts b/packages/analytics/src/Domain/Analytics/AnalyticsStoreInterface.ts index ba66a4e51..1c75ae8f7 100644 --- a/packages/analytics/src/Domain/Analytics/AnalyticsStoreInterface.ts +++ b/packages/analytics/src/Domain/Analytics/AnalyticsStoreInterface.ts @@ -7,5 +7,8 @@ export interface AnalyticsStoreInterface { wasActivityDone(activity: AnalyticsActivity, analyticsId: number, period: Period): Promise calculateActivityRetention(activity: AnalyticsActivity, firstPeriod: Period, secondPeriod: Period): Promise calculateActivityTotalCount(activity: AnalyticsActivity, period: Period): Promise - calculateActivityChangesTotalCount(activity: AnalyticsActivity, period: Period): Promise + calculateActivityChangesTotalCount( + activity: AnalyticsActivity, + period: Period, + ): Promise> } diff --git a/packages/analytics/src/Infra/Redis/RedisAnalyticsStore.spec.ts b/packages/analytics/src/Infra/Redis/RedisAnalyticsStore.spec.ts index 89667ee3e..a3a205465 100644 --- a/packages/analytics/src/Infra/Redis/RedisAnalyticsStore.spec.ts +++ b/packages/analytics/src/Infra/Redis/RedisAnalyticsStore.spec.ts @@ -36,7 +36,20 @@ describe('RedisAnalyticsStore', () => { expect( await createStore().calculateActivityChangesTotalCount(AnalyticsActivity.EditingItems, Period.Last30Days), - ).toEqual([70, 71, 72]) + ).toEqual([ + { + periodKey: '2022-4-24', + totalCount: 70, + }, + { + periodKey: '2022-4-25', + totalCount: 71, + }, + { + periodKey: '2022-4-26', + totalCount: 72, + }, + ]) expect(redisClient.bitcount).toHaveBeenNthCalledWith(1, 'bitmap:action:editing-items:timespan:2022-4-24') expect(redisClient.bitcount).toHaveBeenNthCalledWith(2, 'bitmap:action:editing-items:timespan:2022-4-25') diff --git a/packages/analytics/src/Infra/Redis/RedisAnalyticsStore.ts b/packages/analytics/src/Infra/Redis/RedisAnalyticsStore.ts index 868512f83..f4e54208e 100644 --- a/packages/analytics/src/Infra/Redis/RedisAnalyticsStore.ts +++ b/packages/analytics/src/Infra/Redis/RedisAnalyticsStore.ts @@ -8,7 +8,10 @@ import { AnalyticsStoreInterface } from '../../Domain/Analytics/AnalyticsStoreIn export class RedisAnalyticsStore implements AnalyticsStoreInterface { constructor(private periodKeyGenerator: PeriodKeyGeneratorInterface, private redisClient: IORedis.Redis) {} - async calculateActivityChangesTotalCount(activity: AnalyticsActivity, period: Period): Promise { + async calculateActivityChangesTotalCount( + activity: AnalyticsActivity, + period: Period, + ): Promise> { if (period !== Period.Last30Days) { throw new Error(`Unsuporrted period: ${period}`) } @@ -16,7 +19,10 @@ export class RedisAnalyticsStore implements AnalyticsStoreInterface { const periodKeys = this.periodKeyGenerator.getDiscretePeriodKeys(Period.Last30Days) const counts = [] for (const periodKey of periodKeys) { - counts.push(await this.redisClient.bitcount(`bitmap:action:${activity}:timespan:${periodKey}`)) + counts.push({ + periodKey, + totalCount: await this.redisClient.bitcount(`bitmap:action:${activity}:timespan:${periodKey}`), + }) } return counts