- protected serverApi: AxiosInstance;
- protected resourceType: string;
- protected actions: ApiActions;
-
- constructor(serverApi: AxiosInstance, resourceType: string, actions: ApiActions) {
- this.serverApi = serverApi;
- this.resourceType = '/' + resourceType + '/';
- this.actions = actions;
- }
-
- create(data?: Partial<T> | any) {
- return CommonResourceService.defaultResponse(
- this.serverApi
- .post<T>(this.resourceType, data && CommonResourceService.mapKeys(_.snakeCase)(data)),
- this.actions
- );
- }
-
- delete(uuid: string): Promise<T> {
- return CommonResourceService.defaultResponse(
- this.serverApi
- .delete(this.resourceType + uuid),
- this.actions
- );
- }
-
- get(uuid: string) {
- return CommonResourceService.defaultResponse(
- this.serverApi
- .get<T>(this.resourceType + uuid),
- this.actions
- );
- }
-
- list(args: ListArguments = {}): Promise<ListResults<T>> {
- const { filters, order, ...other } = args;
- const params = {
- ...other,
- filters: filters ? `[${filters}]` : undefined,
- order: order ? order : undefined
- };
- return CommonResourceService.defaultResponse(
- this.serverApi
- .get(this.resourceType, {
- params: CommonResourceService.mapKeys(_.snakeCase)(params)
- }),
- this.actions
- );
+ create(data?: Partial<T>, showErrors?: boolean) {
+ 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(payload, showErrors);