From 06bcfe1aeedaf0442561da654c466c92dd5dc994 Mon Sep 17 00:00:00 2001 From: zadam Date: Thu, 16 Sep 2021 22:09:39 +0200 Subject: [PATCH] refactoring of special notes route to a service --- src/routes/api/special_notes.js | 171 ++-------------------------- src/services/special_notes.js | 192 ++++++++++++++++++++++++++++++++ 2 files changed, 200 insertions(+), 163 deletions(-) create mode 100644 src/services/special_notes.js diff --git a/src/routes/api/special_notes.js b/src/routes/api/special_notes.js index 6cfe055f1..5e62f0727 100644 --- a/src/routes/api/special_notes.js +++ b/src/routes/api/special_notes.js @@ -2,34 +2,12 @@ const dateNoteService = require('../../services/date_notes'); const sql = require('../../services/sql'); -const dateUtils = require('../../services/date_utils'); -const noteService = require('../../services/notes'); -const attributeService = require('../../services/attributes'); const cls = require('../../services/cls'); +const specialNotesService = require('../../services/special_notes'); const becca = require('../../becca/becca'); function getInboxNote(req) { - const hoistedNote = getHoistedNote(); - - let inbox; - - if (!hoistedNote.isRoot()) { - inbox = hoistedNote.searchNoteInSubtree('#hoistedInbox'); - - if (!inbox) { - inbox = hoistedNote.searchNoteInSubtree('#inbox'); - } - - if (!inbox) { - inbox = hoistedNote; - } - } - else { - inbox = attributeService.getNoteWithLabel('inbox') - || dateNoteService.getDateNote(req.params.date); - } - - return inbox; + return specialNotesService.getInboxNote(req.params.date); } function getDateNote(req) { @@ -61,156 +39,23 @@ function getDateNotesForMonth(req) { } function saveSqlConsole(req) { - const sqlConsoleNote = becca.getNote(req.body.sqlConsoleNoteId); - const today = dateUtils.localNowDate(); - - const sqlConsoleHome = - attributeService.getNoteWithLabel('sqlConsoleHome') - || dateNoteService.getDateNote(today); - - return sqlConsoleNote.cloneTo(sqlConsoleHome.noteId); + return specialNotesService.saveSqlConsole(req.body.sqlConsoleNoteId); } function createSqlConsole() { - const {note} = noteService.createNewNote({ - parentNoteId: getSqlConsoleRoot().noteId, - title: 'SQL Console', - content: "SELECT title, isDeleted, isProtected FROM notes WHERE noteId = ''\n\n\n\n", - type: 'code', - mime: 'text/x-sqlite;schema=trilium' - }); - - note.setLabel("sqlConsole", dateUtils.localNowDate()); - - return note; -} - -function getHiddenRoot() { - let hidden = becca.getNote('hidden'); - - if (!hidden) { - hidden = noteService.createNewNote({ - noteId: 'hidden', - title: 'hidden', - type: 'text', - content: '', - parentNoteId: 'root' - }).note; - - // isInheritable: false means that this notePath is automatically not preffered but at the same time - // the flag is not inherited to the children - hidden.addLabel('archived', "", false); - } - - return hidden; -} - -function getSearchRoot() { - let searchRoot = becca.getNote('search'); - - if (!searchRoot) { - searchRoot = noteService.createNewNote({ - noteId: 'search', - title: 'search', - type: 'text', - content: '', - parentNoteId: getHiddenRoot().noteId - }).note; - } - - return searchRoot; -} - -function getSpecialNoteRoot() { - let specialNoteRoot = becca.getNote('special'); - - if (!specialNoteRoot) { - specialNoteRoot = noteService.createNewNote({ - noteId: 'special', - title: 'special', - type: 'text', - content: '', - parentNoteId: getHiddenRoot().noteId - }).note; - } - - return specialNoteRoot; -} - -function getGlobalLinkMapNote() { - let globalLinkMapNote = becca.getNote('global-link-map'); - - if (!globalLinkMapNote) { - globalLinkMapNote = noteService.createNewNote({ - noteId: 'global-link-map', - title: 'global-link-map', - type: 'global-link-map', - content: '', - parentNoteId: getSpecialNoteRoot().noteId - }).note; - } - - return globalLinkMapNote; -} - -function getSqlConsoleRoot() { - let sqlConsoleRoot = becca.getNote('sqlconsole'); - - if (!sqlConsoleRoot) { - sqlConsoleRoot = noteService.createNewNote({ - noteId: 'sqlconsole', - title: 'SQL Console', - type: 'text', - content: '', - parentNoteId: getHiddenRoot().noteId - }).note; - } - - return sqlConsoleRoot; + return specialNotesService.createSqlConsole(); } function saveSearchNote(req) { - const searchNote = becca.getNote(req.body.searchNoteId); - - const hoistedNote = getHoistedNote(); - let searchHome; - - if (!hoistedNote.isRoot()) { - searchHome = hoistedNote.searchNoteInSubtree('#hoistedSearchHome') - || hoistedNote.searchNoteInSubtree('#searchHome') - || hoistedNote; - } - else { - const today = dateUtils.localNowDate(); - - searchHome = hoistedNote.searchNoteInSubtree('#searchHome') - || dateNoteService.getDateNote(today); - } - - return searchNote.cloneTo(searchHome.noteId); + return specialNotesService.saveSearchNote(req.body.searchNoteId); } function createSearchNote(req) { - const params = req.body; - const searchString = params.searchString || ""; const hoistedNote = getHoistedNote(); - const ancestorNoteId = params.ancestorNoteId || hoistedNote.noteId; + const searchString = req.body.searchString || ""; + const ancestorNoteId = req.body.ancestorNoteId || hoistedNote.noteId; - const {note} = noteService.createNewNote({ - parentNoteId: getSearchRoot().noteId, - title: 'Search: ' + searchString, - content: "", - type: 'search', - mime: 'application/json' - }); - - note.setLabel('searchString', searchString); - - if (ancestorNoteId) { - note.setRelation('ancestor', ancestorNoteId); - } - - return note; + return specialNotesService.createSearchNote(searchString, ancestorNoteId); } function getHoistedNote() { diff --git a/src/services/special_notes.js b/src/services/special_notes.js new file mode 100644 index 000000000..c2c443c70 --- /dev/null +++ b/src/services/special_notes.js @@ -0,0 +1,192 @@ +const attributeService = require("./attributes"); +const dateNoteService = require("./date_notes"); +const becca = require("../becca/becca"); +const noteService = require("./notes"); +const cls = require("./cls"); +const dateUtils = require("./date_utils"); + +function getInboxNote(date) { + const hoistedNote = getHoistedNote(); + + let inbox; + + if (!hoistedNote.isRoot()) { + inbox = hoistedNote.searchNoteInSubtree('#hoistedInbox'); + + if (!inbox) { + inbox = hoistedNote.searchNoteInSubtree('#inbox'); + } + + if (!inbox) { + inbox = hoistedNote; + } + } + else { + inbox = attributeService.getNoteWithLabel('inbox') + || dateNoteService.getDateNote(date); + } + + return inbox; +} + +function getHiddenRoot() { + let hidden = becca.getNote('hidden'); + + if (!hidden) { + hidden = noteService.createNewNote({ + noteId: 'hidden', + title: 'hidden', + type: 'text', + content: '', + parentNoteId: 'root' + }).note; + + // isInheritable: false means that this notePath is automatically not preffered but at the same time + // the flag is not inherited to the children + hidden.addLabel('archived', "", false); + } + + return hidden; +} + +function getSearchRoot() { + let searchRoot = becca.getNote('search'); + + if (!searchRoot) { + searchRoot = noteService.createNewNote({ + noteId: 'search', + title: 'search', + type: 'text', + content: '', + parentNoteId: getHiddenRoot().noteId + }).note; + } + + return searchRoot; +} + +function getSpecialNoteRoot() { + let specialNoteRoot = becca.getNote('special'); + + if (!specialNoteRoot) { + specialNoteRoot = noteService.createNewNote({ + noteId: 'special', + title: 'special', + type: 'text', + content: '', + parentNoteId: getHiddenRoot().noteId + }).note; + } + + return specialNoteRoot; +} + +function getGlobalLinkMapNote() { + let globalLinkMapNote = becca.getNote('global-link-map'); + + if (!globalLinkMapNote) { + globalLinkMapNote = noteService.createNewNote({ + noteId: 'global-link-map', + title: 'global-link-map', + type: 'global-link-map', + content: '', + parentNoteId: getSpecialNoteRoot().noteId + }).note; + } + + return globalLinkMapNote; +} + +function getSqlConsoleRoot() { + let sqlConsoleRoot = becca.getNote('sqlconsole'); + + if (!sqlConsoleRoot) { + sqlConsoleRoot = noteService.createNewNote({ + noteId: 'sqlconsole', + title: 'SQL Console', + type: 'text', + content: '', + parentNoteId: getHiddenRoot().noteId + }).note; + } + + return sqlConsoleRoot; +} + +function createSqlConsole() { + const {note} = noteService.createNewNote({ + parentNoteId: getSqlConsoleRoot().noteId, + title: 'SQL Console', + content: "SELECT title, isDeleted, isProtected FROM notes WHERE noteId = ''\n\n\n\n", + type: 'code', + mime: 'text/x-sqlite;schema=trilium' + }); + + note.setLabel("sqlConsole", dateUtils.localNowDate()); + + return note; +} + +function saveSqlConsole(sqlConsoleNoteId) { + const sqlConsoleNote = becca.getNote(sqlConsoleNoteId); + const today = dateUtils.localNowDate(); + + const sqlConsoleHome = + attributeService.getNoteWithLabel('sqlConsoleHome') + || dateNoteService.getDateNote(today); + + return sqlConsoleNote.cloneTo(sqlConsoleHome.noteId); +} + +function getHoistedNote() { + return becca.getNote(cls.getHoistedNoteId()); +} + +function createSearchNote(searchString, ancestorNoteId) { + const hoistedNote = getHoistedNote(); + + const {note} = noteService.createNewNote({ + parentNoteId: getSearchRoot().noteId, + title: 'Search: ' + searchString, + content: "", + type: 'search', + mime: 'application/json' + }); + + note.setLabel('searchString', searchString); + + if (ancestorNoteId) { + note.setRelation('ancestor', ancestorNoteId); + } + + return note; +} + +function saveSearchNote(searchNoteId) { + const searchNote = becca.getNote(searchNoteId); + + const hoistedNote = getHoistedNote(); + let searchHome; + + if (!hoistedNote.isRoot()) { + searchHome = hoistedNote.searchNoteInSubtree('#hoistedSearchHome') + || hoistedNote.searchNoteInSubtree('#searchHome') + || hoistedNote; + } + else { + const today = dateUtils.localNowDate(); + + searchHome = hoistedNote.searchNoteInSubtree('#searchHome') + || dateNoteService.getDateNote(today); + } + + return searchNote.cloneTo(searchHome.noteId); +} + +module.exports = { + getInboxNote, + createSqlConsole, + saveSqlConsole, + createSearchNote, + saveSearchNote +};