X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/d19d853e83383a6b75f638be99472aa626a05524..9ea56060efd17410075fc213f347867e51955224:/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 471c32fa..bc24f227 100644 --- a/src/services/common-service/common-resource-service.ts +++ b/src/services/common-service/common-resource-service.ts @@ -2,14 +2,13 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as _ from "lodash"; 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"; export enum CommonResourceServiceError { - UNIQUE_VIOLATION = 'UniqueViolation', + UNIQUE_NAME_VIOLATION = 'UniqueNameViolation', OWNERSHIP_CYCLE = 'OwnershipCycle', MODIFYING_CONTAINER_REQUEST_FINAL_STATE = 'ModifyingContainerRequestFinalState', NAME_HAS_ALREADY_BEEN_TAKEN = 'NameHasAlreadyBeenTaken', @@ -18,11 +17,27 @@ export enum CommonResourceServiceError { } export class CommonResourceService extends CommonService { + constructor(serverApi: AxiosInstance, resourceType: string, actions: ApiActions, readOnlyFields: string[] = []) { + super(serverApi, resourceType, actions, readOnlyFields.concat([ + 'uuid', + 'etag', + 'kind' + ])); + } - constructor(serverApi: AxiosInstance, resourceType: string, actions: ApiActions) { - super(serverApi, resourceType, actions); + create(data?: Partial) { + if (data !== undefined) { + this.readOnlyFields.forEach( field => delete data[field] ); + } + return super.create(data); + } + + update(uuid: string, data: Partial) { + if (data !== undefined) { + this.readOnlyFields.forEach( field => delete data[field] ); + } + return super.update(uuid, data); } - } export const getCommonResourceServiceError = (errorResponse: any) => { @@ -30,7 +45,7 @@ export const getCommonResourceServiceError = (errorResponse: any) => { const error = errorResponse.errors.join(''); switch (true) { case /UniqueViolation/.test(error): - return CommonResourceServiceError.UNIQUE_VIOLATION; + return CommonResourceServiceError.UNIQUE_NAME_VIOLATION; case /ownership cycle/.test(error): return CommonResourceServiceError.OWNERSHIP_CYCLE; case /Mounts cannot be modified in state 'Final'/.test(error):