diff --git a/src/lib/db/segment-store.test.ts b/src/lib/db/segment-store.test.ts index 1658152de5..d6e18d13f7 100644 --- a/src/lib/db/segment-store.test.ts +++ b/src/lib/db/segment-store.test.ts @@ -49,7 +49,7 @@ describe('usage counting', () => { await db.rawDatabase.table('change_requests').delete(); }); - test('segment usage in active CRs is also counted', async () => { + test('segment usage in active CRs is counted iff we ask for it', async () => { const CR_ID = 54321; const flag1 = await db.stores.featureToggleStore.create('default', { @@ -123,10 +123,15 @@ describe('usage counting', () => { created_by: user.id, }); - const [storedSegment] = await segmentStore.getAll(); + const [enterpriseData] = await segmentStore.getAll(true); - expect(storedSegment.usedInFeatures).toBe(2); - expect(storedSegment.usedInProjects).toBe(1); + expect(enterpriseData.usedInFeatures).toBe(2); + expect(enterpriseData.usedInProjects).toBe(1); + + const [ossData] = await segmentStore.getAll(false); + + expect(ossData.usedInFeatures).toBe(0); + expect(ossData.usedInProjects).toBe(0); }); test('Segment usage is only counted once per feature', async () => { @@ -204,7 +209,7 @@ describe('usage counting', () => { created_by: user.id, }); - const storedSegments = await segmentStore.getAll(); + const storedSegments = await segmentStore.getAll(true); expect(storedSegments).toMatchObject([ { usedInFeatures: 1, usedInProjects: 1 }, diff --git a/src/lib/db/segment-store.ts b/src/lib/db/segment-store.ts index 662822a3b4..7e86fdb9c4 100644 --- a/src/lib/db/segment-store.ts +++ b/src/lib/db/segment-store.ts @@ -111,8 +111,13 @@ export default class SegmentStore implements ISegmentStore { return this.db(T.segments).where({ id }).del(); } - async getAll(): Promise { - if (this.flagResolver.isEnabled('detectSegmentUsageInChangeRequests')) { + async getAll( + includeChangeRequestUsageData: boolean = false, + ): Promise { + if ( + includeChangeRequestUsageData && + this.flagResolver.isEnabled('detectSegmentUsageInChangeRequests') + ) { const pendingCRs = await this.db .select('id', 'project') .from('change_requests') diff --git a/src/lib/services/segment-service.ts b/src/lib/services/segment-service.ts index 875196212d..8cc41a3dcd 100644 --- a/src/lib/services/segment-service.ts +++ b/src/lib/services/segment-service.ts @@ -75,7 +75,7 @@ export class SegmentService implements ISegmentService { } async getAll(): Promise { - return this.segmentStore.getAll(); + return this.segmentStore.getAll(this.config.isEnterprise); } async getActive(): Promise { diff --git a/src/lib/types/stores/segment-store.ts b/src/lib/types/stores/segment-store.ts index dea16c374b..20c50f2d29 100644 --- a/src/lib/types/stores/segment-store.ts +++ b/src/lib/types/stores/segment-store.ts @@ -3,7 +3,7 @@ import { Store } from './store'; import User from '../user'; export interface ISegmentStore extends Store { - getAll(): Promise; + getAll(includeChangeRequestUsageData?: boolean): Promise; getActive(): Promise;