refactor: introduce bindThis decorator to bind this automaticaly

This commit is contained in:
syuilo
2022-12-04 15:03:09 +09:00
parent e73581f715
commit bbb49457f9
199 changed files with 969 additions and 96 deletions

View File

@ -16,6 +16,7 @@ import { ImportUserListsProcessorService } from './processors/ImportUserListsPro
import { ImportCustomEmojisProcessorService } from './processors/ImportCustomEmojisProcessorService.js';
import { DeleteAccountProcessorService } from './processors/DeleteAccountProcessorService.js';
import type Bull from 'bull';
import { bindThis } from '@/decorators.js';
@Injectable()
export class DbQueueProcessorsService {
@ -39,6 +40,7 @@ export class DbQueueProcessorsService {
) {
}
@bindThis
public start(q: Bull.Queue): void {
q.process('deleteDriveFiles', (job, done) => this.deleteDriveFilesProcessorService.process(job, done));
q.process('exportCustomEmojis', (job, done) => this.exportCustomEmojisProcessorService.process(job, done));

View File

@ -5,6 +5,7 @@ import type { Config } from '@/config.js';
import { CleanRemoteFilesProcessorService } from './processors/CleanRemoteFilesProcessorService.js';
import { DeleteFileProcessorService } from './processors/DeleteFileProcessorService.js';
import type Bull from 'bull';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ObjectStorageQueueProcessorsService {
@ -17,6 +18,7 @@ export class ObjectStorageQueueProcessorsService {
) {
}
@bindThis
public start(q: Bull.Queue): void {
q.process('deleteFile', 16, (job) => this.deleteFileProcessorService.process(job));
q.process('cleanRemoteFiles', 16, (job, done) => this.cleanRemoteFilesProcessorService.process(job, done));

View File

@ -1,6 +1,7 @@
import { Inject, Injectable } from '@nestjs/common';
import type Logger from '@/logger.js';
import { LoggerService } from '@/core/LoggerService.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class QueueLoggerService {

View File

@ -13,6 +13,7 @@ import { EndedPollNotificationProcessorService } from './processors/EndedPollNot
import { DeliverProcessorService } from './processors/DeliverProcessorService.js';
import { InboxProcessorService } from './processors/InboxProcessorService.js';
import { QueueLoggerService } from './QueueLoggerService.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class QueueProcessorService {
@ -35,6 +36,7 @@ export class QueueProcessorService {
this.logger = this.queueLoggerService.logger;
}
@bindThis
public start() {
function renderError(e: Error): any {
if (e) { // 何故かeがundefinedで来ることがある

View File

@ -7,6 +7,7 @@ import { CleanChartsProcessorService } from './processors/CleanChartsProcessorSe
import { CheckExpiredMutingsProcessorService } from './processors/CheckExpiredMutingsProcessorService.js';
import { CleanProcessorService } from './processors/CleanProcessorService.js';
import type Bull from 'bull';
import { bindThis } from '@/decorators.js';
@Injectable()
export class SystemQueueProcessorsService {
@ -22,6 +23,7 @@ export class SystemQueueProcessorsService {
) {
}
@bindThis
public start(q: Bull.Queue): void {
q.process('tickCharts', (job, done) => this.tickChartsProcessorService.process(job, done));
q.process('resyncCharts', (job, done) => this.resyncChartsProcessorService.process(job, done));

View File

@ -7,6 +7,7 @@ import type Logger from '@/logger.js';
import { GlobalEventService } from '@/core/GlobalEventService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import { bindThis } from '@/decorators.js';
@Injectable()
export class CheckExpiredMutingsProcessorService {
@ -25,6 +26,7 @@ export class CheckExpiredMutingsProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('check-expired-mutings');
}
@bindThis
public async process(job: Bull.Job<Record<string, unknown>>, done: () => void): Promise<void> {
this.logger.info('Checking expired mutings...');

View File

@ -17,6 +17,7 @@ import PerUserDriveChart from '@/core/chart/charts/per-user-drive.js';
import ApRequestChart from '@/core/chart/charts/ap-request.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import { bindThis } from '@/decorators.js';
@Injectable()
export class CleanChartsProcessorService {
@ -44,6 +45,7 @@ export class CleanChartsProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('clean-charts');
}
@bindThis
public async process(job: Bull.Job<Record<string, unknown>>, done: () => void): Promise<void> {
this.logger.info('Clean charts...');

View File

@ -6,6 +6,7 @@ import type { Config } from '@/config.js';
import type Logger from '@/logger.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import { bindThis } from '@/decorators.js';
@Injectable()
export class CleanProcessorService {
@ -23,6 +24,7 @@ export class CleanProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('clean');
}
@bindThis
public async process(job: Bull.Job<Record<string, unknown>>, done: () => void): Promise<void> {
this.logger.info('Cleaning...');

View File

@ -7,6 +7,7 @@ import type Logger from '@/logger.js';
import { DriveService } from '@/core/DriveService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import { bindThis } from '@/decorators.js';
@Injectable()
export class CleanRemoteFilesProcessorService {
@ -25,6 +26,7 @@ export class CleanRemoteFilesProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('clean-remote-files');
}
@bindThis
public async process(job: Bull.Job<Record<string, unknown>>, done: () => void): Promise<void> {
this.logger.info('Deleting cached remote files...');

View File

@ -11,6 +11,7 @@ import { EmailService } from '@/core/EmailService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserDeleteJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class DeleteAccountProcessorService {
@ -39,6 +40,7 @@ export class DeleteAccountProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('delete-account');
}
@bindThis
public async process(job: Bull.Job<DbUserDeleteJobData>): Promise<string | void> {
this.logger.info(`Deleting account of ${job.data.user.id} ...`);

View File

@ -8,6 +8,7 @@ import { DriveService } from '@/core/DriveService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class DeleteDriveFilesProcessorService {
@ -29,6 +30,7 @@ export class DeleteDriveFilesProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('delete-drive-files');
}
@bindThis
public async process(job: Bull.Job<DbUserJobData>, done: () => void): Promise<void> {
this.logger.info(`Deleting drive files of ${job.data.user.id} ...`);

View File

@ -6,6 +6,7 @@ import { DriveService } from '@/core/DriveService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { ObjectStorageFileJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class DeleteFileProcessorService {
@ -21,6 +22,7 @@ export class DeleteFileProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('delete-file');
}
@bindThis
public async process(job: Bull.Job<ObjectStorageFileJobData>): Promise<string> {
const key: string = job.data.key;

View File

@ -18,6 +18,7 @@ import { UtilityService } from '@/core/UtilityService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DeliverJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class DeliverProcessorService {
@ -50,6 +51,7 @@ export class DeliverProcessorService {
this.latest = null;
}
@bindThis
public async process(job: Bull.Job<DeliverJobData>): Promise<string> {
const { host } = new URL(job.data.to);

View File

@ -8,6 +8,7 @@ import { CreateNotificationService } from '@/core/CreateNotificationService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { EndedPollNotificationJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class EndedPollNotificationProcessorService {
@ -29,6 +30,7 @@ export class EndedPollNotificationProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('ended-poll-notification');
}
@bindThis
public async process(job: Bull.Job<EndedPollNotificationJobData>, done: () => void): Promise<void> {
const note = await this.notesRepository.findOneBy({ id: job.data.noteId });
if (note == null || !note.hasPoll) {

View File

@ -12,6 +12,7 @@ import { UtilityService } from '@/core/UtilityService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ExportBlockingProcessorService {
@ -34,6 +35,7 @@ export class ExportBlockingProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('export-blocking');
}
@bindThis
public async process(job: Bull.Job<DbUserJobData>, done: () => void): Promise<void> {
this.logger.info(`Exporting blocking of ${job.data.user.id} ...`);

View File

@ -14,6 +14,7 @@ import { createTemp, createTempDir } from '@/misc/create-temp.js';
import { DownloadService } from '@/core/DownloadService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ExportCustomEmojisProcessorService {
@ -36,6 +37,7 @@ export class ExportCustomEmojisProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('export-custom-emojis');
}
@bindThis
public async process(job: Bull.Job, done: () => void): Promise<void> {
this.logger.info('Exporting custom emojis ...');

View File

@ -13,6 +13,7 @@ import { UtilityService } from '@/core/UtilityService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ExportFollowingProcessorService {
@ -38,6 +39,7 @@ export class ExportFollowingProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('export-following');
}
@bindThis
public async process(job: Bull.Job<DbUserJobData>, done: () => void): Promise<void> {
this.logger.info(`Exporting following of ${job.data.user.id} ...`);

View File

@ -12,6 +12,7 @@ import { UtilityService } from '@/core/UtilityService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ExportMutingProcessorService {
@ -37,6 +38,7 @@ export class ExportMutingProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('export-muting');
}
@bindThis
public async process(job: Bull.Job<DbUserJobData>, done: () => void): Promise<void> {
this.logger.info(`Exporting muting of ${job.data.user.id} ...`);

View File

@ -13,6 +13,7 @@ import type { Note } from '@/models/entities/Note.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ExportNotesProcessorService {
@ -37,6 +38,7 @@ export class ExportNotesProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('export-notes');
}
@bindThis
public async process(job: Bull.Job<DbUserJobData>, done: () => void): Promise<void> {
this.logger.info(`Exporting notes of ${job.data.user.id} ...`);

View File

@ -12,6 +12,7 @@ import { UtilityService } from '@/core/UtilityService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ExportUserListsProcessorService {
@ -37,6 +38,7 @@ export class ExportUserListsProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('export-user-lists');
}
@bindThis
public async process(job: Bull.Job<DbUserJobData>, done: () => void): Promise<void> {
this.logger.info(`Exporting user lists of ${job.data.user.id} ...`);

View File

@ -12,6 +12,7 @@ import { UtilityService } from '@/core/UtilityService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserImportJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ImportBlockingProcessorService {
@ -39,6 +40,7 @@ export class ImportBlockingProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('import-blocking');
}
@bindThis
public async process(job: Bull.Job<DbUserImportJobData>, done: () => void): Promise<void> {
this.logger.info(`Importing blocking of ${job.data.user.id} ...`);

View File

@ -10,6 +10,7 @@ import { CustomEmojiService } from '@/core/CustomEmojiService.js';
import { createTempDir } from '@/misc/create-temp.js';
import { DriveService } from '@/core/DriveService.js';
import { DownloadService } from '@/core/DownloadService.js';
import { bindThis } from '@/decorators.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserImportJobData } from '../types.js';
@ -43,6 +44,7 @@ export class ImportCustomEmojisProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('import-custom-emojis');
}
@bindThis
public async process(job: Bull.Job<DbUserImportJobData>, done: () => void): Promise<void> {
this.logger.info('Importing custom emojis ...');

View File

@ -12,6 +12,7 @@ import { UtilityService } from '@/core/UtilityService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserImportJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ImportFollowingProcessorService {
@ -36,6 +37,7 @@ export class ImportFollowingProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('import-following');
}
@bindThis
public async process(job: Bull.Job<DbUserImportJobData>, done: () => void): Promise<void> {
this.logger.info(`Importing following of ${job.data.user.id} ...`);

View File

@ -12,6 +12,7 @@ import { UtilityService } from '@/core/UtilityService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserImportJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ImportMutingProcessorService {
@ -36,6 +37,7 @@ export class ImportMutingProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('import-muting');
}
@bindThis
public async process(job: Bull.Job<DbUserImportJobData>, done: () => void): Promise<void> {
this.logger.info(`Importing muting of ${job.data.user.id} ...`);

View File

@ -13,6 +13,7 @@ import { UtilityService } from '@/core/UtilityService.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DbUserImportJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ImportUserListsProcessorService {
@ -44,6 +45,7 @@ export class ImportUserListsProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('import-user-lists');
}
@bindThis
public async process(job: Bull.Job<DbUserImportJobData>, done: () => void): Promise<void> {
this.logger.info(`Importing user lists of ${job.data.user.id} ...`);

View File

@ -24,6 +24,7 @@ import { UtilityService } from '@/core/UtilityService.js';
import { ApPersonService } from '@/core/activitypub/models/ApPersonService.js';
import { LdSignatureService } from '@/core/activitypub/LdSignatureService.js';
import { ApInboxService } from '@/core/activitypub/ApInboxService.js';
import { bindThis } from '@/decorators.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { DeliverJobData, InboxJobData } from '../types.js';
@ -60,6 +61,7 @@ export class InboxProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('inbox');
}
@bindThis
public async process(job: Bull.Job<InboxJobData>): Promise<string> {
const signature = job.data.signature; // HTTP-signature
const activity = job.data.activity;

View File

@ -17,6 +17,7 @@ import PerUserDriveChart from '@/core/chart/charts/per-user-drive.js';
import ApRequestChart from '@/core/chart/charts/ap-request.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import { bindThis } from '@/decorators.js';
@Injectable()
export class ResyncChartsProcessorService {
@ -44,6 +45,7 @@ export class ResyncChartsProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('resync-charts');
}
@bindThis
public async process(job: Bull.Job<Record<string, unknown>>, done: () => void): Promise<void> {
this.logger.info('Resync charts...');

View File

@ -17,6 +17,7 @@ import PerUserDriveChart from '@/core/chart/charts/per-user-drive.js';
import ApRequestChart from '@/core/chart/charts/ap-request.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import { bindThis } from '@/decorators.js';
@Injectable()
export class TickChartsProcessorService {
@ -44,6 +45,7 @@ export class TickChartsProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('tick-charts');
}
@bindThis
public async process(job: Bull.Job<Record<string, unknown>>, done: () => void): Promise<void> {
this.logger.info('Tick charts...');

View File

@ -9,6 +9,7 @@ import { StatusError } from '@/misc/status-error.js';
import { QueueLoggerService } from '../QueueLoggerService.js';
import type Bull from 'bull';
import type { WebhookDeliverJobData } from '../types.js';
import { bindThis } from '@/decorators.js';
@Injectable()
export class WebhookDeliverProcessorService {
@ -27,6 +28,7 @@ export class WebhookDeliverProcessorService {
this.logger = this.queueLoggerService.logger.createSubLogger('webhook');
}
@bindThis
public async process(job: Bull.Job<WebhookDeliverJobData>): Promise<string> {
try {
this.logger.debug(`delivering ${job.data.webhookId}`);