summaryrefslogtreecommitdiff
path: root/packages/backend/src/queue/processors/TickChartsProcessorService.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/queue/processors/TickChartsProcessorService.ts')
-rw-r--r--packages/backend/src/queue/processors/TickChartsProcessorService.ts68
1 files changed, 68 insertions, 0 deletions
diff --git a/packages/backend/src/queue/processors/TickChartsProcessorService.ts b/packages/backend/src/queue/processors/TickChartsProcessorService.ts
new file mode 100644
index 0000000000..d1ca3c4576
--- /dev/null
+++ b/packages/backend/src/queue/processors/TickChartsProcessorService.ts
@@ -0,0 +1,68 @@
+import { Inject, Injectable } from '@nestjs/common';
+import { In, MoreThan } from 'typeorm';
+import { DI } from '@/di-symbols.js';
+import { Config } from '@/config.js';
+import type Logger from '@/logger.js';
+import FederationChart from '@/core/chart/charts/federation.js';
+import NotesChart from '@/core/chart/charts/notes.js';
+import UsersChart from '@/core/chart/charts/users.js';
+import ActiveUsersChart from '@/core/chart/charts/active-users.js';
+import InstanceChart from '@/core/chart/charts/instance.js';
+import PerUserNotesChart from '@/core/chart/charts/per-user-notes.js';
+import DriveChart from '@/core/chart/charts/drive.js';
+import PerUserReactionsChart from '@/core/chart/charts/per-user-reactions.js';
+import HashtagChart from '@/core/chart/charts/hashtag.js';
+import PerUserFollowingChart from '@/core/chart/charts/per-user-following.js';
+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';
+
+@Injectable()
+export class TickChartsProcessorService {
+ #logger: Logger;
+
+ constructor(
+ @Inject(DI.config)
+ private config: Config,
+
+ private federationChart: FederationChart,
+ private notesChart: NotesChart,
+ private usersChart: UsersChart,
+ private activeUsersChart: ActiveUsersChart,
+ private instanceChart: InstanceChart,
+ private perUserNotesChart: PerUserNotesChart,
+ private driveChart: DriveChart,
+ private perUserReactionsChart: PerUserReactionsChart,
+ private hashtagChart: HashtagChart,
+ private perUserFollowingChart: PerUserFollowingChart,
+ private perUserDriveChart: PerUserDriveChart,
+ private apRequestChart: ApRequestChart,
+
+ private queueLoggerService: QueueLoggerService,
+ ) {
+ this.#logger = this.queueLoggerService.logger.createSubLogger('tick-charts');
+ }
+
+ public async process(job: Bull.Job<Record<string, unknown>>, done: () => void): Promise<void> {
+ this.#logger.info('Tick charts...');
+
+ await Promise.all([
+ this.federationChart.tick(false),
+ this.notesChart.tick(false),
+ this.usersChart.tick(false),
+ this.activeUsersChart.tick(false),
+ this.instanceChart.tick(false),
+ this.perUserNotesChart.tick(false),
+ this.driveChart.tick(false),
+ this.perUserReactionsChart.tick(false),
+ this.hashtagChart.tick(false),
+ this.perUserFollowingChart.tick(false),
+ this.perUserDriveChart.tick(false),
+ this.apRequestChart.tick(false),
+ ]);
+
+ this.#logger.succ('All charts successfully ticked.');
+ done();
+ }
+}