diff --git a/src/modules/feature-limit/feature-limit.service.ts b/src/modules/feature-limit/feature-limit.service.ts index 8d1ee3064..7b9bddc06 100644 --- a/src/modules/feature-limit/feature-limit.service.ts +++ b/src/modules/feature-limit/feature-limit.service.ts @@ -106,6 +106,23 @@ export class FeatureLimitService { maxFileSize: number; retentionDays: number; maxVersions: number; + }> { + const user = await this.userRepository.findByUuid(userUuid); + if (!user) { + throw new NotFoundException('User not found'); + } + + return this.getFileVersioningLimitsByTier(userUuid, user.tierId); + } + + async getFileVersioningLimitsByTier( + userUuid: string, + tierId: string, + ): Promise<{ + enabled: boolean; + maxFileSize: number; + retentionDays: number; + maxVersions: number; }> { const fileVersioningLabels = [ LimitLabels.FileVersionEnabled, @@ -114,18 +131,13 @@ export class FeatureLimitService { LimitLabels.FileVersionMaxNumber, ]; - const user = await this.userRepository.findByUuid(userUuid); - if (!user) { - throw new NotFoundException('User not found'); - } - const [userOverriddenLimits, tierLimits] = await Promise.all([ this.limitsRepository.findUserOverriddenLimitsByLabels( - user.uuid, + userUuid, fileVersioningLabels, ), this.limitsRepository.findLimitsByLabelsAndTier( - user.tierId, + tierId, fileVersioningLabels, ), ]); diff --git a/src/modules/gateway/gateway.usecase.spec.ts b/src/modules/gateway/gateway.usecase.spec.ts index fbd66fc18..8942cf6a8 100644 --- a/src/modules/gateway/gateway.usecase.spec.ts +++ b/src/modules/gateway/gateway.usecase.spec.ts @@ -514,7 +514,7 @@ describe('GatewayUseCases', () => { beforeEach(() => { jest - .spyOn(featureLimitService, 'getFileVersioningLimits') + .spyOn(featureLimitService, 'getFileVersioningLimitsByTier') .mockResolvedValue(newVersioningLimits({ enabled: false })); jest @@ -734,7 +734,7 @@ describe('GatewayUseCases', () => { it('When user has versioning enabled, then should call partial undo', async () => { const enabledLimits = newVersioningLimits({ enabled: true }); const getLimitsSpy = jest - .spyOn(featureLimitService, 'getFileVersioningLimits') + .spyOn(featureLimitService, 'getFileVersioningLimitsByTier') .mockResolvedValue(enabledLimits); const undoSpy = jest.spyOn(fileUseCases, 'undoFileVersioning'); const partialUndoSpy = jest @@ -749,7 +749,7 @@ describe('GatewayUseCases', () => { await service.updateUser(user, { newStorageSpaceBytes }); - expect(getLimitsSpy).toHaveBeenCalledWith(user.uuid); + expect(getLimitsSpy).toHaveBeenCalledWith(user.uuid, user.tierId); expect(undoSpy).not.toHaveBeenCalled(); expect(partialUndoSpy).toHaveBeenCalledWith(user.uuid, { retentionDays: enabledLimits.retentionDays, @@ -760,7 +760,7 @@ describe('GatewayUseCases', () => { it('When user has versioning disabled, then should delete all file versions', async () => { const disabledLimits = newVersioningLimits({ enabled: false }); const getLimitsSpy = jest - .spyOn(featureLimitService, 'getFileVersioningLimits') + .spyOn(featureLimitService, 'getFileVersioningLimitsByTier') .mockResolvedValue(disabledLimits); const undoSpy = jest .spyOn(fileUseCases, 'undoFileVersioning') @@ -774,14 +774,14 @@ describe('GatewayUseCases', () => { await service.updateUser(user, { newStorageSpaceBytes }); - expect(getLimitsSpy).toHaveBeenCalledWith(user.uuid); + expect(getLimitsSpy).toHaveBeenCalledWith(user.uuid, user.tierId); expect(undoSpy).toHaveBeenCalledWith(user.uuid); }); it('When file versions are deleted, then should log deletion count', async () => { const disabledLimits = newVersioningLimits({ enabled: false }); jest - .spyOn(featureLimitService, 'getFileVersioningLimits') + .spyOn(featureLimitService, 'getFileVersioningLimitsByTier') .mockResolvedValue(disabledLimits); jest .spyOn(fileUseCases, 'undoFileVersioning') diff --git a/src/modules/gateway/gateway.usecase.ts b/src/modules/gateway/gateway.usecase.ts index 1874392b3..ad6ca91dc 100644 --- a/src/modules/gateway/gateway.usecase.ts +++ b/src/modules/gateway/gateway.usecase.ts @@ -343,7 +343,10 @@ export class GatewayUseCases { } const limits = - await this.featureLimitService.getFileVersioningLimits(user.uuid); + await this.featureLimitService.getFileVersioningLimitsByTier( + user.uuid, + user.tierId, + ); Logger.log( `[GATEWAY/UPDATE_TIER] Starting file versioning validation for user ${user.uuid}: enabled=${limits.enabled}, retentionDays=${limits.retentionDays}, maxVersions=${limits.maxVersions}`,