From 479c2184a4202bed469e4e4b570e8a2b4147a048 Mon Sep 17 00:00:00 2001 From: Olav Landsverk Date: Thu, 13 Mar 2025 10:04:43 +0100 Subject: [PATCH 1/2] Created service to add markdown content in a node in repo no.ssb.pubmd --- .../services/postMarkdown/postMarkdown.ts | 35 +++++++++++++++++++ .../services/postMarkdown/postMarkdown.xml | 5 +++ 2 files changed, 40 insertions(+) create mode 100644 src/main/resources/services/postMarkdown/postMarkdown.ts create mode 100644 src/main/resources/services/postMarkdown/postMarkdown.xml diff --git a/src/main/resources/services/postMarkdown/postMarkdown.ts b/src/main/resources/services/postMarkdown/postMarkdown.ts new file mode 100644 index 0000000000..32c41e0783 --- /dev/null +++ b/src/main/resources/services/postMarkdown/postMarkdown.ts @@ -0,0 +1,35 @@ +import { connect } from '/lib/xp/node' + +export const post = (req: XP.Request): XP.Response => { + const setFields = (obj) => { + obj.displayName = req.params.displayName + obj.markdown = req.params.markdown + return obj + } + + const conn = connect({ + repoId: 'no.ssb.pubmd', + branch: 'master', + principals: ['role:system.admin'], + }) + + const nodeId = typeof req.params._id === 'string' ? req.params._id : '' + const nodeExists = nodeId ? conn.exists(nodeId) : false + + let result + if (nodeExists) { + result = conn.modify({ + key: nodeId, + editor: setFields, + }) + } else { + const params = setFields({}) + result = conn.create(params) + } + + return { + status: 200, + body: result, + contentType: 'application/json', + } +} diff --git a/src/main/resources/services/postMarkdown/postMarkdown.xml b/src/main/resources/services/postMarkdown/postMarkdown.xml new file mode 100644 index 0000000000..7f945f2c64 --- /dev/null +++ b/src/main/resources/services/postMarkdown/postMarkdown.xml @@ -0,0 +1,5 @@ + + + role:system.everyone + + \ No newline at end of file From 64b1ea6a6d70f5d8141b8303b3f492e0777da8e0 Mon Sep 17 00:00:00 2001 From: Olav Landsverk Date: Tue, 18 Mar 2025 09:40:45 +0100 Subject: [PATCH 2/2] replace function setFields with object params --- .../resources/services/postMarkdown/postMarkdown.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/resources/services/postMarkdown/postMarkdown.ts b/src/main/resources/services/postMarkdown/postMarkdown.ts index 32c41e0783..2e70219f77 100644 --- a/src/main/resources/services/postMarkdown/postMarkdown.ts +++ b/src/main/resources/services/postMarkdown/postMarkdown.ts @@ -1,10 +1,9 @@ import { connect } from '/lib/xp/node' export const post = (req: XP.Request): XP.Response => { - const setFields = (obj) => { - obj.displayName = req.params.displayName - obj.markdown = req.params.markdown - return obj + const params = { + displayName: req.params.displayName, + markdown: req.params.markdown, } const conn = connect({ @@ -20,10 +19,12 @@ export const post = (req: XP.Request): XP.Response => { if (nodeExists) { result = conn.modify({ key: nodeId, - editor: setFields, + editor: (node) => ({ + ...node, + ...params, + }), }) } else { - const params = setFields({}) result = conn.create(params) }