@omnigraph/odata
Version:
30 lines (29 loc) • 1.45 kB
JavaScript
import urljoin from 'url-join';
import { mapMaybePromise } from '@graphql-tools/utils';
import { Request } from '@whatwg-node/fetch';
import { addIdentifierToUrl } from '../utils/addIdentifierToUrl.js';
import { getUrlString } from '../utils/getUrlString.js';
import { handleResponseText } from '../utils/handleResponseText.js';
import { rebuildOpenInputObjects } from '../utils/rebuildOpenInputObjects.js';
export function createUpdateEntitySetResolver({ endpoint, entitySetName, identifierFieldName, identifierFieldTypeRef, dataloaderFactory, headersFactory, }) {
return function updateEntitySetResolver(root, args, context, info) {
const url = new URL(endpoint);
url.href = urljoin(url.href, '/' + entitySetName);
addIdentifierToUrl(url, identifierFieldName, identifierFieldTypeRef, args);
const urlString = getUrlString(url);
rebuildOpenInputObjects(args.input);
const method = 'PATCH';
const request = new Request(urlString, {
method,
headers: headersFactory({
root,
args,
context,
info,
env: process.env,
}, method),
body: JSON.stringify(args.input),
});
return mapMaybePromise(dataloaderFactory(context).load(request), response => mapMaybePromise(response.text(), responseText => handleResponseText(responseText, urlString, info)));
};
}