From 507a0e2e1d144d6ffeceaa47c7b1f492bd063799 Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 24 Jul 2021 11:38:57 +0200 Subject: [PATCH] "pojoing" backend entity responses to significantly speed up --- src/routes/routes.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/routes/routes.js b/src/routes/routes.js index 8f8105d54..6df8ca298 100644 --- a/src/routes/routes.js +++ b/src/routes/routes.js @@ -49,6 +49,7 @@ const entityChangesService = require('../services/entity_changes'); const csurf = require('csurf'); const {createPartialContentHandler} = require("express-partial-content"); const rateLimit = require("express-rate-limit"); +const AbstractEntity = require("../becca/entities/abstract_entity.js"); const csrfMiddleware = csurf({ cookie: true, @@ -58,6 +59,17 @@ const csrfMiddleware = csurf({ function apiResultHandler(req, res, result) { res.setHeader('trilium-max-entity-change-id', entityChangesService.getMaxEntityChangeId()); + if (result instanceof AbstractEntity) { + result = result.getPojo(); + } + else if (Array.isArray(result)) { + for (const idx in result) { + if (result[idx] instanceof AbstractEntity) { + result[idx] = result[idx].getPojo(); + } + } + } + // if it's an array and first element is integer then we consider this to be [statusCode, response] format if (Array.isArray(result) && result.length > 0 && Number.isInteger(result[0])) { const [statusCode, response] = result;