1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { LinkResource } from "../../models/link";
6 import { GroupContentsResource, GroupContentsResourcePrefix } from "../groups-service/groups-service";
7 import { OrderBuilder } from "../../common/api/order-builder";
9 export class FavoriteOrderBuilder {
12 linkOrder = OrderBuilder.create<LinkResource>(),
13 contentOrder = OrderBuilder.create<GroupContentsResource>()) {
14 return new FavoriteOrderBuilder(linkOrder, contentOrder);
18 private linkOrder: OrderBuilder<LinkResource>,
19 private contentOrder: OrderBuilder<GroupContentsResource>
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);
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);
41 return this.linkOrder;
45 return this.contentOrder;