Open ahemed-haneen opened 2 years ago
async atomicAddRecord(
requestProcessor: JSONAPIRequestProcessor,
requests: RecordTransformRequest[]
) {
const records = requests.map((request) => {
return {
op: request.op,
record: request.record,
};
});
const options = requests[0].options || {};
const operationSerializer = requestProcessor.serializerFor(JSONAPISerializers.ResourceAtomicOperationsDocument)
as JSONAPIAtomicOperationsDocumentSerializer;
const requestDoc = operationSerializer.serialize({
operations: records,
})
const settings = requestProcessor.buildFetchSettings(options, {
method: 'POST',
json: requestDoc
});
const url = options.url || requestProcessor.urlBuilder.resourceURL('operation');
const details = await requestProcessor.fetch(url, settings);
const document = details.document as ResourceAtomicResultsDocument;
const resultSerializer = requestProcessor.serializerFor(
JSONAPISerializers.ResourceAtomicResultsDocument
) as JSONAPIAtomicResultsDocumentSerializer
const recordDoc = resultSerializer.deserialize(document);
return response = recordDoc['results'].map((item, index) => {
return handleChanges(records[index].record, item, details);
});
},
cache store is getting updated all right but i'm having trouble getting the request to return the response immediately.
any idea why this is? @dgeb
before handleChanges running
const recordDocItemSerialized = normalSerializer.deserialize(
recordDocItem,
{ primaryRecord: records[index].record }
);
is fixing this issue. but this also results in generating another set of mapping
I've seen that atomic operations serializers have been added but couldn't find any way to generate atomic operations.
how to implement it?
im using ember-orbit with orbit v0.17 @dgeb @tchak