Add typescript paths to top level folders
[arvados-workbench2.git] / src / services / tag-service / tag-service.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { LinkService } from "../link-service/link-service";
6 import { LinkClass } from "~/models/link";
7 import { FilterBuilder } from "~/common/api/filter-builder";
8 import { TagTailType, TagResource } from "~/models/tag";
9 import { OrderBuilder } from "~/common/api/order-builder";
10
11 export class TagService {
12
13     constructor(private linkService: LinkService) { }
14
15     create(uuid: string, data: { key: string; value: string } ) {
16         return this.linkService
17             .create({
18                 headUuid: uuid,
19                 tailUuid: TagTailType.COLLECTION,
20                 linkClass: LinkClass.TAG,
21                 name: '',
22                 properties: data
23             })
24             .then(tag => tag as TagResource );
25     }
26
27     list(uuid: string) {
28         const filters = FilterBuilder
29             .create()
30             .addEqual("headUuid", uuid)
31             .addEqual("tailUuid", TagTailType.COLLECTION)
32             .addEqual("linkClass", LinkClass.TAG);
33
34         const order = OrderBuilder
35             .create<TagResource>()
36             .addAsc('createdAt');
37
38         return this.linkService
39             .list({ filters, order })
40             .then(results => {
41                 return results.items.map((tag => tag as TagResource ));
42             });
43     }
44 }