summaryrefslogtreecommitdiff
path: root/packages/backend/src/queue/processors/CleanProcessorService.ts
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-03-01 10:20:03 +0900
committerGitHub <noreply@github.com>2023-03-01 10:20:03 +0900
commit1c5291f8185651c231903129ee7c1cee263f9f03 (patch)
tree36668447b343dc4c50222390761fd73d143278e9 /packages/backend/src/queue/processors/CleanProcessorService.ts
parentenhance(client): ノートの操作部をホバー時のみ表示するオプ... (diff)
downloadsharkey-1c5291f8185651c231903129ee7c1cee263f9f03.tar.gz
sharkey-1c5291f8185651c231903129ee7c1cee263f9f03.tar.bz2
sharkey-1c5291f8185651c231903129ee7c1cee263f9f03.zip
feat: 時限ロール (#10145)
* feat: 時限ロール * クライアントから期限を確認できるように * リファクタとか * fix test * fix test * fix test * clean up
Diffstat (limited to 'packages/backend/src/queue/processors/CleanProcessorService.ts')
-rw-r--r--packages/backend/src/queue/processors/CleanProcessorService.ts18
1 files changed, 16 insertions, 2 deletions
diff --git a/packages/backend/src/queue/processors/CleanProcessorService.ts b/packages/backend/src/queue/processors/CleanProcessorService.ts
index 406184cbde..7fd2cde9c0 100644
--- a/packages/backend/src/queue/processors/CleanProcessorService.ts
+++ b/packages/backend/src/queue/processors/CleanProcessorService.ts
@@ -1,7 +1,7 @@
import { Inject, Injectable } from '@nestjs/common';
-import { LessThan } from 'typeorm';
+import { In, LessThan } from 'typeorm';
import { DI } from '@/di-symbols.js';
-import type { AntennaNotesRepository, MutedNotesRepository, NotificationsRepository, UserIpsRepository } from '@/models/index.js';
+import type { AntennaNotesRepository, MutedNotesRepository, NotificationsRepository, RoleAssignmentsRepository, UserIpsRepository } from '@/models/index.js';
import type { Config } from '@/config.js';
import type Logger from '@/logger.js';
import { bindThis } from '@/decorators.js';
@@ -29,6 +29,9 @@ export class CleanProcessorService {
@Inject(DI.antennaNotesRepository)
private antennaNotesRepository: AntennaNotesRepository,
+ @Inject(DI.roleAssignmentsRepository)
+ private roleAssignmentsRepository: RoleAssignmentsRepository,
+
private queueLoggerService: QueueLoggerService,
private idService: IdService,
) {
@@ -56,6 +59,17 @@ export class CleanProcessorService {
id: LessThan(this.idService.genId(new Date(Date.now() - (1000 * 60 * 60 * 24 * 90)))),
});
+ const expiredRoleAssignments = await this.roleAssignmentsRepository.createQueryBuilder('assign')
+ .where('assign.expiresAt IS NOT NULL')
+ .andWhere('assign.expiresAt < :now', { now: new Date() })
+ .getMany();
+
+ if (expiredRoleAssignments.length > 0) {
+ await this.roleAssignmentsRepository.delete({
+ id: In(expiredRoleAssignments.map(x => x.id)),
+ });
+ }
+
this.logger.succ('Cleaned.');
done();
}