1
0
Fork 0
mirror of https://github.com/immich-app/immich.git synced 2025-01-01 08:31:59 +00:00

feat(server): resume queues (#2104)

* feat(server): resume queues

* chore: regenerate open-api
This commit is contained in:
Jason Rasmussen 2023-03-28 14:25:22 -04:00 committed by GitHub
parent 8563bd463c
commit 9adbbd42be
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 18 additions and 0 deletions

Binary file not shown.

View file

@ -4141,6 +4141,7 @@
"enum": [
"start",
"pause",
"resume",
"empty"
]
},

View file

@ -12,6 +12,7 @@ export enum QueueName {
export enum JobCommand {
START = 'start',
PAUSE = 'pause',
RESUME = 'resume',
EMPTY = 'empty',
}

View file

@ -69,6 +69,7 @@ export const IJobRepository = 'IJobRepository';
export interface IJobRepository {
queue(item: JobItem): Promise<void>;
pause(name: QueueName): Promise<void>;
resume(name: QueueName): Promise<void>;
empty(name: QueueName): Promise<void>;
isActive(name: QueueName): Promise<boolean>;
getJobCounts(name: QueueName): Promise<JobCounts>;

View file

@ -93,6 +93,12 @@ describe(JobService.name, () => {
expect(jobMock.pause).toHaveBeenCalledWith(QueueName.METADATA_EXTRACTION);
});
it('should handle a resume command', async () => {
await sut.handleCommand(QueueName.METADATA_EXTRACTION, { command: JobCommand.RESUME, force: false });
expect(jobMock.resume).toHaveBeenCalledWith(QueueName.METADATA_EXTRACTION);
});
it('should handle an empty command', async () => {
await sut.handleCommand(QueueName.METADATA_EXTRACTION, { command: JobCommand.EMPTY, force: false });

View file

@ -21,6 +21,9 @@ export class JobService {
case JobCommand.PAUSE:
return this.jobRepository.pause(queueName);
case JobCommand.RESUME:
return this.jobRepository.resume(queueName);
case JobCommand.EMPTY:
return this.jobRepository.empty(queueName);
}

View file

@ -4,6 +4,7 @@ export const newJobRepositoryMock = (): jest.Mocked<IJobRepository> => {
return {
empty: jest.fn(),
pause: jest.fn(),
resume: jest.fn(),
queue: jest.fn().mockImplementation(() => Promise.resolve()),
isActive: jest.fn(),
getJobCounts: jest.fn(),

View file

@ -45,6 +45,10 @@ export class JobRepository implements IJobRepository {
return this.queueMap[name].pause();
}
resume(name: QueueName) {
return this.queueMap[name].resume();
}
empty(name: QueueName) {
return this.queueMap[name].empty();
}

View file

@ -1222,6 +1222,7 @@ export interface GetAssetCountByTimeBucketDto {
export const JobCommand = {
Start: 'start',
Pause: 'pause',
Resume: 'resume',
Empty: 'empty'
} as const;