Merge branch 'master' into 14490-workflow-presets
[arvados-workbench2.git] / src / services / workflow-service / workflow-service.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { AxiosInstance } from "axios";
6 import { CommonResourceService } from "~/services/common-service/common-resource-service";
7 import { WorkflowResource } from '~/models/workflow';
8 import { ApiActions } from '~/services/api/api-actions';
9 import { LinkService } from '~/services/link-service/link-service';
10 import { FilterBuilder } from '~/services/api/filter-builder';
11 import { LinkClass } from '~/models/link';
12
13 export class WorkflowService extends CommonResourceService<WorkflowResource> {
14
15     private linksService = new LinkService(this.serverApi, this.actions);
16
17     constructor(serverApi: AxiosInstance, actions: ApiActions) {
18         super(serverApi, "workflows", actions);
19     }
20
21     async presets(workflowUuid: string) {
22
23         const { items: presetLinks } = await this.linksService.list({
24
25             filters: new FilterBuilder()
26                 .addEqual('tailUuid', workflowUuid)
27                 .addEqual('linkClass', LinkClass.PRESET)
28                 .getFilters()
29
30         });
31
32         const presetUuids = presetLinks.map(link => link.headUuid);
33
34         return this.list({
35
36             filters: new FilterBuilder()
37                 .addIn('uuid', presetUuids)
38                 .getFilters()
39
40         });
41
42     }
43
44 }