1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 import { GroupsService } from "../groups-service/groups-service";
6 import { ProjectResource } from "~/models/project";
7 import { GroupClass } from "~/models/group";
8 import { ListArguments } from "~/services/common-service/common-service";
9 import { FilterBuilder, joinFilters } from "~/services/api/filter-builder";
10 import { TrashableResourceService } from '~/services/common-service/trashable-resource-service';
11 import { snakeCase } from 'lodash';
12 export class ProjectService extends GroupsService<ProjectResource> {
14 create(data: Partial<ProjectResource>) {
15 const projectData = { ...data, groupClass: GroupClass.PROJECT };
16 return super.create(projectData);
19 update(uuid: string, data: Partial<ProjectResource>) {
20 if (uuid && data && data.properties) {
21 const { properties } = data;
23 ...TrashableResourceService.mapKeys(snakeCase)(data),
26 return TrashableResourceService
29 .put<ProjectResource>(this.resourceType + uuid, mappedData),
34 return TrashableResourceService
37 .put<ProjectResource>(this.resourceType + uuid, data && TrashableResourceService.mapKeys(snakeCase)(data)),
42 list(args: ListArguments = {}) {
48 .addEqual("groupClass", GroupClass.PROJECT)