Browse Source

Add support to immediately execute queue job

pull/3259/head
Thomas Kaul 1 year ago
parent
commit
864527e298
  1. 7
      apps/api/src/app/admin/queue/queue.controller.ts
  2. 4
      apps/api/src/app/admin/queue/queue.service.ts
  3. 9
      apps/client/src/app/components/admin-jobs/admin-jobs.component.ts
  4. 3
      apps/client/src/app/components/admin-jobs/admin-jobs.html
  5. 4
      apps/client/src/app/services/admin.service.ts

7
apps/api/src/app/admin/queue/queue.controller.ts

@ -46,4 +46,11 @@ export class QueueController {
public async deleteJob(@Param('id') id: string): Promise<void> {
return this.queueService.deleteJob(id);
}
@Get('job/:id/execute')
@HasPermission(permissions.accessAdminControl)
@UseGuards(AuthGuard('jwt'), HasPermissionGuard)
public async executeJob(@Param('id') id: string): Promise<void> {
return this.queueService.executeJob(id);
}
}

4
apps/api/src/app/admin/queue/queue.service.ts

@ -32,6 +32,10 @@ export class QueueService {
}
}
public async executeJob(aId: string) {
return (await this.dataGatheringQueue.getJob(aId))?.promote();
}
public async getJobs({
limit = 1000,
status = QUEUE_JOB_STATUS_LIST

9
apps/client/src/app/components/admin-jobs/admin-jobs.component.ts

@ -98,6 +98,15 @@ export class AdminJobsComponent implements OnDestroy, OnInit {
});
}
public onExecuteJob(aId: string) {
this.adminService
.executeJob(aId)
.pipe(takeUntil(this.unsubscribeSubject))
.subscribe(() => {
this.fetchJobs();
});
}
public onViewData(aData: AdminJobs['jobs'][0]['data']) {
alert(JSON.stringify(aData, null, ' '));
}

3
apps/client/src/app/components/admin-jobs/admin-jobs.html

@ -147,6 +147,9 @@
>
<ng-container i18n>View Stacktrace</ng-container>
</button>
<button mat-menu-item (click)="onExecuteJob(element.id)">
<ng-container i18n>Execute Job</ng-container>
</button>
<button mat-menu-item (click)="onDeleteJob(element.id)">
<ng-container i18n>Delete Job</ng-container>
</button>

4
apps/client/src/app/services/admin.service.ts

@ -72,6 +72,10 @@ export class AdminService {
return this.http.delete<void>(`/api/v1/tag/${aId}`);
}
public executeJob(aId: string) {
return this.http.get<void>(`/api/v1/admin/queue/job/${aId}/execute`);
}
public fetchAdminData() {
return this.http.get<AdminData>('/api/v1/admin');
}

Loading…
Cancel
Save