// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 import { LinkResource } from "~/models/link"; import { GroupContentsResource, GroupContentsResourcePrefix } from "../groups-service/groups-service"; import { OrderBuilder } from "~/common/api/order-builder"; export class FavoriteOrderBuilder { static create( linkOrder = OrderBuilder.create(), contentOrder = OrderBuilder.create()) { return new FavoriteOrderBuilder(linkOrder, contentOrder); } private constructor( private linkOrder: OrderBuilder, private contentOrder: OrderBuilder ) { } addAsc(attribute: "name") { const linkOrder = this.linkOrder.addAsc(attribute); const contentOrder = this.contentOrder .concat(OrderBuilder.create(GroupContentsResourcePrefix.COLLECTION).addAsc(attribute)) .concat(OrderBuilder.create(GroupContentsResourcePrefix.PROCESS).addAsc(attribute)) .concat(OrderBuilder.create(GroupContentsResourcePrefix.PROJECT).addAsc(attribute)); return FavoriteOrderBuilder.create(linkOrder, contentOrder); } addDesc(attribute: "name") { const linkOrder = this.linkOrder.addDesc(attribute); const contentOrder = this.contentOrder .concat(OrderBuilder.create(GroupContentsResourcePrefix.COLLECTION).addDesc(attribute)) .concat(OrderBuilder.create(GroupContentsResourcePrefix.PROCESS).addDesc(attribute)) .concat(OrderBuilder.create(GroupContentsResourcePrefix.PROJECT).addDesc(attribute)); return FavoriteOrderBuilder.create(linkOrder, contentOrder); } getLinkOrder() { return this.linkOrder; } getContentOrder() { return this.contentOrder; } }