mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
145 lines
3.6 KiB
JavaScript
145 lines
3.6 KiB
JavaScript
"use strict";
|
|
|
|
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');
|
|
|
|
function getInboxNote(req) {
|
|
const hoistedNote = getHoistedNote();
|
|
|
|
let inbox;
|
|
|
|
if (hoistedNote) {
|
|
([inbox] = hoistedNote.getDescendantNotesWithLabel('hoistedInbox'));
|
|
|
|
if (!inbox) {
|
|
([inbox] = hoistedNote.getDescendantNotesWithLabel('inbox'));
|
|
}
|
|
|
|
if (!inbox) {
|
|
inbox = hoistedNote;
|
|
}
|
|
}
|
|
else {
|
|
inbox = attributeService.getNoteWithLabel('inbox')
|
|
|| dateNoteService.getDateNote(req.params.date);
|
|
}
|
|
|
|
return inbox;
|
|
}
|
|
|
|
function getDateNote(req) {
|
|
return dateNoteService.getDateNote(req.params.date);
|
|
}
|
|
|
|
function getMonthNote(req) {
|
|
return dateNoteService.getMonthNote(req.params.month);
|
|
}
|
|
|
|
function getYearNote(req) {
|
|
return dateNoteService.getYearNote(req.params.year);
|
|
}
|
|
|
|
function getDateNotesForMonth(req) {
|
|
const month = req.params.month;
|
|
|
|
return sql.getMap(`
|
|
SELECT
|
|
attr.value AS date,
|
|
notes.noteId
|
|
FROM notes
|
|
JOIN attributes attr USING(noteId)
|
|
WHERE notes.isDeleted = 0
|
|
AND attr.isDeleted = 0
|
|
AND attr.type = 'label'
|
|
AND attr.name = 'dateNote'
|
|
AND attr.value LIKE '${month}%'`);
|
|
}
|
|
|
|
function createSqlConsole() {
|
|
const today = dateUtils.localNowDate();
|
|
|
|
const sqlConsoleHome =
|
|
attributeService.getNoteWithLabel('sqlConsoleHome')
|
|
|| dateNoteService.getDateNote(today);
|
|
|
|
const {note} = noteService.createNewNote({
|
|
parentNoteId: sqlConsoleHome.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", today);
|
|
|
|
return note;
|
|
}
|
|
|
|
function createSearchNote(req) {
|
|
const params = req.body;
|
|
const searchString = params.searchString || "";
|
|
let ancestorNoteId = params.ancestorNoteId;
|
|
|
|
const hoistedNote = getHoistedNote();
|
|
|
|
let searchHome;
|
|
|
|
if (hoistedNote) {
|
|
([searchHome] = hoistedNote.getDescendantNotesWithLabel('hoistedSearchHome'));
|
|
|
|
if (!searchHome) {
|
|
([searchHome] = hoistedNote.getDescendantNotesWithLabel('searchHome'));
|
|
}
|
|
|
|
if (!searchHome) {
|
|
searchHome = hoistedNote;
|
|
}
|
|
|
|
if (!ancestorNoteId) {
|
|
ancestorNoteId = hoistedNote.noteId;
|
|
}
|
|
}
|
|
else {
|
|
const today = dateUtils.localNowDate();
|
|
|
|
searchHome = attributeService.getNoteWithLabel('searchHome')
|
|
|| dateNoteService.getDateNote(today);
|
|
}
|
|
|
|
const {note} = noteService.createNewNote({
|
|
parentNoteId: searchHome.noteId,
|
|
title: 'Search: ' + searchString,
|
|
content: "",
|
|
type: 'search',
|
|
mime: 'application/json'
|
|
});
|
|
|
|
note.setLabel('searchString', searchString);
|
|
|
|
if (ancestorNoteId) {
|
|
note.setRelation('ancestor', ancestorNoteId);
|
|
}
|
|
|
|
return note;
|
|
}
|
|
|
|
function getHoistedNote() {
|
|
return cls.getHoistedNoteId() && cls.getHoistedNoteId() !== 'root'
|
|
? becca.getNote(cls.getHoistedNoteId())
|
|
: null;
|
|
}
|
|
|
|
module.exports = {
|
|
getInboxNote,
|
|
getDateNote,
|
|
getMonthNote,
|
|
getYearNote,
|
|
getDateNotesForMonth,
|
|
createSqlConsole,
|
|
createSearchNote
|
|
};
|