X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/c63ba4011d124c9efee4e4f1cd6568d4eb8a8d23..62daa4bdd790f99845bbc49062015799fdfd82b5:/src/common/api/common-resource-service.ts diff --git a/src/common/api/common-resource-service.ts b/src/common/api/common-resource-service.ts index 93fc000e..2541feab 100644 --- a/src/common/api/common-resource-service.ts +++ b/src/common/api/common-resource-service.ts @@ -3,25 +3,14 @@ // SPDX-License-Identifier: AGPL-3.0 import * as _ from "lodash"; -import FilterBuilder from "./filter-builder"; -import OrderBuilder from "./order-builder"; +import { FilterBuilder } from "./filter-builder"; +import { OrderBuilder } from "./order-builder"; import { AxiosInstance } from "axios"; - -export interface Resource { - uuid: string; - ownerUuid: string; - createdAt: string; - modifiedByClientUuid: string; - modifiedByUserUuid: string; - modifiedAt: string; - href: string; - kind: string; - etag: string; -} +import { Resource } from "../../models/resource"; export interface ListArguments { - limit: number; - offset: number; + limit?: number; + offset?: number; filters?: FilterBuilder; order?: OrderBuilder; select?: string[]; @@ -37,7 +26,7 @@ export interface ListResults { itemsAvailable: number; } -export default class CommonResourceService { +export class CommonResourceService { static mapResponseKeys = (response: any): Promise => CommonResourceService.mapKeys(_.camelCase)(response.data) @@ -68,8 +57,10 @@ export default class CommonResourceService { this.resourceType = '/' + resourceType + '/'; } - create() { - throw new Error("Not implemented"); + create(data: Partial) { + return this.serverApi + .post(this.resourceType, CommonResourceService.mapKeys(_.snakeCase)(data)) + .then(CommonResourceService.mapResponseKeys); } delete(uuid: string): Promise { @@ -84,12 +75,12 @@ export default class CommonResourceService { .then(CommonResourceService.mapResponseKeys); } - list(args: ListArguments): Promise> { + list(args: ListArguments = {}): Promise> { const { filters, order, ...other } = args; const params = { ...other, - filters: filters ? filters.get() : undefined, - order: order ? order.get() : undefined + filters: filters ? filters.serialize() : undefined, + order: order ? order.getOrder() : undefined }; return this.serverApi .get(this.resourceType, { @@ -101,6 +92,5 @@ export default class CommonResourceService { update(uuid: string) { throw new Error("Not implemented"); } - }