Add presets method to WorkflowService
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Fri, 7 Dec 2018 14:27:43 +0000 (15:27 +0100)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Fri, 7 Dec 2018 14:27:43 +0000 (15:27 +0100)
Feature #14490

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/models/link.ts
src/services/workflow-service/workflow-service.ts

index baaff658a205f0cc5427e4a7ff796ebd93b64255..c9e085be49ac34e535c34e73abae9d0d63ee13cf 100644 (file)
@@ -17,4 +17,5 @@ export enum LinkClass {
     STAR = 'star',
     TAG = 'tag',
     PERMISSION = 'permission',
+    PRESET = 'preset',
 }
\ No newline at end of file
index 57ad5fa40fc61394f084dcd8ca778ea7d82aa4b0..49fa4be9bb8e4fc1fd063e1dfafa8b5e896c9293 100644 (file)
@@ -6,9 +6,39 @@ import { AxiosInstance } from "axios";
 import { CommonResourceService } from "~/services/common-service/common-resource-service";
 import { WorkflowResource } from '~/models/workflow';
 import { ApiActions } from '~/services/api/api-actions';
+import { LinkService } from '~/services/link-service/link-service';
+import { FilterBuilder } from '~/services/api/filter-builder';
+import { LinkClass } from '~/models/link';
 
 export class WorkflowService extends CommonResourceService<WorkflowResource> {
+
+    private linksService = new LinkService(this.serverApi, this.actions);
+
     constructor(serverApi: AxiosInstance, actions: ApiActions) {
         super(serverApi, "workflows", actions);
     }
+
+    async presets(workflowUuid: string) {
+
+        const { items: presetLinks } = await this.linksService.list({
+
+            filters: new FilterBuilder()
+                .addEqual('tailUuid', workflowUuid)
+                .addEqual('linkClass', LinkClass.PRESET)
+                .getFilters()
+
+        });
+
+        const presetUuids = presetLinks.map(link => link.headUuid);
+
+        return this.list({
+
+            filters: new FilterBuilder()
+                .addIn('uuid', presetUuids)
+                .getFilters()
+
+        });
+
+    }
+
 }