Notes/src/routes/api/special_notes.ts

116 lines
3.2 KiB
TypeScript
Raw Normal View History

"use strict";
import dateNoteService from "../../services/date_notes.js";
import sql from "../../services/sql.js";
import cls from "../../services/cls.js";
import specialNotesService, { type LauncherType } from "../../services/special_notes.js";
import becca from "../../becca/becca.js";
import type { Request } from "express";
function getInboxNote(req: Request) {
return specialNotesService.getInboxNote(req.params.date);
2020-11-27 22:21:13 +01:00
}
function getDayNote(req: Request) {
2022-01-10 17:09:20 +01:00
return dateNoteService.getDayNote(req.params.date);
}
function getWeekNote(req: Request) {
return dateNoteService.getWeekNote(req.params.date);
}
function getMonthNote(req: Request) {
2020-06-20 12:31:38 +02:00
return dateNoteService.getMonthNote(req.params.month);
}
function getYearNote(req: Request) {
2020-06-20 12:31:38 +02:00
return dateNoteService.getYearNote(req.params.year);
}
function getDayNotesForMonth(req: Request) {
const month = req.params.month;
const calendarRoot = req.query.calendarRoot;
const query = `\
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}%'`;
if (calendarRoot) {
2025-03-02 20:47:57 +01:00
const rows = sql.getRows<{ date: string; noteId: string }>(query);
const result: Record<string, string> = {};
2025-03-02 20:47:57 +01:00
for (const { date, noteId } of rows) {
const note = becca.getNote(noteId);
if (note?.hasAncestor(String(calendarRoot))) {
result[date] = noteId;
}
}
return result;
} else {
return sql.getMap(query);
}
}
function saveSqlConsole(req: Request) {
return specialNotesService.saveSqlConsole(req.body.sqlConsoleNoteId);
}
function createSqlConsole() {
return specialNotesService.createSqlConsole();
}
function saveSearchNote(req: Request) {
return specialNotesService.saveSearchNote(req.body.searchNoteId);
2021-06-06 11:01:10 +02:00
}
function createSearchNote(req: Request) {
2021-06-05 23:35:47 +02:00
const hoistedNote = getHoistedNote();
const searchString = req.body.searchString || "";
const ancestorNoteId = req.body.ancestorNoteId || hoistedNote?.noteId;
return specialNotesService.createSearchNote(searchString, ancestorNoteId);
}
2021-03-12 21:29:50 +01:00
function getHoistedNote() {
2021-06-06 11:01:10 +02:00
return becca.getNote(cls.getHoistedNoteId());
2021-03-12 21:29:50 +01:00
}
function createLauncher(req: Request) {
2022-12-22 14:57:00 +01:00
return specialNotesService.createLauncher({
parentNoteId: req.params.parentNoteId,
// TODO: Validate the parameter
launcherType: req.params.launcherType as LauncherType
2022-12-22 14:57:00 +01:00
});
2022-08-07 13:23:03 +02:00
}
function resetLauncher(req: Request) {
2022-12-01 10:16:57 +01:00
return specialNotesService.resetLauncher(req.params.noteId);
2022-11-25 15:29:57 +01:00
}
function createOrUpdateScriptLauncherFromApi(req: Request) {
return specialNotesService.createOrUpdateScriptLauncherFromApi(req.body);
}
export default {
2020-11-27 22:21:13 +01:00
getInboxNote,
2022-01-10 17:09:20 +01:00
getDayNote,
getWeekNote,
getMonthNote,
getYearNote,
2022-01-10 17:09:20 +01:00
getDayNotesForMonth,
createSqlConsole,
saveSqlConsole,
2021-06-06 11:01:10 +02:00
createSearchNote,
2022-08-07 13:23:03 +02:00
saveSearchNote,
2022-12-01 10:16:57 +01:00
createLauncher,
resetLauncher,
createOrUpdateScriptLauncherFromApi
2020-06-20 12:31:38 +02:00
};