summaryrefslogtreecommitdiff
path: root/packages/backend/src/queue/processors
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-03-09 23:04:16 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-03-09 23:04:16 +0900
commit6fc35868ff89c51720aad6e13676d10aa0785cf8 (patch)
treefa53821e51401b4c6283c8482452bc52d4f26834 /packages/backend/src/queue/processors
parentMerge branch 'develop' (diff)
parent12.108.0 (diff)
downloadmisskey-6fc35868ff89c51720aad6e13676d10aa0785cf8.tar.gz
misskey-6fc35868ff89c51720aad6e13676d10aa0785cf8.tar.bz2
misskey-6fc35868ff89c51720aad6e13676d10aa0785cf8.zip
Merge branch 'develop'
Diffstat (limited to 'packages/backend/src/queue/processors')
-rw-r--r--packages/backend/src/queue/processors/db/delete-account.ts20
-rw-r--r--packages/backend/src/queue/processors/db/delete-drive-files.ts10
-rw-r--r--packages/backend/src/queue/processors/db/export-blocking.ts14
-rw-r--r--packages/backend/src/queue/processors/db/export-custom-emojis.ts22
-rw-r--r--packages/backend/src/queue/processors/db/export-following.ts18
-rw-r--r--packages/backend/src/queue/processors/db/export-mute.ts17
-rw-r--r--packages/backend/src/queue/processors/db/export-notes.ts18
-rw-r--r--packages/backend/src/queue/processors/db/export-user-lists.ts14
-rw-r--r--packages/backend/src/queue/processors/db/import-blocking.ts18
-rw-r--r--packages/backend/src/queue/processors/db/import-custom-emojis.ts18
-rw-r--r--packages/backend/src/queue/processors/db/import-following.ts18
-rw-r--r--packages/backend/src/queue/processors/db/import-muting.ts20
-rw-r--r--packages/backend/src/queue/processors/db/import-user-lists.ts20
-rw-r--r--packages/backend/src/queue/processors/db/index.ts30
-rw-r--r--packages/backend/src/queue/processors/deliver.ts28
-rw-r--r--packages/backend/src/queue/processors/ended-poll-notification.ts33
-rw-r--r--packages/backend/src/queue/processors/inbox.ts34
-rw-r--r--packages/backend/src/queue/processors/object-storage/clean-remote-files.ts8
-rw-r--r--packages/backend/src/queue/processors/object-storage/delete-file.ts6
-rw-r--r--packages/backend/src/queue/processors/object-storage/index.ts8
-rw-r--r--packages/backend/src/queue/processors/system/check-expired-mutings.ts30
-rw-r--r--packages/backend/src/queue/processors/system/clean-charts.ts6
-rw-r--r--packages/backend/src/queue/processors/system/index.ts10
-rw-r--r--packages/backend/src/queue/processors/system/resync-charts.ts6
-rw-r--r--packages/backend/src/queue/processors/system/tick-charts.ts6
25 files changed, 249 insertions, 183 deletions
diff --git a/packages/backend/src/queue/processors/db/delete-account.ts b/packages/backend/src/queue/processors/db/delete-account.ts
index 4b620842a4..dbc1f16a46 100644
--- a/packages/backend/src/queue/processors/db/delete-account.ts
+++ b/packages/backend/src/queue/processors/db/delete-account.ts
@@ -1,12 +1,12 @@
-import * as Bull from 'bull';
-import { queueLogger } from '../../logger';
-import { DriveFiles, Notes, UserProfiles, Users } from '@/models/index';
-import { DbUserDeleteJobData } from '@/queue/types';
-import { Note } from '@/models/entities/note';
-import { DriveFile } from '@/models/entities/drive-file';
+import Bull from 'bull';
+import { queueLogger } from '../../logger.js';
+import { DriveFiles, Notes, UserProfiles, Users } from '@/models/index.js';
+import { DbUserDeleteJobData } from '@/queue/types.js';
+import { Note } from '@/models/entities/note.js';
+import { DriveFile } from '@/models/entities/drive-file.js';
import { MoreThan } from 'typeorm';
-import { deleteFileSync } from '@/services/drive/delete-file';
-import { sendEmail } from '@/services/send-email';
+import { deleteFileSync } from '@/services/drive/delete-file.js';
+import { sendEmail } from '@/services/send-email.js';
const logger = queueLogger.createSubLogger('delete-account');
@@ -31,7 +31,7 @@ export async function deleteAccount(job: Bull.Job<DbUserDeleteJobData>): Promise
order: {
id: 1,
},
- });
+ }) as Note[];
if (notes.length === 0) {
break;
@@ -58,7 +58,7 @@ export async function deleteAccount(job: Bull.Job<DbUserDeleteJobData>): Promise
order: {
id: 1,
},
- });
+ }) as DriveFile[];
if (files.length === 0) {
break;
diff --git a/packages/backend/src/queue/processors/db/delete-drive-files.ts b/packages/backend/src/queue/processors/db/delete-drive-files.ts
index d26f5a47c4..f6a8699855 100644
--- a/packages/backend/src/queue/processors/db/delete-drive-files.ts
+++ b/packages/backend/src/queue/processors/db/delete-drive-files.ts
@@ -1,10 +1,10 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
-import { queueLogger } from '../../logger';
-import { deleteFileSync } from '@/services/drive/delete-file';
-import { Users, DriveFiles } from '@/models/index';
+import { queueLogger } from '../../logger.js';
+import { deleteFileSync } from '@/services/drive/delete-file.js';
+import { Users, DriveFiles } from '@/models/index.js';
import { MoreThan } from 'typeorm';
-import { DbUserJobData } from '@/queue/types';
+import { DbUserJobData } from '@/queue/types.js';
const logger = queueLogger.createSubLogger('delete-drive-files');
diff --git a/packages/backend/src/queue/processors/db/export-blocking.ts b/packages/backend/src/queue/processors/db/export-blocking.ts
index f4de9ce005..83f1ec8fd6 100644
--- a/packages/backend/src/queue/processors/db/export-blocking.ts
+++ b/packages/backend/src/queue/processors/db/export-blocking.ts
@@ -1,14 +1,14 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
import * as tmp from 'tmp';
-import * as fs from 'fs';
+import * as fs from 'node:fs';
-import { queueLogger } from '../../logger';
-import { addFile } from '@/services/drive/add-file';
+import { queueLogger } from '../../logger.js';
+import { addFile } from '@/services/drive/add-file.js';
import { format as dateFormat } from 'date-fns';
-import { getFullApAccount } from '@/misc/convert-host';
-import { Users, Blockings } from '@/models/index';
+import { getFullApAccount } from '@/misc/convert-host.js';
+import { Users, Blockings } from '@/models/index.js';
import { MoreThan } from 'typeorm';
-import { DbUserJobData } from '@/queue/types';
+import { DbUserJobData } from '@/queue/types.js';
const logger = queueLogger.createSubLogger('export-blocking');
diff --git a/packages/backend/src/queue/processors/db/export-custom-emojis.ts b/packages/backend/src/queue/processors/db/export-custom-emojis.ts
index 2f7505f158..a65b46cc00 100644
--- a/packages/backend/src/queue/processors/db/export-custom-emojis.ts
+++ b/packages/backend/src/queue/processors/db/export-custom-emojis.ts
@@ -1,17 +1,17 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
import * as tmp from 'tmp';
-import * as fs from 'fs';
+import * as fs from 'node:fs';
import { ulid } from 'ulid';
-const mime = require('mime-types');
-const archiver = require('archiver');
-import { queueLogger } from '../../logger';
-import { addFile } from '@/services/drive/add-file';
+import mime from 'mime-types';
+import archiver from 'archiver';
+import { queueLogger } from '../../logger.js';
+import { addFile } from '@/services/drive/add-file.js';
import { format as dateFormat } from 'date-fns';
-import { Users, Emojis } from '@/models/index';
-import { } from '@/queue/types';
-import { downloadUrl } from '@/misc/download-url';
-import config from '@/config/index';
+import { Users, Emojis } from '@/models/index.js';
+import { } from '@/queue/types.js';
+import { downloadUrl } from '@/misc/download-url.js';
+import config from '@/config/index.js';
const logger = queueLogger.createSubLogger('export-custom-emojis');
@@ -75,7 +75,7 @@ export async function exportCustomEmojis(job: Bull.Job, done: () => void): Promi
await downloadUrl(emoji.originalUrl, emojiPath);
downloaded = true;
} catch (e) { // TODO: 何度か再試行
- logger.error(e);
+ logger.error(e instanceof Error ? e : new Error(e as string));
}
if (!downloaded) {
diff --git a/packages/backend/src/queue/processors/db/export-following.ts b/packages/backend/src/queue/processors/db/export-following.ts
index 2ac558381b..162862180b 100644
--- a/packages/backend/src/queue/processors/db/export-following.ts
+++ b/packages/backend/src/queue/processors/db/export-following.ts
@@ -1,15 +1,15 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
import * as tmp from 'tmp';
-import * as fs from 'fs';
+import * as fs from 'node:fs';
-import { queueLogger } from '../../logger';
-import { addFile } from '@/services/drive/add-file';
+import { queueLogger } from '../../logger.js';
+import { addFile } from '@/services/drive/add-file.js';
import { format as dateFormat } from 'date-fns';
-import { getFullApAccount } from '@/misc/convert-host';
-import { Users, Followings, Mutings } from '@/models/index';
+import { getFullApAccount } from '@/misc/convert-host.js';
+import { Users, Followings, Mutings } from '@/models/index.js';
import { In, MoreThan, Not } from 'typeorm';
-import { DbUserJobData } from '@/queue/types';
-import { Following } from '@/models/entities/following';
+import { DbUserJobData } from '@/queue/types.js';
+import { Following } from '@/models/entities/following.js';
const logger = queueLogger.createSubLogger('export-following');
@@ -51,7 +51,7 @@ export async function exportFollowing(job: Bull.Job<DbUserJobData>, done: () =>
order: {
id: 1,
},
- });
+ }) as Following[];
if (followings.length === 0) {
break;
diff --git a/packages/backend/src/queue/processors/db/export-mute.ts b/packages/backend/src/queue/processors/db/export-mute.ts
index 9e917ccbf3..9fb144abb2 100644
--- a/packages/backend/src/queue/processors/db/export-mute.ts
+++ b/packages/backend/src/queue/processors/db/export-mute.ts
@@ -1,14 +1,14 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
import * as tmp from 'tmp';
-import * as fs from 'fs';
+import * as fs from 'node:fs';
-import { queueLogger } from '../../logger';
-import { addFile } from '@/services/drive/add-file';
+import { queueLogger } from '../../logger.js';
+import { addFile } from '@/services/drive/add-file.js';
import { format as dateFormat } from 'date-fns';
-import { getFullApAccount } from '@/misc/convert-host';
-import { Users, Mutings } from '@/models/index';
-import { MoreThan } from 'typeorm';
-import { DbUserJobData } from '@/queue/types';
+import { getFullApAccount } from '@/misc/convert-host.js';
+import { Users, Mutings } from '@/models/index.js';
+import { IsNull, MoreThan } from 'typeorm';
+import { DbUserJobData } from '@/queue/types.js';
const logger = queueLogger.createSubLogger('export-mute');
@@ -40,6 +40,7 @@ export async function exportMute(job: Bull.Job<DbUserJobData>, done: any): Promi
const mutes = await Mutings.find({
where: {
muterId: user.id,
+ expiresAt: IsNull(),
...(cursor ? { id: MoreThan(cursor) } : {}),
},
take: 100,
diff --git a/packages/backend/src/queue/processors/db/export-notes.ts b/packages/backend/src/queue/processors/db/export-notes.ts
index 0e65cb8849..c79679366c 100644
--- a/packages/backend/src/queue/processors/db/export-notes.ts
+++ b/packages/backend/src/queue/processors/db/export-notes.ts
@@ -1,15 +1,15 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
import * as tmp from 'tmp';
-import * as fs from 'fs';
+import * as fs from 'node:fs';
-import { queueLogger } from '../../logger';
-import { addFile } from '@/services/drive/add-file';
+import { queueLogger } from '../../logger.js';
+import { addFile } from '@/services/drive/add-file.js';
import { format as dateFormat } from 'date-fns';
-import { Users, Notes, Polls } from '@/models/index';
+import { Users, Notes, Polls } from '@/models/index.js';
import { MoreThan } from 'typeorm';
-import { Note } from '@/models/entities/note';
-import { Poll } from '@/models/entities/poll';
-import { DbUserJobData } from '@/queue/types';
+import { Note } from '@/models/entities/note.js';
+import { Poll } from '@/models/entities/poll.js';
+import { DbUserJobData } from '@/queue/types.js';
const logger = queueLogger.createSubLogger('export-notes');
@@ -62,7 +62,7 @@ export async function exportNotes(job: Bull.Job<DbUserJobData>, done: any): Prom
order: {
id: 1,
},
- });
+ }) as Note[];
if (notes.length === 0) {
job.progress(100);
diff --git a/packages/backend/src/queue/processors/db/export-user-lists.ts b/packages/backend/src/queue/processors/db/export-user-lists.ts
index fcd2ba336c..1c04c36789 100644
--- a/packages/backend/src/queue/processors/db/export-user-lists.ts
+++ b/packages/backend/src/queue/processors/db/export-user-lists.ts
@@ -1,14 +1,14 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
import * as tmp from 'tmp';
-import * as fs from 'fs';
+import * as fs from 'node:fs';
-import { queueLogger } from '../../logger';
-import { addFile } from '@/services/drive/add-file';
+import { queueLogger } from '../../logger.js';
+import { addFile } from '@/services/drive/add-file.js';
import { format as dateFormat } from 'date-fns';
-import { getFullApAccount } from '@/misc/convert-host';
-import { Users, UserLists, UserListJoinings } from '@/models/index';
+import { getFullApAccount } from '@/misc/convert-host.js';
+import { Users, UserLists, UserListJoinings } from '@/models/index.js';
import { In } from 'typeorm';
-import { DbUserJobData } from '@/queue/types';
+import { DbUserJobData } from '@/queue/types.js';
const logger = queueLogger.createSubLogger('export-user-lists');
diff --git a/packages/backend/src/queue/processors/db/import-blocking.ts b/packages/backend/src/queue/processors/db/import-blocking.ts
index 42c3cd0a40..857c2629e3 100644
--- a/packages/backend/src/queue/processors/db/import-blocking.ts
+++ b/packages/backend/src/queue/processors/db/import-blocking.ts
@@ -1,13 +1,13 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
-import { queueLogger } from '../../logger';
-import * as Acct from 'misskey-js/built/acct';
-import { resolveUser } from '@/remote/resolve-user';
-import { downloadTextFile } from '@/misc/download-text-file';
-import { isSelfHost, toPuny } from '@/misc/convert-host';
-import { Users, DriveFiles, Blockings } from '@/models/index';
-import { DbUserImportJobData } from '@/queue/types';
-import block from '@/services/blocking/create';
+import { queueLogger } from '../../logger.js';
+import * as Acct from '@/misc/acct.js';
+import { resolveUser } from '@/remote/resolve-user.js';
+import { downloadTextFile } from '@/misc/download-text-file.js';
+import { isSelfHost, toPuny } from '@/misc/convert-host.js';
+import { Users, DriveFiles, Blockings } from '@/models/index.js';
+import { DbUserImportJobData } from '@/queue/types.js';
+import block from '@/services/blocking/create.js';
const logger = queueLogger.createSubLogger('import-blocking');
diff --git a/packages/backend/src/queue/processors/db/import-custom-emojis.ts b/packages/backend/src/queue/processors/db/import-custom-emojis.ts
index b6c0126534..f862276b47 100644
--- a/packages/backend/src/queue/processors/db/import-custom-emojis.ts
+++ b/packages/backend/src/queue/processors/db/import-custom-emojis.ts
@@ -1,15 +1,15 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
import * as tmp from 'tmp';
-import * as fs from 'fs';
-const unzipper = require('unzipper');
+import * as fs from 'node:fs';
+import unzipper from 'unzipper';
import { getConnection } from 'typeorm';
-import { queueLogger } from '../../logger';
-import { downloadUrl } from '@/misc/download-url';
-import { DriveFiles, Emojis } from '@/models/index';
-import { DbUserImportJobData } from '@/queue/types';
-import { addFile } from '@/services/drive/add-file';
-import { genId } from '@/misc/gen-id';
+import { queueLogger } from '../../logger.js';
+import { downloadUrl } from '@/misc/download-url.js';
+import { DriveFiles, Emojis } from '@/models/index.js';
+import { DbUserImportJobData } from '@/queue/types.js';
+import { addFile } from '@/services/drive/add-file.js';
+import { genId } from '@/misc/gen-id.js';
const logger = queueLogger.createSubLogger('import-custom-emojis');
diff --git a/packages/backend/src/queue/processors/db/import-following.ts b/packages/backend/src/queue/processors/db/import-following.ts
index f19296832e..235fc28394 100644
--- a/packages/backend/src/queue/processors/db/import-following.ts
+++ b/packages/backend/src/queue/processors/db/import-following.ts
@@ -1,13 +1,13 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
-import { queueLogger } from '../../logger';
-import follow from '@/services/following/create';
-import * as Acct from 'misskey-js/built/acct';
-import { resolveUser } from '@/remote/resolve-user';
-import { downloadTextFile } from '@/misc/download-text-file';
-import { isSelfHost, toPuny } from '@/misc/convert-host';
-import { Users, DriveFiles } from '@/models/index';
-import { DbUserImportJobData } from '@/queue/types';
+import { queueLogger } from '../../logger.js';
+import follow from '@/services/following/create.js';
+import * as Acct from '@/misc/acct.js';
+import { resolveUser } from '@/remote/resolve-user.js';
+import { downloadTextFile } from '@/misc/download-text-file.js';
+import { isSelfHost, toPuny } from '@/misc/convert-host.js';
+import { Users, DriveFiles } from '@/models/index.js';
+import { DbUserImportJobData } from '@/queue/types.js';
const logger = queueLogger.createSubLogger('import-following');
diff --git a/packages/backend/src/queue/processors/db/import-muting.ts b/packages/backend/src/queue/processors/db/import-muting.ts
index 189740c292..32f5f6bbee 100644
--- a/packages/backend/src/queue/processors/db/import-muting.ts
+++ b/packages/backend/src/queue/processors/db/import-muting.ts
@@ -1,14 +1,14 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
-import { queueLogger } from '../../logger';
-import * as Acct from 'misskey-js/built/acct';
-import { resolveUser } from '@/remote/resolve-user';
-import { downloadTextFile } from '@/misc/download-text-file';
-import { isSelfHost, toPuny } from '@/misc/convert-host';
-import { Users, DriveFiles, Mutings } from '@/models/index';
-import { DbUserImportJobData } from '@/queue/types';
-import { User } from '@/models/entities/user';
-import { genId } from '@/misc/gen-id';
+import { queueLogger } from '../../logger.js';
+import * as Acct from '@/misc/acct.js';
+import { resolveUser } from '@/remote/resolve-user.js';
+import { downloadTextFile } from '@/misc/download-text-file.js';
+import { isSelfHost, toPuny } from '@/misc/convert-host.js';
+import { Users, DriveFiles, Mutings } from '@/models/index.js';
+import { DbUserImportJobData } from '@/queue/types.js';
+import { User } from '@/models/entities/user.js';
+import { genId } from '@/misc/gen-id.js';
const logger = queueLogger.createSubLogger('import-muting');
diff --git a/packages/backend/src/queue/processors/db/import-user-lists.ts b/packages/backend/src/queue/processors/db/import-user-lists.ts
index 9b3c0ed60e..ae263e19b0 100644
--- a/packages/backend/src/queue/processors/db/import-user-lists.ts
+++ b/packages/backend/src/queue/processors/db/import-user-lists.ts
@@ -1,14 +1,14 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
-import { queueLogger } from '../../logger';
-import * as Acct from 'misskey-js/built/acct';
-import { resolveUser } from '@/remote/resolve-user';
-import { pushUserToUserList } from '@/services/user-list/push';
-import { downloadTextFile } from '@/misc/download-text-file';
-import { isSelfHost, toPuny } from '@/misc/convert-host';
-import { DriveFiles, Users, UserLists, UserListJoinings } from '@/models/index';
-import { genId } from '@/misc/gen-id';
-import { DbUserImportJobData } from '@/queue/types';
+import { queueLogger } from '../../logger.js';
+import * as Acct from '@/misc/acct.js';
+import { resolveUser } from '@/remote/resolve-user.js';
+import { pushUserToUserList } from '@/services/user-list/push.js';
+import { downloadTextFile } from '@/misc/download-text-file.js';
+import { isSelfHost, toPuny } from '@/misc/convert-host.js';
+import { DriveFiles, Users, UserLists, UserListJoinings } from '@/models/index.js';
+import { genId } from '@/misc/gen-id.js';
+import { DbUserImportJobData } from '@/queue/types.js';
const logger = queueLogger.createSubLogger('import-user-lists');
diff --git a/packages/backend/src/queue/processors/db/index.ts b/packages/backend/src/queue/processors/db/index.ts
index 5fffa378f5..e91d569779 100644
--- a/packages/backend/src/queue/processors/db/index.ts
+++ b/packages/backend/src/queue/processors/db/index.ts
@@ -1,18 +1,18 @@
-import * as Bull from 'bull';
-import { DbJobData } from '@/queue/types';
-import { deleteDriveFiles } from './delete-drive-files';
-import { exportCustomEmojis } from './export-custom-emojis';
-import { exportNotes } from './export-notes';
-import { exportFollowing } from './export-following';
-import { exportMute } from './export-mute';
-import { exportBlocking } from './export-blocking';
-import { exportUserLists } from './export-user-lists';
-import { importFollowing } from './import-following';
-import { importUserLists } from './import-user-lists';
-import { deleteAccount } from './delete-account';
-import { importMuting } from './import-muting';
-import { importBlocking } from './import-blocking';
-import { importCustomEmojis } from './import-custom-emojis';
+import Bull from 'bull';
+import { DbJobData } from '@/queue/types.js';
+import { deleteDriveFiles } from './delete-drive-files.js';
+import { exportCustomEmojis } from './export-custom-emojis.js';
+import { exportNotes } from './export-notes.js';
+import { exportFollowing } from './export-following.js';
+import { exportMute } from './export-mute.js';
+import { exportBlocking } from './export-blocking.js';
+import { exportUserLists } from './export-user-lists.js';
+import { importFollowing } from './import-following.js';
+import { importUserLists } from './import-user-lists.js';
+import { deleteAccount } from './delete-account.js';
+import { importMuting } from './import-muting.js';
+import { importBlocking } from './import-blocking.js';
+import { importCustomEmojis } from './import-custom-emojis.js';
const jobs = {
deleteDriveFiles,
diff --git a/packages/backend/src/queue/processors/deliver.ts b/packages/backend/src/queue/processors/deliver.ts
index bd91dfc3b5..291c05766e 100644
--- a/packages/backend/src/queue/processors/deliver.ts
+++ b/packages/backend/src/queue/processors/deliver.ts
@@ -1,17 +1,17 @@
-import { URL } from 'url';
-import * as Bull from 'bull';
-import request from '@/remote/activitypub/request';
-import { registerOrFetchInstanceDoc } from '@/services/register-or-fetch-instance-doc';
-import Logger from '@/services/logger';
-import { Instances } from '@/models/index';
-import { apRequestChart, federationChart, instanceChart } from '@/services/chart/index';
-import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { toPuny } from '@/misc/convert-host';
-import { Cache } from '@/misc/cache';
-import { Instance } from '@/models/entities/instance';
-import { DeliverJobData } from '../types';
-import { StatusError } from '@/misc/fetch';
+import { URL } from 'node:url';
+import Bull from 'bull';
+import request from '@/remote/activitypub/request.js';
+import { registerOrFetchInstanceDoc } from '@/services/register-or-fetch-instance-doc.js';
+import Logger from '@/services/logger.js';
+import { Instances } from '@/models/index.js';
+import { apRequestChart, federationChart, instanceChart } from '@/services/chart/index.js';
+import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { toPuny } from '@/misc/convert-host.js';
+import { Cache } from '@/misc/cache.js';
+import { Instance } from '@/models/entities/instance.js';
+import { DeliverJobData } from '../types.js';
+import { StatusError } from '@/misc/fetch.js';
const logger = new Logger('deliver');
diff --git a/packages/backend/src/queue/processors/ended-poll-notification.ts b/packages/backend/src/queue/processors/ended-poll-notification.ts
new file mode 100644
index 0000000000..afac27921f
--- /dev/null
+++ b/packages/backend/src/queue/processors/ended-poll-notification.ts
@@ -0,0 +1,33 @@
+import Bull from 'bull';
+import { In } from 'typeorm';
+import { Notes, Polls, PollVotes } from '@/models/index.js';
+import { queueLogger } from '../logger.js';
+import { EndedPollNotificationJobData } from '@/queue/types.js';
+import { createNotification } from '@/services/create-notification.js';
+
+const logger = queueLogger.createSubLogger('ended-poll-notification');
+
+export async function endedPollNotification(job: Bull.Job<EndedPollNotificationJobData>, done: any): Promise<void> {
+ const note = await Notes.findOne(job.data.noteId);
+ if (note == null || !note.hasPoll) {
+ done();
+ return;
+ }
+
+ const votes = await PollVotes.createQueryBuilder('vote')
+ .select('vote.userId')
+ .where('vote.noteId = :noteId', { noteId: note.id })
+ .innerJoinAndSelect('vote.user', 'user')
+ .andWhere('user.host IS NULL')
+ .getMany();
+
+ const userIds = [...new Set([note.userId, ...votes.map(v => v.userId)])];
+
+ for (const userId of userIds) {
+ createNotification(userId, 'pollEnded', {
+ noteId: note.id,
+ });
+ }
+
+ done();
+}
diff --git a/packages/backend/src/queue/processors/inbox.ts b/packages/backend/src/queue/processors/inbox.ts
index c189256c33..1b3f94b700 100644
--- a/packages/backend/src/queue/processors/inbox.ts
+++ b/packages/backend/src/queue/processors/inbox.ts
@@ -1,20 +1,20 @@
-import { URL } from 'url';
-import * as Bull from 'bull';
-import * as httpSignature from 'http-signature';
-import perform from '@/remote/activitypub/perform';
-import Logger from '@/services/logger';
-import { registerOrFetchInstanceDoc } from '@/services/register-or-fetch-instance-doc';
-import { Instances } from '@/models/index';
-import { apRequestChart, federationChart, instanceChart } from '@/services/chart/index';
-import { fetchMeta } from '@/misc/fetch-meta';
-import { toPuny, extractDbHost } from '@/misc/convert-host';
-import { getApId } from '@/remote/activitypub/type';
-import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata';
-import { InboxJobData } from '../types';
-import DbResolver from '@/remote/activitypub/db-resolver';
-import { resolvePerson } from '@/remote/activitypub/models/person';
-import { LdSignature } from '@/remote/activitypub/misc/ld-signature';
-import { StatusError } from '@/misc/fetch';
+import { URL } from 'node:url';
+import Bull from 'bull';
+import httpSignature from 'http-signature';
+import perform from '@/remote/activitypub/perform.js';
+import Logger from '@/services/logger.js';
+import { registerOrFetchInstanceDoc } from '@/services/register-or-fetch-instance-doc.js';
+import { Instances } from '@/models/index.js';
+import { apRequestChart, federationChart, instanceChart } from '@/services/chart/index.js';
+import { fetchMeta } from '@/misc/fetch-meta.js';
+import { toPuny, extractDbHost } from '@/misc/convert-host.js';
+import { getApId } from '@/remote/activitypub/type.js';
+import { fetchInstanceMetadata } from '@/services/fetch-instance-metadata.js';
+import { InboxJobData } from '../types.js';
+import DbResolver from '@/remote/activitypub/db-resolver.js';
+import { resolvePerson } from '@/remote/activitypub/models/person.js';
+import { LdSignature } from '@/remote/activitypub/misc/ld-signature.js';
+import { StatusError } from '@/misc/fetch.js';
const logger = new Logger('inbox');
diff --git a/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts b/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts
index 788383a0a3..7d71a20adb 100644
--- a/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts
+++ b/packages/backend/src/queue/processors/object-storage/clean-remote-files.ts
@@ -1,8 +1,8 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
-import { queueLogger } from '../../logger';
-import { deleteFileSync } from '@/services/drive/delete-file';
-import { DriveFiles } from '@/models/index';
+import { queueLogger } from '../../logger.js';
+import { deleteFileSync } from '@/services/drive/delete-file.js';
+import { DriveFiles } from '@/models/index.js';
import { MoreThan, Not, IsNull } from 'typeorm';
const logger = queueLogger.createSubLogger('clean-remote-files');
diff --git a/packages/backend/src/queue/processors/object-storage/delete-file.ts b/packages/backend/src/queue/processors/object-storage/delete-file.ts
index ed22968a27..c271e3ddd4 100644
--- a/packages/backend/src/queue/processors/object-storage/delete-file.ts
+++ b/packages/backend/src/queue/processors/object-storage/delete-file.ts
@@ -1,6 +1,6 @@
-import { ObjectStorageFileJobData } from '@/queue/types';
-import * as Bull from 'bull';
-import { deleteObjectStorageFile } from '@/services/drive/delete-file';
+import { ObjectStorageFileJobData } from '@/queue/types.js';
+import Bull from 'bull';
+import { deleteObjectStorageFile } from '@/services/drive/delete-file.js';
export default async (job: Bull.Job<ObjectStorageFileJobData>) => {
const key: string = job.data.key;
diff --git a/packages/backend/src/queue/processors/object-storage/index.ts b/packages/backend/src/queue/processors/object-storage/index.ts
index 0d9570e179..ae6c481fea 100644
--- a/packages/backend/src/queue/processors/object-storage/index.ts
+++ b/packages/backend/src/queue/processors/object-storage/index.ts
@@ -1,7 +1,7 @@
-import * as Bull from 'bull';
-import { ObjectStorageJobData } from '@/queue/types';
-import deleteFile from './delete-file';
-import cleanRemoteFiles from './clean-remote-files';
+import Bull from 'bull';
+import { ObjectStorageJobData } from '@/queue/types.js';
+import deleteFile from './delete-file.js';
+import cleanRemoteFiles from './clean-remote-files.js';
const jobs = {
deleteFile,
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/clean-charts.ts b/packages/backend/src/queue/processors/system/clean-charts.ts
index 3ae0f495f8..c9169d5acf 100644
--- a/packages/backend/src/queue/processors/system/clean-charts.ts
+++ b/packages/backend/src/queue/processors/system/clean-charts.ts
@@ -1,7 +1,7 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
-import { queueLogger } from '../../logger';
-import { activeUsersChart, driveChart, federationChart, hashtagChart, instanceChart, notesChart, perUserDriveChart, perUserFollowingChart, perUserNotesChart, perUserReactionsChart, usersChart, apRequestChart } from '@/services/chart/index';
+import { queueLogger } from '../../logger.js';
+import { activeUsersChart, driveChart, federationChart, hashtagChart, instanceChart, notesChart, perUserDriveChart, perUserFollowingChart, perUserNotesChart, perUserReactionsChart, usersChart, apRequestChart } from '@/services/chart/index.js';
const logger = queueLogger.createSubLogger('clean-charts');
diff --git a/packages/backend/src/queue/processors/system/index.ts b/packages/backend/src/queue/processors/system/index.ts
index 1513ea4a84..f90f6efafd 100644
--- a/packages/backend/src/queue/processors/system/index.ts
+++ b/packages/backend/src/queue/processors/system/index.ts
@@ -1,12 +1,14 @@
-import * as Bull from 'bull';
-import { tickCharts } from './tick-charts';
-import { resyncCharts } from './resync-charts';
-import { cleanCharts } from './clean-charts';
+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>>) {
diff --git a/packages/backend/src/queue/processors/system/resync-charts.ts b/packages/backend/src/queue/processors/system/resync-charts.ts
index 78a70bb981..20012513af 100644
--- a/packages/backend/src/queue/processors/system/resync-charts.ts
+++ b/packages/backend/src/queue/processors/system/resync-charts.ts
@@ -1,7 +1,7 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
-import { queueLogger } from '../../logger';
-import { driveChart, notesChart, usersChart } from '@/services/chart/index';
+import { queueLogger } from '../../logger.js';
+import { driveChart, notesChart, usersChart } from '@/services/chart/index.js';
const logger = queueLogger.createSubLogger('resync-charts');
diff --git a/packages/backend/src/queue/processors/system/tick-charts.ts b/packages/backend/src/queue/processors/system/tick-charts.ts
index d53089f89c..13403f8f73 100644
--- a/packages/backend/src/queue/processors/system/tick-charts.ts
+++ b/packages/backend/src/queue/processors/system/tick-charts.ts
@@ -1,7 +1,7 @@
-import * as Bull from 'bull';
+import Bull from 'bull';
-import { queueLogger } from '../../logger';
-import { activeUsersChart, driveChart, federationChart, hashtagChart, instanceChart, notesChart, perUserDriveChart, perUserFollowingChart, perUserNotesChart, perUserReactionsChart, usersChart, apRequestChart } from '@/services/chart/index';
+import { queueLogger } from '../../logger.js';
+import { activeUsersChart, driveChart, federationChart, hashtagChart, instanceChart, notesChart, perUserDriveChart, perUserFollowingChart, perUserNotesChart, perUserReactionsChart, usersChart, apRequestChart } from '@/services/chart/index.js';
const logger = queueLogger.createSubLogger('tick-charts');