From f945d00c9b651b668c3d79a113161314852bfc8c Mon Sep 17 00:00:00 2001 From: Paul Girard Date: Mon, 28 Aug 2017 16:47:42 +0200 Subject: [PATCH] update edilog API better answer formating relates #429 --- server/routes/editLog.js | 62 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 60 insertions(+), 2 deletions(-) diff --git a/server/routes/editLog.js b/server/routes/editLog.js index 02e4fb3b..f4be8bfb 100644 --- a/server/routes/editLog.js +++ b/server/routes/editLog.js @@ -16,6 +16,18 @@ const debug = require('debug')('isari:export'); const ObjectId = mongoose.Types.ObjectId; +// UTILS + +function formatKind(kind){ + if (kind === "E") + return "update" + if (kind === "D") + return "delete" + if (kind === "N") + return "create" + //by default fall back to update + return "update" +} module.exports = Router().get('/:model/:itemId?', requiresAuthentication, getEditLog) @@ -46,14 +58,60 @@ function getEditLog(req, res){ mongoQuery.item = itemId - EditLog.find(mongoQuery) // skip and limit .skip(query.skip ? +query.skip : 0) .limit(query.limit ? +query.limit : 50).then(data => { - return res.status(200).send(data) + const edits = [] + data.forEach(d => { + const edit = {} + edit.who = d.who + edit.date = d.date + edit.item = d.item + edit.action = d.action + + if (edit.action === 'update'){ + + edit.diff = d.diff.filter(d => d[0].path[0] !== 'latestChangeBy') + .map(d => { + d = d[0] + if (d.path.includes("id")) + return undefined + const diff = {path: d.path.filter(e => typeof e !== 'number')} + + if (d.kind === 'A'){ + //array case... + if (d.item.lhs) + diff.valueBefore = d.item.lhs + if(d.item.rhs) + diff.valueAfter = d.item.rhs + diff.editType = formatKind(d.item.kind) + } + else { + if (d.lhs) + diff.valueBefore = d.lhs + if( d.rhs) + diff.valueAfter = d.rhs + diff.editType = formatKind(d.kind) + } + return diff + }).filter(d => d) + } + else{ + edit.diff = d.data + } + + edits.push(edit) + }) + + + return res.status(200).send(edits) }) } +function formatEditLogs(editLogs){ + + +} \ No newline at end of file