refactor(server): jobs and processors (#1787)
* refactor: jobs and processors * refactor: storage migration processor * fix: tests * fix: code warning * chore: ignore coverage from infra * fix: sync move asset logic between job core and asset core * refactor: move error handling inside of catch * refactor(server): job core into dedicated service calls * refactor: smart info * fix: tests * chore: smart info tests * refactor: use asset repository * refactor: thumbnail processor * chore: coverage reqs
This commit is contained in:
@@ -1,15 +1,4 @@
|
||||
import {
|
||||
IAssetUploadedJob,
|
||||
IJobRepository,
|
||||
IMachineLearningJob,
|
||||
IMetadataExtractionJob,
|
||||
IUserDeletionJob,
|
||||
IVideoTranscodeJob,
|
||||
JobCounts,
|
||||
JobItem,
|
||||
JobName,
|
||||
QueueName,
|
||||
} from '@app/domain';
|
||||
import { IAssetJob, IJobRepository, IMetadataExtractionJob, JobCounts, JobItem, JobName, QueueName } from '@app/domain';
|
||||
import { InjectQueue } from '@nestjs/bull';
|
||||
import { BadRequestException, Logger } from '@nestjs/common';
|
||||
import { Queue } from 'bull';
|
||||
@@ -18,14 +7,12 @@ export class JobRepository implements IJobRepository {
|
||||
private logger = new Logger(JobRepository.name);
|
||||
|
||||
constructor(
|
||||
@InjectQueue(QueueName.ASSET_UPLOADED) private assetUploaded: Queue<IAssetUploadedJob>,
|
||||
@InjectQueue(QueueName.BACKGROUND_TASK) private backgroundTask: Queue,
|
||||
@InjectQueue(QueueName.MACHINE_LEARNING) private machineLearning: Queue<IMachineLearningJob>,
|
||||
@InjectQueue(QueueName.MACHINE_LEARNING) private machineLearning: Queue<IAssetJob>,
|
||||
@InjectQueue(QueueName.METADATA_EXTRACTION) private metadataExtraction: Queue<IMetadataExtractionJob>,
|
||||
@InjectQueue(QueueName.CONFIG) private storageMigration: Queue,
|
||||
@InjectQueue(QueueName.STORAGE_TEMPLATE_MIGRATION) private storageTemplateMigration: Queue,
|
||||
@InjectQueue(QueueName.THUMBNAIL_GENERATION) private thumbnail: Queue,
|
||||
@InjectQueue(QueueName.USER_DELETION) private userDeletion: Queue<IUserDeletionJob>,
|
||||
@InjectQueue(QueueName.VIDEO_CONVERSION) private videoTranscode: Queue<IVideoTranscodeJob>,
|
||||
@InjectQueue(QueueName.VIDEO_CONVERSION) private videoTranscode: Queue<IAssetJob>,
|
||||
) {}
|
||||
|
||||
async isActive(name: QueueName): Promise<boolean> {
|
||||
@@ -41,13 +28,13 @@ export class JobRepository implements IJobRepository {
|
||||
return this.getQueue(name).getJobCounts();
|
||||
}
|
||||
|
||||
async add(item: JobItem): Promise<void> {
|
||||
async queue(item: JobItem): Promise<void> {
|
||||
switch (item.name) {
|
||||
case JobName.ASSET_UPLOADED:
|
||||
await this.assetUploaded.add(item.name, item.data, { jobId: item.data.asset.id });
|
||||
await this.backgroundTask.add(item.name, item.data, { jobId: item.data.asset.id });
|
||||
break;
|
||||
|
||||
case JobName.DELETE_FILE_ON_DISK:
|
||||
case JobName.DELETE_FILES:
|
||||
await this.backgroundTask.add(item.name, item.data);
|
||||
break;
|
||||
|
||||
@@ -62,18 +49,21 @@ export class JobRepository implements IJobRepository {
|
||||
await this.metadataExtraction.add(item.name, item.data);
|
||||
break;
|
||||
|
||||
case JobName.TEMPLATE_MIGRATION:
|
||||
case JobName.CONFIG_CHANGE:
|
||||
await this.storageMigration.add(item.name, {});
|
||||
break;
|
||||
|
||||
case JobName.GENERATE_JPEG_THUMBNAIL:
|
||||
case JobName.GENERATE_WEBP_THUMBNAIL:
|
||||
await this.thumbnail.add(item.name, item.data);
|
||||
break;
|
||||
|
||||
case JobName.USER_DELETION:
|
||||
await this.userDeletion.add(item.name, item.data);
|
||||
await this.backgroundTask.add(item.name, item.data);
|
||||
break;
|
||||
|
||||
case JobName.STORAGE_TEMPLATE_MIGRATION:
|
||||
await this.storageTemplateMigration.add(item.name);
|
||||
break;
|
||||
|
||||
case JobName.SYSTEM_CONFIG_CHANGE:
|
||||
await this.backgroundTask.add(item.name, {});
|
||||
break;
|
||||
|
||||
case JobName.VIDEO_CONVERSION:
|
||||
@@ -88,14 +78,14 @@ export class JobRepository implements IJobRepository {
|
||||
|
||||
private getQueue(name: QueueName) {
|
||||
switch (name) {
|
||||
case QueueName.STORAGE_TEMPLATE_MIGRATION:
|
||||
return this.storageTemplateMigration;
|
||||
case QueueName.THUMBNAIL_GENERATION:
|
||||
return this.thumbnail;
|
||||
case QueueName.METADATA_EXTRACTION:
|
||||
return this.metadataExtraction;
|
||||
case QueueName.VIDEO_CONVERSION:
|
||||
return this.videoTranscode;
|
||||
case QueueName.CONFIG:
|
||||
return this.storageMigration;
|
||||
case QueueName.MACHINE_LEARNING:
|
||||
return this.machineLearning;
|
||||
default:
|
||||
|
||||
Reference in New Issue
Block a user