13c60ad3140168b499243f50a36c73c3681e7367
[arvados-workbench2.git] / src / services / project-service / project-service.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { GroupsService, ContentsArguments } from "../groups-service/groups-service";
6 import { ProjectResource } from "../../models/project";
7 import { GroupClass } from "../../models/group";
8 import { ListArguments } from "../../common/api/common-resource-service";
9 import { FilterBuilder } from "../../common/api/filter-builder";
10
11 export class ProjectService extends GroupsService<ProjectResource> {
12
13     create(data: Partial<ProjectResource>) {
14         const projectData = { ...data, groupClass: GroupClass.PROJECT };
15         return super.create(projectData);
16     }
17
18     list(args: ListArguments = {}) {
19         return super.list({
20             ...args,
21             filters: this.addProjectFilter(args.filters)
22         });
23     }
24
25     private addProjectFilter(filters?: FilterBuilder) {
26         return FilterBuilder
27             .create()
28             .concat(filters
29                 ? filters
30                 : FilterBuilder.create())
31             .concat(FilterBuilder
32                 .create()
33                 .addEqual("groupClass", GroupClass.PROJECT));
34     }
35 }