Skip to content

Commit 57684dc

Browse files
author
Andres Pinto
committed
Merge branch 'master' into feat/incremental-usage-2
2 parents f1abca6 + 021ba65 commit 57684dc

File tree

5 files changed

+19
-33
lines changed

5 files changed

+19
-33
lines changed

src/modules/file/file.usecase.spec.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1531,7 +1531,7 @@ describe('FileUseCases', () => {
15311531
expect(usageService.getUserMostRecentUsage).toHaveBeenCalledWith(
15321532
mockUser.uuid,
15331533
);
1534-
expect(usageService.findOrCreateMonthlyUsage).not.toHaveBeenCalled();
1534+
expect(usageService.createMonthlyUsage).not.toHaveBeenCalled();
15351535
expect(result).toBe(expectedTotal);
15361536
});
15371537

@@ -1558,8 +1558,8 @@ describe('FileUseCases', () => {
15581558
.mockResolvedValueOnce(mockGapDelta)
15591559
.mockResolvedValueOnce(mockTodayUsage);
15601560
jest
1561-
.spyOn(usageService, 'findOrCreateMonthlyUsage')
1562-
.mockResolvedValueOnce(undefined);
1561+
.spyOn(usageService, 'createMonthlyUsage')
1562+
.mockResolvedValue(undefined);
15631563
jest
15641564
.spyOn(usageService, 'getAccumulatedUsage')
15651565
.mockResolvedValueOnce(mockAccumulatedUsage);
@@ -1574,7 +1574,7 @@ describe('FileUseCases', () => {
15741574
mockUsage.getNextPeriodStartDate(),
15751575
Time.endOfDay(yesterday),
15761576
);
1577-
expect(usageService.findOrCreateMonthlyUsage).toHaveBeenCalledWith(
1577+
expect(usageService.createMonthlyUsage).toHaveBeenCalledWith(
15781578
mockUser.uuid,
15791579
yesterday,
15801580
mockGapDelta,
@@ -1604,15 +1604,15 @@ describe('FileUseCases', () => {
16041604
.mockResolvedValueOnce(mockGapDelta)
16051605
.mockResolvedValueOnce(mockTodayUsage);
16061606
jest
1607-
.spyOn(usageService, 'findOrCreateMonthlyUsage')
1607+
.spyOn(usageService, 'createMonthlyUsage')
16081608
.mockResolvedValueOnce(undefined);
16091609
jest
16101610
.spyOn(usageService, 'getAccumulatedUsage')
16111611
.mockResolvedValueOnce(mockAccumulatedUsage);
16121612

16131613
const result = await service.getUserUsedStorageIncrementally(mockUser);
16141614

1615-
expect(usageService.findOrCreateMonthlyUsage).toHaveBeenCalledWith(
1615+
expect(usageService.createMonthlyUsage).toHaveBeenCalledWith(
16161616
mockUser.uuid,
16171617
yesterday,
16181618
mockGapDelta,

src/modules/file/file.usecase.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,14 +88,15 @@ export class FileUseCases {
8888

8989
if (noRecordInUsageTable) {
9090
this.handleUserFirstDeltaCreation(user);
91-
// Fallback to previous implementation
91+
// Fallback to previous implementation
9292
return this.fileRepository.sumExistentFileSizes(user.id);
9393
}
9494

9595
const nextPeriodStart = mostRecentUsage.getNextPeriodStartDate();
96-
const isUpToDate = Time.isToday(nextPeriodStart);
9796

98-
if (!isUpToDate) {
97+
const wasUsageCalculatedForYesterday = Time.isToday(nextPeriodStart);
98+
if (!wasUsageCalculatedForYesterday) {
99+
// Consider moving this to events
99100
await this.fillDeltaGapUntilYesteday(user, nextPeriodStart);
100101
}
101102

@@ -131,7 +132,7 @@ export class FileUseCases {
131132
yesterdayEndOfDay,
132133
);
133134
await this.usageService
134-
.findOrCreateMonthlyUsage(user.uuid, yesterday, gapDelta)
135+
.createMonthlyUsage(user.uuid, yesterday, gapDelta)
135136
.catch((error) =>
136137
new Logger('[USAGE/FILL_GAP]').error(
137138
`error while filling gap in usage ${JSON.stringify({ message: error.message })}`,

src/modules/usage/usage.repository.ts

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,9 @@ export class SequelizeUsageRepository {
1717
return this.toDomain(newUsage);
1818
}
1919

20-
public async findOrCreateMonthlyUsage(usage: Omit<Usage, 'id'>) {
21-
const [newUsage] = await this.usageModel.findOrCreate({
22-
where: {
23-
userId: usage.userId,
24-
type: usage.type,
25-
period: usage.period,
26-
},
27-
defaults: {
28-
...usage,
29-
},
20+
public async createMonthlyUsage(usage: Usage) {
21+
const newUsage = await this.usageModel.create({
22+
...usage,
3023
});
3124

3225
return this.toDomain(newUsage);

src/modules/usage/usage.service.spec.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -212,17 +212,13 @@ describe('UsageService', () => {
212212
const usage = newUsage({ attributes: { type: UsageType.Monthly } });
213213

214214
jest
215-
.spyOn(usageRepository, 'findOrCreateMonthlyUsage')
215+
.spyOn(usageRepository, 'createMonthlyUsage')
216216
.mockResolvedValue(usage);
217217

218-
const result = await service.findOrCreateMonthlyUsage(
219-
userId,
220-
period,
221-
delta,
222-
);
218+
const result = await service.createMonthlyUsage(userId, period, delta);
223219

224220
expect(result).toEqual(usage);
225-
expect(usageRepository.findOrCreateMonthlyUsage).toHaveBeenCalledWith(
221+
expect(usageRepository.createMonthlyUsage).toHaveBeenCalledWith(
226222
expect.objectContaining({
227223
userId,
228224
period,

src/modules/usage/usage.service.ts

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,7 @@ export class UsageService {
2020
return this.usageRepository.createFirstUsageCalculation(userUuid);
2121
}
2222

23-
async findOrCreateMonthlyUsage(
24-
userId: User['uuid'],
25-
period: Date,
26-
delta: number,
27-
) {
23+
async createMonthlyUsage(userId: User['uuid'], period: Date, delta: number) {
2824
const monthlyUsage = Usage.build({
2925
id: v4(),
3026
userId: userId,
@@ -36,7 +32,7 @@ export class UsageService {
3632
});
3733

3834
const createMonthlyUsage =
39-
await this.usageRepository.findOrCreateMonthlyUsage(monthlyUsage);
35+
await this.usageRepository.createMonthlyUsage(monthlyUsage);
4036

4137
return createMonthlyUsage;
4238
}

0 commit comments

Comments
 (0)