@paroicms/server
Version:
The ParoiCMS server
91 lines • 4.29 kB
JavaScript
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