UNPKG

@omnigraph/odata

Version:
30 lines (29 loc) 1.48 kB
import urljoin from 'url-join'; import { Request } from '@whatwg-node/fetch'; import { handleMaybePromise } from '@whatwg-node/promise-helpers'; 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 handleMaybePromise(() => dataloaderFactory(context).load(request), response => handleMaybePromise(() => response.text(), responseText => handleResponseText(responseText, urlString, info))); }; }