diff --git a/mobile/openapi/README.md b/mobile/openapi/README.md index b36bab888..3663ca130 100644 Binary files a/mobile/openapi/README.md and b/mobile/openapi/README.md differ diff --git a/mobile/openapi/doc/JobApi.md b/mobile/openapi/doc/JobApi.md index b1fe36e44..c50adbead 100644 Binary files a/mobile/openapi/doc/JobApi.md and b/mobile/openapi/doc/JobApi.md differ diff --git a/mobile/openapi/lib/api/job_api.dart b/mobile/openapi/lib/api/job_api.dart index 7e4037832..6e1aa3c19 100644 Binary files a/mobile/openapi/lib/api/job_api.dart and b/mobile/openapi/lib/api/job_api.dart differ diff --git a/mobile/openapi/test/job_api_test.dart b/mobile/openapi/test/job_api_test.dart index 54d9a510d..c30811bb0 100644 Binary files a/mobile/openapi/test/job_api_test.dart and b/mobile/openapi/test/job_api_test.dart differ diff --git a/server/immich-openapi-specs.json b/server/immich-openapi-specs.json index 22d0c0d4d..ab6e5d00d 100644 --- a/server/immich-openapi-specs.json +++ b/server/immich-openapi-specs.json @@ -2387,12 +2387,12 @@ ] } }, - "/jobs/{jobId}": { + "/jobs/{id}": { "put": { "operationId": "sendJobCommand", "parameters": [ { - "name": "jobId", + "name": "id", "required": true, "in": "path", "schema": { diff --git a/server/src/domain/job/dto/job-id.dto.ts b/server/src/domain/job/dto/job-id.dto.ts index 28e8d4004..3fd001406 100644 --- a/server/src/domain/job/dto/job-id.dto.ts +++ b/server/src/domain/job/dto/job-id.dto.ts @@ -6,5 +6,5 @@ export class JobIdDto { @IsNotEmpty() @IsEnum(QueueName) @ApiProperty({ type: String, enum: QueueName, enumName: 'JobName' }) - jobId!: QueueName; + id!: QueueName; } diff --git a/server/src/domain/job/job.service.ts b/server/src/domain/job/job.service.ts index 1fedcde42..4d819191d 100644 --- a/server/src/domain/job/job.service.ts +++ b/server/src/domain/job/job.service.ts @@ -23,22 +23,28 @@ export class JobService { this.configCore = new SystemConfigCore(configRepository); } - handleCommand(queueName: QueueName, dto: JobCommandDto): Promise { + async handleCommand(queueName: QueueName, dto: JobCommandDto): Promise { this.logger.debug(`Handling command: queue=${queueName},force=${dto.force}`); switch (dto.command) { case JobCommand.START: - return this.start(queueName, dto); + await this.start(queueName, dto); + break; case JobCommand.PAUSE: - return this.jobRepository.pause(queueName); + await this.jobRepository.pause(queueName); + break; case JobCommand.RESUME: - return this.jobRepository.resume(queueName); + await this.jobRepository.resume(queueName); + break; case JobCommand.EMPTY: - return this.jobRepository.empty(queueName); + await this.jobRepository.empty(queueName); + break; } + + return this.getJobStatus(queueName); } async getJobStatus(queueName: QueueName): Promise { diff --git a/server/src/immich/controllers/asset.controller.ts b/server/src/immich/controllers/asset.controller.ts index 62e132acf..069474c92 100644 --- a/server/src/immich/controllers/asset.controller.ts +++ b/server/src/immich/controllers/asset.controller.ts @@ -14,7 +14,7 @@ import { MemoryLaneResponseDto } from '@app/domain/asset/response-dto/memory-lan export class AssetController { constructor(private service: AssetService) {} - @Get('/map-marker') + @Get('map-marker') getMapMarkers(@GetAuthUser() authUser: AuthUserDto, @Query() options: MapMarkerDto): Promise { return this.service.getMapMarkers(authUser, options); } diff --git a/server/src/immich/controllers/auth.controller.ts b/server/src/immich/controllers/auth.controller.ts index 420835715..f952c8996 100644 --- a/server/src/immich/controllers/auth.controller.ts +++ b/server/src/immich/controllers/auth.controller.ts @@ -28,7 +28,7 @@ import { UUIDParamDto } from './dto/uuid-param.dto'; @Authenticated() @UseValidation() export class AuthController { - constructor(private readonly service: AuthService) {} + constructor(private service: AuthService) {} @PublicRoute() @Post('login') diff --git a/server/src/immich/controllers/job.controller.ts b/server/src/immich/controllers/job.controller.ts index 310e3ed6e..c4d88c6c0 100644 --- a/server/src/immich/controllers/job.controller.ts +++ b/server/src/immich/controllers/job.controller.ts @@ -16,9 +16,8 @@ export class JobController { return this.service.getAllJobsStatus(); } - @Put('/:jobId') - async sendJobCommand(@Param() { jobId }: JobIdDto, @Body() dto: JobCommandDto): Promise { - await this.service.handleCommand(jobId, dto); - return this.service.getJobStatus(jobId); + @Put(':id') + sendJobCommand(@Param() { id }: JobIdDto, @Body() dto: JobCommandDto): Promise { + return this.service.handleCommand(id, dto); } } diff --git a/web/src/api/open-api/api.ts b/web/src/api/open-api/api.ts index 7876a9e5e..fd832c404 100644 --- a/web/src/api/open-api/api.ts +++ b/web/src/api/open-api/api.ts @@ -8053,18 +8053,18 @@ export const JobApiAxiosParamCreator = function (configuration?: Configuration) }, /** * - * @param {JobName} jobId + * @param {JobName} id * @param {JobCommandDto} jobCommandDto * @param {*} [options] Override http request option. * @throws {RequiredError} */ - sendJobCommand: async (jobId: JobName, jobCommandDto: JobCommandDto, options: AxiosRequestConfig = {}): Promise => { - // verify required parameter 'jobId' is not null or undefined - assertParamExists('sendJobCommand', 'jobId', jobId) + sendJobCommand: async (id: JobName, jobCommandDto: JobCommandDto, options: AxiosRequestConfig = {}): Promise => { + // verify required parameter 'id' is not null or undefined + assertParamExists('sendJobCommand', 'id', id) // verify required parameter 'jobCommandDto' is not null or undefined assertParamExists('sendJobCommand', 'jobCommandDto', jobCommandDto) - const localVarPath = `/jobs/{jobId}` - .replace(`{${"jobId"}}`, encodeURIComponent(String(jobId))); + const localVarPath = `/jobs/{id}` + .replace(`{${"id"}}`, encodeURIComponent(String(id))); // use dummy base URL string because the URL constructor only accepts absolute URLs. const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL); let baseOptions; @@ -8120,13 +8120,13 @@ export const JobApiFp = function(configuration?: Configuration) { }, /** * - * @param {JobName} jobId + * @param {JobName} id * @param {JobCommandDto} jobCommandDto * @param {*} [options] Override http request option. * @throws {RequiredError} */ - async sendJobCommand(jobId: JobName, jobCommandDto: JobCommandDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { - const localVarAxiosArgs = await localVarAxiosParamCreator.sendJobCommand(jobId, jobCommandDto, options); + async sendJobCommand(id: JobName, jobCommandDto: JobCommandDto, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> { + const localVarAxiosArgs = await localVarAxiosParamCreator.sendJobCommand(id, jobCommandDto, options); return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration); }, } @@ -8149,13 +8149,13 @@ export const JobApiFactory = function (configuration?: Configuration, basePath?: }, /** * - * @param {JobName} jobId + * @param {JobName} id * @param {JobCommandDto} jobCommandDto * @param {*} [options] Override http request option. * @throws {RequiredError} */ - sendJobCommand(jobId: JobName, jobCommandDto: JobCommandDto, options?: any): AxiosPromise { - return localVarFp.sendJobCommand(jobId, jobCommandDto, options).then((request) => request(axios, basePath)); + sendJobCommand(id: JobName, jobCommandDto: JobCommandDto, options?: any): AxiosPromise { + return localVarFp.sendJobCommand(id, jobCommandDto, options).then((request) => request(axios, basePath)); }, }; }; @@ -8171,7 +8171,7 @@ export interface JobApiSendJobCommandRequest { * @type {JobName} * @memberof JobApiSendJobCommand */ - readonly jobId: JobName + readonly id: JobName /** * @@ -8206,7 +8206,7 @@ export class JobApi extends BaseAPI { * @memberof JobApi */ public sendJobCommand(requestParameters: JobApiSendJobCommandRequest, options?: AxiosRequestConfig) { - return JobApiFp(this.configuration).sendJobCommand(requestParameters.jobId, requestParameters.jobCommandDto, options).then((request) => request(this.axios, this.basePath)); + return JobApiFp(this.configuration).sendJobCommand(requestParameters.id, requestParameters.jobCommandDto, options).then((request) => request(this.axios, this.basePath)); } } diff --git a/web/src/lib/components/admin-page/jobs/jobs-panel.svelte b/web/src/lib/components/admin-page/jobs/jobs-panel.svelte index 4337a1a5a..fee23f173 100644 --- a/web/src/lib/components/admin-page/jobs/jobs-panel.svelte +++ b/web/src/lib/components/admin-page/jobs/jobs-panel.svelte @@ -105,7 +105,7 @@ const title = jobDetails[jobId]?.title; try { - const { data } = await api.jobApi.sendJobCommand({ jobId, jobCommandDto: jobCommand }); + const { data } = await api.jobApi.sendJobCommand({ id: jobId, jobCommandDto: jobCommand }); jobs[jobId] = data; switch (jobCommand.command) {