mirror of
https://github.com/samsonjs/immich.git
synced 2026-04-27 15:07:45 +00:00
fix(server): add paused property to JobCountsDto (#2112)
This commit is contained in:
parent
76a07a3ebc
commit
eda9e580c9
11 changed files with 28 additions and 62 deletions
BIN
mobile/openapi/doc/JobCountsDto.md
generated
BIN
mobile/openapi/doc/JobCountsDto.md
generated
Binary file not shown.
BIN
mobile/openapi/lib/model/job_counts_dto.dart
generated
BIN
mobile/openapi/lib/model/job_counts_dto.dart
generated
Binary file not shown.
BIN
mobile/openapi/test/job_counts_dto_test.dart
generated
BIN
mobile/openapi/test/job_counts_dto_test.dart
generated
Binary file not shown.
|
|
@ -4074,6 +4074,9 @@
|
||||||
},
|
},
|
||||||
"waiting": {
|
"waiting": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"paused": {
|
||||||
|
"type": "integer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": [
|
"required": [
|
||||||
|
|
@ -4081,7 +4084,8 @@
|
||||||
"completed",
|
"completed",
|
||||||
"failed",
|
"failed",
|
||||||
"delayed",
|
"delayed",
|
||||||
"waiting"
|
"waiting",
|
||||||
|
"paused"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"AllJobStatusResponseDto": {
|
"AllJobStatusResponseDto": {
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ export interface JobCounts {
|
||||||
failed: number;
|
failed: number;
|
||||||
delayed: number;
|
delayed: number;
|
||||||
waiting: number;
|
waiting: number;
|
||||||
|
paused: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type JobItem =
|
export type JobItem =
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ describe(JobService.name, () => {
|
||||||
failed: 1,
|
failed: 1,
|
||||||
delayed: 1,
|
delayed: 1,
|
||||||
waiting: 1,
|
waiting: 1,
|
||||||
|
paused: 1,
|
||||||
});
|
});
|
||||||
|
|
||||||
await expect(sut.getAllJobsStatus()).resolves.toEqual({
|
await expect(sut.getAllJobsStatus()).resolves.toEqual({
|
||||||
|
|
@ -32,6 +33,7 @@ describe(JobService.name, () => {
|
||||||
delayed: 1,
|
delayed: 1,
|
||||||
failed: 1,
|
failed: 1,
|
||||||
waiting: 1,
|
waiting: 1,
|
||||||
|
paused: 1,
|
||||||
},
|
},
|
||||||
'clip-encoding-queue': {
|
'clip-encoding-queue': {
|
||||||
active: 1,
|
active: 1,
|
||||||
|
|
@ -39,6 +41,7 @@ describe(JobService.name, () => {
|
||||||
delayed: 1,
|
delayed: 1,
|
||||||
failed: 1,
|
failed: 1,
|
||||||
waiting: 1,
|
waiting: 1,
|
||||||
|
paused: 1,
|
||||||
},
|
},
|
||||||
'metadata-extraction-queue': {
|
'metadata-extraction-queue': {
|
||||||
active: 1,
|
active: 1,
|
||||||
|
|
@ -46,6 +49,7 @@ describe(JobService.name, () => {
|
||||||
delayed: 1,
|
delayed: 1,
|
||||||
failed: 1,
|
failed: 1,
|
||||||
waiting: 1,
|
waiting: 1,
|
||||||
|
paused: 1,
|
||||||
},
|
},
|
||||||
'object-tagging-queue': {
|
'object-tagging-queue': {
|
||||||
active: 1,
|
active: 1,
|
||||||
|
|
@ -53,6 +57,7 @@ describe(JobService.name, () => {
|
||||||
delayed: 1,
|
delayed: 1,
|
||||||
failed: 1,
|
failed: 1,
|
||||||
waiting: 1,
|
waiting: 1,
|
||||||
|
paused: 1,
|
||||||
},
|
},
|
||||||
'search-queue': {
|
'search-queue': {
|
||||||
active: 1,
|
active: 1,
|
||||||
|
|
@ -60,6 +65,7 @@ describe(JobService.name, () => {
|
||||||
delayed: 1,
|
delayed: 1,
|
||||||
failed: 1,
|
failed: 1,
|
||||||
waiting: 1,
|
waiting: 1,
|
||||||
|
paused: 1,
|
||||||
},
|
},
|
||||||
'storage-template-migration-queue': {
|
'storage-template-migration-queue': {
|
||||||
active: 1,
|
active: 1,
|
||||||
|
|
@ -67,6 +73,7 @@ describe(JobService.name, () => {
|
||||||
delayed: 1,
|
delayed: 1,
|
||||||
failed: 1,
|
failed: 1,
|
||||||
waiting: 1,
|
waiting: 1,
|
||||||
|
paused: 1,
|
||||||
},
|
},
|
||||||
'thumbnail-generation-queue': {
|
'thumbnail-generation-queue': {
|
||||||
active: 1,
|
active: 1,
|
||||||
|
|
@ -74,6 +81,7 @@ describe(JobService.name, () => {
|
||||||
delayed: 1,
|
delayed: 1,
|
||||||
failed: 1,
|
failed: 1,
|
||||||
waiting: 1,
|
waiting: 1,
|
||||||
|
paused: 1,
|
||||||
},
|
},
|
||||||
'video-conversion-queue': {
|
'video-conversion-queue': {
|
||||||
active: 1,
|
active: 1,
|
||||||
|
|
@ -81,6 +89,7 @@ describe(JobService.name, () => {
|
||||||
delayed: 1,
|
delayed: 1,
|
||||||
failed: 1,
|
failed: 1,
|
||||||
waiting: 1,
|
waiting: 1,
|
||||||
|
paused: 1,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,8 @@ export class JobCountsDto {
|
||||||
delayed!: number;
|
delayed!: number;
|
||||||
@ApiProperty({ type: 'integer' })
|
@ApiProperty({ type: 'integer' })
|
||||||
waiting!: number;
|
waiting!: number;
|
||||||
|
@ApiProperty({ type: 'integer' })
|
||||||
|
paused!: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class AllJobStatusResponseDto implements Record<QueueName, JobCountsDto> {
|
export class AllJobStatusResponseDto implements Record<QueueName, JobCountsDto> {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import {
|
||||||
} from '@app/domain';
|
} from '@app/domain';
|
||||||
import { InjectQueue } from '@nestjs/bull';
|
import { InjectQueue } from '@nestjs/bull';
|
||||||
import { Logger } from '@nestjs/common';
|
import { Logger } from '@nestjs/common';
|
||||||
import { Queue } from 'bull';
|
import { Queue, type JobCounts as BullJobCounts } from 'bull';
|
||||||
|
|
||||||
export class JobRepository implements IJobRepository {
|
export class JobRepository implements IJobRepository {
|
||||||
private logger = new Logger(JobRepository.name);
|
private logger = new Logger(JobRepository.name);
|
||||||
|
|
@ -54,7 +54,9 @@ export class JobRepository implements IJobRepository {
|
||||||
}
|
}
|
||||||
|
|
||||||
getJobCounts(name: QueueName): Promise<JobCounts> {
|
getJobCounts(name: QueueName): Promise<JobCounts> {
|
||||||
return this.queueMap[name].getJobCounts();
|
// Typecast needed because the `paused` key is missing from Bull's
|
||||||
|
// type definition. Can be removed once fixed upstream.
|
||||||
|
return this.queueMap[name].getJobCounts() as Promise<BullJobCounts & { paused: number }>;
|
||||||
}
|
}
|
||||||
|
|
||||||
async queue(item: JobItem): Promise<void> {
|
async queue(item: JobItem): Promise<void> {
|
||||||
|
|
|
||||||
59
server/package-lock.json
generated
59
server/package-lock.json
generated
|
|
@ -6,7 +6,7 @@
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "immich",
|
"name": "immich",
|
||||||
"version": "1.51.0",
|
"version": "1.52.0",
|
||||||
"license": "UNLICENSED",
|
"license": "UNLICENSED",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime": "^7.20.13",
|
"@babel/runtime": "^7.20.13",
|
||||||
|
|
@ -60,7 +60,6 @@
|
||||||
"@openapitools/openapi-generator-cli": "2.5.1",
|
"@openapitools/openapi-generator-cli": "2.5.1",
|
||||||
"@types/archiver": "^5.3.1",
|
"@types/archiver": "^5.3.1",
|
||||||
"@types/bcrypt": "^5.0.0",
|
"@types/bcrypt": "^5.0.0",
|
||||||
"@types/bull": "^3.15.9",
|
|
||||||
"@types/cookie-parser": "^1.4.3",
|
"@types/cookie-parser": "^1.4.3",
|
||||||
"@types/cron": "^2.0.0",
|
"@types/cron": "^2.0.0",
|
||||||
"@types/express": "^4.17.13",
|
"@types/express": "^4.17.13",
|
||||||
|
|
@ -2511,16 +2510,6 @@
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/bull": {
|
|
||||||
"version": "3.15.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/bull/-/bull-3.15.9.tgz",
|
|
||||||
"integrity": "sha512-MPUcyPPQauAmynoO3ezHAmCOhbB0pWmYyijr/5ctaCqhbKWsjW0YCod38ZcLzUBprosfZ9dPqfYIcfdKjk7RNQ==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@types/ioredis": "*",
|
|
||||||
"@types/redis": "^2.8.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@types/component-emitter": {
|
"node_modules/@types/component-emitter": {
|
||||||
"version": "1.2.11",
|
"version": "1.2.11",
|
||||||
"resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
|
"resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
|
||||||
|
|
@ -2671,15 +2660,6 @@
|
||||||
"@types/through": "*"
|
"@types/through": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/ioredis": {
|
|
||||||
"version": "4.28.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.8.tgz",
|
|
||||||
"integrity": "sha512-mULOyO2smtvkE1zmzRRA4P0+1UjEqusi014kXOL1q3CY0RgqkR5/wKvv+vAJbPw2Q66wPyylKeevUy+m/FaRMg==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@types/node": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@types/istanbul-lib-coverage": {
|
"node_modules/@types/istanbul-lib-coverage": {
|
||||||
"version": "2.0.4",
|
"version": "2.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
|
||||||
|
|
@ -2801,15 +2781,6 @@
|
||||||
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
|
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"node_modules/@types/redis": {
|
|
||||||
"version": "2.8.32",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/redis/-/redis-2.8.32.tgz",
|
|
||||||
"integrity": "sha512-7jkMKxcGq9p242exlbsVzuJb57KqHRhNl4dHoQu2Y5v9bCAbtIXXH0R3HleSQW4CTOqpHIYUW3t6tpUj4BVQ+w==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@types/node": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@types/semver": {
|
"node_modules/@types/semver": {
|
||||||
"version": "7.3.13",
|
"version": "7.3.13",
|
||||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
|
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
|
||||||
|
|
@ -13471,16 +13442,6 @@
|
||||||
"@types/node": "*"
|
"@types/node": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/bull": {
|
|
||||||
"version": "3.15.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/bull/-/bull-3.15.9.tgz",
|
|
||||||
"integrity": "sha512-MPUcyPPQauAmynoO3ezHAmCOhbB0pWmYyijr/5ctaCqhbKWsjW0YCod38ZcLzUBprosfZ9dPqfYIcfdKjk7RNQ==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"@types/ioredis": "*",
|
|
||||||
"@types/redis": "^2.8.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@types/component-emitter": {
|
"@types/component-emitter": {
|
||||||
"version": "1.2.11",
|
"version": "1.2.11",
|
||||||
"resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
|
"resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz",
|
||||||
|
|
@ -13631,15 +13592,6 @@
|
||||||
"@types/through": "*"
|
"@types/through": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/ioredis": {
|
|
||||||
"version": "4.28.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/ioredis/-/ioredis-4.28.8.tgz",
|
|
||||||
"integrity": "sha512-mULOyO2smtvkE1zmzRRA4P0+1UjEqusi014kXOL1q3CY0RgqkR5/wKvv+vAJbPw2Q66wPyylKeevUy+m/FaRMg==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"@types/node": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@types/istanbul-lib-coverage": {
|
"@types/istanbul-lib-coverage": {
|
||||||
"version": "2.0.4",
|
"version": "2.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz",
|
||||||
|
|
@ -13761,15 +13713,6 @@
|
||||||
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
|
"integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@types/redis": {
|
|
||||||
"version": "2.8.32",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/redis/-/redis-2.8.32.tgz",
|
|
||||||
"integrity": "sha512-7jkMKxcGq9p242exlbsVzuJb57KqHRhNl4dHoQu2Y5v9bCAbtIXXH0R3HleSQW4CTOqpHIYUW3t6tpUj4BVQ+w==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"@types/node": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"@types/semver": {
|
"@types/semver": {
|
||||||
"version": "7.3.13",
|
"version": "7.3.13",
|
||||||
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
|
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz",
|
||||||
|
|
|
||||||
|
|
@ -88,7 +88,6 @@
|
||||||
"@openapitools/openapi-generator-cli": "2.5.1",
|
"@openapitools/openapi-generator-cli": "2.5.1",
|
||||||
"@types/archiver": "^5.3.1",
|
"@types/archiver": "^5.3.1",
|
||||||
"@types/bcrypt": "^5.0.0",
|
"@types/bcrypt": "^5.0.0",
|
||||||
"@types/bull": "^3.15.9",
|
|
||||||
"@types/cookie-parser": "^1.4.3",
|
"@types/cookie-parser": "^1.4.3",
|
||||||
"@types/cron": "^2.0.0",
|
"@types/cron": "^2.0.0",
|
||||||
"@types/express": "^4.17.13",
|
"@types/express": "^4.17.13",
|
||||||
|
|
|
||||||
6
web/src/api/open-api/api.ts
generated
6
web/src/api/open-api/api.ts
generated
|
|
@ -1284,6 +1284,12 @@ export interface JobCountsDto {
|
||||||
* @memberof JobCountsDto
|
* @memberof JobCountsDto
|
||||||
*/
|
*/
|
||||||
'waiting': number;
|
'waiting': number;
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {number}
|
||||||
|
* @memberof JobCountsDto
|
||||||
|
*/
|
||||||
|
'paused': number;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue