Skip to content
Snippets Groups Projects
Commit 1f1846c4 authored by Kristof De Langhe's avatar Kristof De Langhe
Browse files

69432: Immediate patch

parent 004297fc
No related merge requests found
......@@ -44,7 +44,7 @@ import {
FindByIDRequest,
FindListOptions,
FindListRequest,
GetRequest
GetRequest, PatchRequest
} from './request.models';
import { RequestEntry } from './request.reducer';
import { RequestService } from './request.service';
......@@ -337,6 +337,32 @@ export abstract class DataService<T extends CacheableObject> {
this.objectCache.addPatch(href, operations);
}
/**
* Send out an immediate patch request, instead of adding to the object cache first
* This is useful in cases where you need the returned response and an object cache update is not needed
* @param dso The dso to send the patch to
* @param operations The patch operations
*/
immediatePatch(dso: T, operations: Operation[]): Observable<RestResponse> {
const requestId = this.requestService.generateRequestId();
const hrefObs = this.halService.getEndpoint(this.linkPath).pipe(
map((endpoint: string) => this.getIDHref(endpoint, dso.uuid)));
hrefObs.pipe(
find((href: string) => hasValue(href)),
map((href: string) => {
const request = new PatchRequest(requestId, href, operations);
this.requestService.configure(request);
})
).subscribe();
return this.requestService.getByUUID(requestId).pipe(
find((request: RequestEntry) => request.completed),
map((request: RequestEntry) => request.response)
);
}
/**
* Add a new patch to the object cache
* The patch is derived from the differences between the given object and its version in the object cache
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment