Merge branch 'master'
[arvados-workbench2.git] / src / services / favorite-service / favorite-service.ts
index 3d852ce5abd8d67cab0ece40f70bfd32a2a02c90..d075b79602dc92deba70b116d08b808726eaf620 100644 (file)
@@ -2,13 +2,18 @@
 //
 // SPDX-License-Identifier: AGPL-3.0
 
-import LinkService from "../link-service/link-service";
-import GroupsService, { GroupContentsResource } from "../groups-service/groups-service";
+import { LinkService } from "../link-service/link-service";
+import { GroupsService, GroupContentsResource } from "../groups-service/groups-service";
 import { LinkResource, LinkClass } from "../../models/link";
-import FilterBuilder from "../../common/api/filter-builder";
+import { FilterBuilder } from "../../common/api/filter-builder";
 import { ListArguments, ListResults } from "../../common/api/common-resource-service";
+import { OrderBuilder } from "../../common/api/order-builder";
 
-export default class FavoriteService {
+export interface FavoriteListArguments extends ListArguments {
+    filters?: FilterBuilder<LinkResource>;
+    order?: OrderBuilder<LinkResource>;
+}
+export class FavoriteService {
     constructor(
         private linkService: LinkService,
         private groupsService: GroupsService
@@ -37,7 +42,7 @@ export default class FavoriteService {
                 results.items.map(item => this.linkService.delete(item.uuid))));
     }
 
-    list(userUuid: string, args: ListArguments = {}): Promise<ListResults<GroupContentsResource>> {
+    list(userUuid: string, args: FavoriteListArguments = {}): Promise<ListResults<GroupContentsResource>> {
         const listFilter = FilterBuilder
             .create<LinkResource>()
             .addEqual('tailUuid', userUuid)
@@ -53,7 +58,8 @@ export default class FavoriteService {
                 return this.groupsService.contents(userUuid, {
                     limit: args.limit,
                     offset: args.offset,
-                    filters: FilterBuilder.create<GroupContentsResource>().addIn('uuid', uuids)
+                    filters: FilterBuilder.create<GroupContentsResource>().addIn('uuid', uuids),
+                    recursive: true
                 });
             });
     }