X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/f0d519637c997df11d5b1a1b32b3d9e4a2872325..c27efd822acfd3bd93fc3e2e3e24a24146811eb7:/src/services/project-service/project-service.ts diff --git a/src/services/project-service/project-service.ts b/src/services/project-service/project-service.ts index 3ffaa35f..d6003471 100644 --- a/src/services/project-service/project-service.ts +++ b/src/services/project-service/project-service.ts @@ -5,9 +5,10 @@ import { GroupsService } from "../groups-service/groups-service"; import { ProjectResource } from "~/models/project"; import { GroupClass } from "~/models/group"; -import { ListArguments } from "~/common/api/common-resource-service"; -import { FilterBuilder } from "~/common/api/filter-builder"; - +import { ListArguments } from "~/services/common-service/common-resource-service"; +import { FilterBuilder, joinFilters } from "~/services/api/filter-builder"; +import { TrashableResourceService } from '~/services/common-service/trashable-resource-service'; +import { snakeCase } from 'lodash'; export class ProjectService extends GroupsService { create(data: Partial) { @@ -15,21 +16,38 @@ export class ProjectService extends GroupsService { return super.create(projectData); } + update(uuid: string, data: Partial) { + if (uuid && data && data.properties) { + const { properties } = data; + const mappedData = { + ...TrashableResourceService.mapKeys(snakeCase)(data), + properties, + }; + return TrashableResourceService + .defaultResponse( + this.serverApi + .put(this.resourceType + uuid, mappedData), + this.actions, + false + ); + } + return TrashableResourceService + .defaultResponse( + this.serverApi + .put(this.resourceType + uuid, data && TrashableResourceService.mapKeys(snakeCase)(data)), + this.actions + ); + } + list(args: ListArguments = {}) { return super.list({ ...args, - filters: this.addProjectFilter(args.filters) + filters: joinFilters( + args.filters, + new FilterBuilder() + .addEqual("groupClass", GroupClass.PROJECT) + .getFilters() + ) }); } - - private addProjectFilter(filters?: FilterBuilder) { - return FilterBuilder - .create() - .concat(filters - ? filters - : FilterBuilder.create()) - .concat(FilterBuilder - .create() - .addEqual("groupClass", GroupClass.PROJECT)); - } }