UNPKG

@paroicms/server

Version:
91 lines 4.29 kB
import { createNoTracker, toAbsoluteUrl } from "@paroicms/internal-server-lib"; import { isDef, parseLNodeId } from "@paroicms/public-anywhere-lib"; import { toDocumentSeed } from "../../common/data-format.js"; import { siteReadyGuard } from "../../graphql/graphql.types.js"; import { getUrlOfDocument } from "../../rendered-site/page-route/make-url.js"; import { authGuard } from "../auth/auth.helper.js"; import { getOneDocument } from "./load-documents.queries.js"; import { createDocumentOnNode, createNodeWithDocument, deleteDocument, deleteNodeAndDocuments, updateDocument, } from "./save-documents.queries.js"; export const documentResolvers = { Query: { document: async (_parent, { id }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); return toDocumentSeed(await getOneDocument(siteContext, parseLNodeId(id))); }, }, Mutation: { updateDocumentTitle: async (_parent, { values, id }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); const lNodeId = parseLNodeId(id); const empty = Object.values(values).every((v) => !isDef(v)); if (!empty) { await updateDocument(siteContext, lNodeId, { title: values.title ?? undefined, slug: values.slug ?? undefined, }); } return toDocumentSeed(await getOneDocument(siteContext, lNodeId)); }, updateDocumentMeta: async (_parent, { values, id }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); const lNodeId = parseLNodeId(id); const empty = Object.values(values).every((v) => !isDef(v)); if (!empty) { await updateDocument(siteContext, lNodeId, values); } return toDocumentSeed(await getOneDocument(siteContext, lNodeId)); }, deleteDocument: async (_parent, { lNodeId }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); const parsedId = parseLNodeId(lNodeId); await deleteDocument(siteContext, parsedId); return true; }, deleteNodeAndDocuments: async (_parent, { lNodeId }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); await deleteNodeAndDocuments(siteContext, parseLNodeId(lNodeId).nodeId); return true; }, createNodeWithDocument: async (_parent, { values, parentLNodeId }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); const documentId = await createNodeWithDocument(siteContext, { parentId: parseLNodeId(parentLNodeId), values: { title: values.title ?? undefined, slug: values.slug ?? undefined, typeName: values.typeName, }, }); return toDocumentSeed(await getOneDocument(siteContext, documentId)); }, createDocumentOnNode: async (_parent, { values, language, nodeId }, { siteContext, httpContext }) => { authGuard(httpContext); siteReadyGuard(siteContext); const documentId = await createDocumentOnNode(siteContext, { language, nodeId, values: values ? { title: values.title ?? undefined, slug: values.slug ?? undefined } : undefined, }); return toDocumentSeed(await getOneDocument(siteContext, documentId)); }, }, Document: { async url(parent, _values, { siteContext }) { siteReadyGuard(siteContext); const url = await getUrlOfDocument(siteContext, createNoTracker(), { language: parent.language, nodeId: parent.nodeId, }, { returnUndef: true }); return url ? toAbsoluteUrl(siteContext, url) : null; }, }, }; //# sourceMappingURL=document.resolver.js.map