From fde410e2ac2f34410fc4047cf675d8ddd64b8bb3 Mon Sep 17 00:00:00 2001 From: Jason Rasmussen Date: Fri, 16 Jun 2023 15:36:07 -0400 Subject: [PATCH] refactor(server): send job command (#2777) * refactor: send job command * chore: open api --- mobile/openapi/README.md | Bin 17828 -> 17825 bytes mobile/openapi/doc/JobApi.md | Bin 4218 -> 4203 bytes mobile/openapi/lib/api/job_api.dart | Bin 3578 -> 3551 bytes mobile/openapi/test/job_api_test.dart | Bin 735 -> 732 bytes server/immich-openapi-specs.json | 4 +-- server/src/domain/job/dto/job-id.dto.ts | 2 +- server/src/domain/job/job.service.ts | 16 ++++++---- .../immich/controllers/asset.controller.ts | 2 +- .../src/immich/controllers/auth.controller.ts | 2 +- .../src/immich/controllers/job.controller.ts | 7 ++--- web/src/api/open-api/api.ts | 28 +++++++++--------- .../admin-page/jobs/jobs-panel.svelte | 2 +- 12 files changed, 34 insertions(+), 29 deletions(-) diff --git a/mobile/openapi/README.md b/mobile/openapi/README.md index b36bab88898f75fbc1c77ee4917ca703d469b596..3663ca1305a6eb2371e21d39d27161b776de8a84 100644 GIT binary patch delta 16 XcmZ3|&A70eaf6E-W9DWLxfpc-Gsp#Y delta 19 acmZ43&A6nSaf6E-OICi8=Vn*A7 { + 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) {