diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2022-03-04 20:23:53 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2022-03-04 20:23:53 +0900 |
| commit | e68278f93e82ba396ea2b1fbe0c7e0231c640421 (patch) | |
| tree | 19fbe3831469e227b949e5f4030599f1aec9e5f5 /packages/backend/src/queue/processors/system | |
| parent | fix query error (diff) | |
| download | sharkey-e68278f93e82ba396ea2b1fbe0c7e0231c640421.tar.gz sharkey-e68278f93e82ba396ea2b1fbe0c7e0231c640421.tar.bz2 sharkey-e68278f93e82ba396ea2b1fbe0c7e0231c640421.zip | |
feat: 時限ミュート
#7677
Diffstat (limited to 'packages/backend/src/queue/processors/system')
| -rw-r--r-- | packages/backend/src/queue/processors/system/check-expired-mutings.ts | 30 | ||||
| -rw-r--r-- | packages/backend/src/queue/processors/system/index.ts | 2 |
2 files changed, 32 insertions, 0 deletions
diff --git a/packages/backend/src/queue/processors/system/check-expired-mutings.ts b/packages/backend/src/queue/processors/system/check-expired-mutings.ts new file mode 100644 index 0000000000..621269e7e1 --- /dev/null +++ b/packages/backend/src/queue/processors/system/check-expired-mutings.ts @@ -0,0 +1,30 @@ +import Bull from 'bull'; +import { In } from 'typeorm'; +import { Mutings } from '@/models/index.js'; +import { queueLogger } from '../../logger.js'; +import { publishUserEvent } from '@/services/stream.js'; + +const logger = queueLogger.createSubLogger('check-expired-mutings'); + +export async function checkExpiredMutings(job: Bull.Job<Record<string, unknown>>, done: any): Promise<void> { + logger.info(`Checking expired mutings...`); + + const expired = await Mutings.createQueryBuilder('muting') + .where('muting.expiresAt IS NOT NULL') + .andWhere('muting.expiresAt < :now', { now: new Date() }) + .innerJoinAndSelect('muting.mutee', 'mutee') + .getMany(); + + if (expired.length > 0) { + await Mutings.delete({ + id: In(expired.map(m => m.id)), + }); + + for (const m of expired) { + publishUserEvent(m.muterId, 'unmute', m.mutee!); + } + } + + logger.succ(`All expired mutings checked.`); + done(); +} diff --git a/packages/backend/src/queue/processors/system/index.ts b/packages/backend/src/queue/processors/system/index.ts index dca3249e82..f90f6efafd 100644 --- a/packages/backend/src/queue/processors/system/index.ts +++ b/packages/backend/src/queue/processors/system/index.ts @@ -2,11 +2,13 @@ import Bull from 'bull'; import { tickCharts } from './tick-charts.js'; import { resyncCharts } from './resync-charts.js'; import { cleanCharts } from './clean-charts.js'; +import { checkExpiredMutings } from './check-expired-mutings.js'; const jobs = { tickCharts, resyncCharts, cleanCharts, + checkExpiredMutings, } as Record<string, Bull.ProcessCallbackFunction<Record<string, unknown>> | Bull.ProcessPromiseFunction<Record<string, unknown>>>; export default function(dbQueue: Bull.Queue<Record<string, unknown>>) { |