summaryrefslogtreecommitdiff
path: root/packages/backend/src/queue/processors/system
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-03-04 20:23:53 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-03-04 20:23:53 +0900
commite68278f93e82ba396ea2b1fbe0c7e0231c640421 (patch)
tree19fbe3831469e227b949e5f4030599f1aec9e5f5 /packages/backend/src/queue/processors/system
parentfix query error (diff)
downloadsharkey-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.ts30
-rw-r--r--packages/backend/src/queue/processors/system/index.ts2
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>>) {