2023-01-21 23:13:36 -05:00
|
|
|
import { JobName, QueueName } from './job.constants';
|
2023-03-02 21:47:08 -05:00
|
|
|
import {
|
|
|
|
|
IAssetJob,
|
|
|
|
|
IAssetUploadedJob,
|
2023-03-20 11:55:28 -04:00
|
|
|
IBaseJob,
|
2023-03-18 08:44:42 -05:00
|
|
|
IBulkEntityJob,
|
2023-03-02 21:47:08 -05:00
|
|
|
IDeleteFilesJob,
|
|
|
|
|
IReverseGeocodingJob,
|
|
|
|
|
IUserDeletionJob,
|
|
|
|
|
} from './job.interface';
|
2023-01-21 23:13:36 -05:00
|
|
|
|
|
|
|
|
export interface JobCounts {
|
|
|
|
|
active: number;
|
|
|
|
|
completed: number;
|
|
|
|
|
failed: number;
|
|
|
|
|
delayed: number;
|
|
|
|
|
waiting: number;
|
|
|
|
|
}
|
2023-01-21 11:11:55 -05:00
|
|
|
|
|
|
|
|
export type JobItem =
|
2023-03-20 11:55:28 -04:00
|
|
|
// Asset Upload
|
2023-01-21 11:11:55 -05:00
|
|
|
| { name: JobName.ASSET_UPLOADED; data: IAssetUploadedJob }
|
2023-03-20 11:55:28 -04:00
|
|
|
|
|
|
|
|
// Transcoding
|
|
|
|
|
| { name: JobName.QUEUE_VIDEO_CONVERSION; data: IBaseJob }
|
2023-02-25 09:12:03 -05:00
|
|
|
| { name: JobName.VIDEO_CONVERSION; data: IAssetJob }
|
2023-03-20 11:55:28 -04:00
|
|
|
|
|
|
|
|
// Thumbnails
|
|
|
|
|
| { name: JobName.QUEUE_GENERATE_THUMBNAILS; data: IBaseJob }
|
2023-02-25 09:12:03 -05:00
|
|
|
| { name: JobName.GENERATE_JPEG_THUMBNAIL; data: IAssetJob }
|
|
|
|
|
| { name: JobName.GENERATE_WEBP_THUMBNAIL; data: IAssetJob }
|
2023-03-20 11:55:28 -04:00
|
|
|
|
|
|
|
|
// User Deletion
|
2023-02-25 09:12:03 -05:00
|
|
|
| { name: JobName.USER_DELETE_CHECK }
|
2023-01-21 11:11:55 -05:00
|
|
|
| { name: JobName.USER_DELETION; data: IUserDeletionJob }
|
2023-03-20 11:55:28 -04:00
|
|
|
|
|
|
|
|
// Storage Template
|
2023-02-25 09:12:03 -05:00
|
|
|
| { name: JobName.STORAGE_TEMPLATE_MIGRATION }
|
|
|
|
|
| { name: JobName.SYSTEM_CONFIG_CHANGE }
|
2023-03-20 11:55:28 -04:00
|
|
|
|
|
|
|
|
// Metadata Extraction
|
|
|
|
|
| { name: JobName.QUEUE_METADATA_EXTRACTION; data: IBaseJob }
|
|
|
|
|
| { name: JobName.EXIF_EXTRACTION; data: IAssetUploadedJob }
|
2023-02-25 09:12:03 -05:00
|
|
|
| { name: JobName.EXTRACT_VIDEO_METADATA; data: IAssetUploadedJob }
|
2023-03-20 11:55:28 -04:00
|
|
|
| { name: JobName.REVERSE_GEOCODING; data: IReverseGeocodingJob }
|
|
|
|
|
|
|
|
|
|
// Object Tagging
|
|
|
|
|
| { name: JobName.QUEUE_OBJECT_TAGGING; data: IBaseJob }
|
|
|
|
|
| { name: JobName.DETECT_OBJECTS; data: IAssetJob }
|
|
|
|
|
| { name: JobName.CLASSIFY_IMAGE; data: IAssetJob }
|
|
|
|
|
|
|
|
|
|
// Clip Embedding
|
|
|
|
|
| { name: JobName.QUEUE_ENCODE_CLIP; data: IBaseJob }
|
2023-03-18 08:44:42 -05:00
|
|
|
| { name: JobName.ENCODE_CLIP; data: IAssetJob }
|
2023-03-20 11:55:28 -04:00
|
|
|
|
|
|
|
|
// Filesystem
|
2023-03-02 21:47:08 -05:00
|
|
|
| { name: JobName.DELETE_FILES; data: IDeleteFilesJob }
|
2023-03-20 11:55:28 -04:00
|
|
|
|
|
|
|
|
// Search
|
2023-03-02 21:47:08 -05:00
|
|
|
| { name: JobName.SEARCH_INDEX_ASSETS }
|
2023-03-18 08:44:42 -05:00
|
|
|
| { name: JobName.SEARCH_INDEX_ASSET; data: IBulkEntityJob }
|
2023-03-02 21:47:08 -05:00
|
|
|
| { name: JobName.SEARCH_INDEX_ALBUMS }
|
2023-03-18 08:44:42 -05:00
|
|
|
| { name: JobName.SEARCH_INDEX_ALBUM; data: IBulkEntityJob }
|
|
|
|
|
| { name: JobName.SEARCH_REMOVE_ASSET; data: IBulkEntityJob }
|
|
|
|
|
| { name: JobName.SEARCH_REMOVE_ALBUM; data: IBulkEntityJob };
|
2023-01-21 11:11:55 -05:00
|
|
|
|
|
|
|
|
export const IJobRepository = 'IJobRepository';
|
|
|
|
|
|
|
|
|
|
export interface IJobRepository {
|
2023-02-25 09:12:03 -05:00
|
|
|
queue(item: JobItem): Promise<void>;
|
2023-03-20 11:55:28 -04:00
|
|
|
pause(name: QueueName): Promise<void>;
|
2023-01-21 23:13:36 -05:00
|
|
|
empty(name: QueueName): Promise<void>;
|
|
|
|
|
isActive(name: QueueName): Promise<boolean>;
|
|
|
|
|
getJobCounts(name: QueueName): Promise<JobCounts>;
|
2023-01-21 11:11:55 -05:00
|
|
|
}
|