Files
youtube-studio-flow/backend/src/worker.module.ts
T

58 lines
2.2 KiB
TypeScript

import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { BullModule } from '@nestjs/bullmq';
import { PrismaModule } from './shared/prisma/prisma.module';
import { RenderEngineModule } from './shared/render-engine/render-engine.module';
import { QuotaModule } from './shared/quota/quota.module';
import { AuditModule } from './shared/audit/audit.module';
import { YouTubeSyncModule } from './modules/youtube-sync/youtube-sync.module';
import { BulkJobsModule } from './modules/bulk-jobs/bulk-jobs.module';
import { LintingModule } from './modules/linting/linting.module';
import { ImportsModule } from './modules/imports/imports.module';
import { QUEUES } from './queues/queues.constants';
import { YouTubeSyncProcessor } from './queues/processors/youtube-sync.processor';
import { BulkMetadataProcessor } from './queues/processors/bulk-metadata.processor';
import { RenderProcessor } from './queues/processors/render.processor';
import { LintProcessor } from './queues/processors/lint.processor';
import { ImportProcessor } from './queues/processors/import.processor';
import { ConflictDetectionProcessor } from './queues/processors/conflict-detection.processor';
import { ConflictDetectionScheduler } from './queues/schedulers/conflict-detection.scheduler';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
BullModule.forRootAsync({
useFactory: (config: ConfigService) => ({
connection: { url: config.get<string>('REDIS_URL') ?? 'redis://localhost:6379' },
}),
inject: [ConfigService],
}),
BullModule.registerQueue(
{ name: QUEUES.YOUTUBE_SYNC },
{ name: QUEUES.CONFLICT_DETECTION },
{ name: QUEUES.BULK_METADATA },
{ name: QUEUES.RENDER },
{ name: QUEUES.LINT },
{ name: QUEUES.IMPORT },
),
PrismaModule,
RenderEngineModule,
QuotaModule,
AuditModule,
YouTubeSyncModule,
BulkJobsModule,
LintingModule,
ImportsModule,
],
providers: [
YouTubeSyncProcessor,
BulkMetadataProcessor,
RenderProcessor,
LintProcessor,
ImportProcessor,
ConflictDetectionProcessor,
ConflictDetectionScheduler,
],
})
export class WorkerModule {}