Add typescript paths to top level folders
[arvados-workbench2.git] / src / services / favorite-service / favorite-order-builder.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { LinkResource } from "~/models/link";
6 import { GroupContentsResource, GroupContentsResourcePrefix } from "../groups-service/groups-service";
7 import { OrderBuilder } from "~/common/api/order-builder";
8
9 export class FavoriteOrderBuilder {
10
11     static create(
12         linkOrder = OrderBuilder.create<LinkResource>(),
13         contentOrder = OrderBuilder.create<GroupContentsResource>()) {
14         return new FavoriteOrderBuilder(linkOrder, contentOrder);
15     }
16
17     private constructor(
18         private linkOrder: OrderBuilder<LinkResource>,
19         private contentOrder: OrderBuilder<GroupContentsResource>
20     ) { }
21
22     addAsc(attribute: "name") {
23         const linkOrder = this.linkOrder.addAsc(attribute);
24         const contentOrder = this.contentOrder
25             .concat(OrderBuilder.create<GroupContentsResource>(GroupContentsResourcePrefix.COLLECTION).addAsc(attribute))
26             .concat(OrderBuilder.create<GroupContentsResource>(GroupContentsResourcePrefix.PROCESS).addAsc(attribute))
27             .concat(OrderBuilder.create<GroupContentsResource>(GroupContentsResourcePrefix.PROJECT).addAsc(attribute));
28         return FavoriteOrderBuilder.create(linkOrder, contentOrder);
29     }
30
31     addDesc(attribute: "name") {
32         const linkOrder = this.linkOrder.addDesc(attribute);
33         const contentOrder = this.contentOrder
34             .concat(OrderBuilder.create<GroupContentsResource>(GroupContentsResourcePrefix.COLLECTION).addDesc(attribute))
35             .concat(OrderBuilder.create<GroupContentsResource>(GroupContentsResourcePrefix.PROCESS).addDesc(attribute))
36             .concat(OrderBuilder.create<GroupContentsResource>(GroupContentsResourcePrefix.PROJECT).addDesc(attribute));
37         return FavoriteOrderBuilder.create(linkOrder, contentOrder);
38     }
39
40     getLinkOrder() {
41         return this.linkOrder;
42     }
43
44     getContentOrder() {
45         return this.contentOrder;
46     }
47
48 }