X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/f6093a73debdd7135870582088202da459386f17..9ec32d73b78aeb92b842aa8cf08bc859e084dcb1:/src/services/common-service/common-resource-service.ts diff --git a/src/services/common-service/common-resource-service.ts b/src/services/common-service/common-resource-service.ts index bc24f227..c6306779 100644 --- a/src/services/common-service/common-resource-service.ts +++ b/src/services/common-service/common-resource-service.ts @@ -3,9 +3,10 @@ // SPDX-License-Identifier: AGPL-3.0 import { AxiosInstance } from "axios"; -import { Resource } from "src/models/resource"; -import { ApiActions } from "~/services/api/api-actions"; -import { CommonService } from "~/services/common-service/common-service"; +import { snakeCase } from "lodash"; +import { Resource } from "models/resource"; +import { ApiActions } from "services/api/api-actions"; +import { CommonService } from "services/common-service/common-service"; export enum CommonResourceServiceError { UNIQUE_NAME_VIOLATION = 'UniqueNameViolation', @@ -26,17 +27,28 @@ export class CommonResourceService extends CommonService } create(data?: Partial) { + let payload: any; if (data !== undefined) { this.readOnlyFields.forEach( field => delete data[field] ); + payload = { + [this.resourceType.slice(0, -1)]: CommonService.mapKeys(snakeCase)(data), + }; } - return super.create(data); + return super.create(payload); } - update(uuid: string, data: Partial) { + update(uuid: string, data: Partial, select?: string[]) { + let payload: any; if (data !== undefined) { this.readOnlyFields.forEach( field => delete data[field] ); + payload = { + [this.resourceType.slice(0, -1)]: CommonService.mapKeys(snakeCase)(data), + }; + if (select !== undefined && select.length > 0) { + payload.select = ['uuid', ...select.map(field => snakeCase(field))]; + }; } - return super.update(uuid, data); + return super.update(uuid, payload); } }