mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
ETAPI - post services WIP
This commit is contained in:
parent
dcba6ad70d
commit
e25a904a84
@ -1,5 +1,10 @@
|
|||||||
const becca = require("../../becca/becca");
|
const becca = require("../../becca/becca");
|
||||||
const utils = require("../../services/utils");
|
const utils = require("../../services/utils");
|
||||||
|
const noteService = require("../../services/notes");
|
||||||
|
const attributeService = require("../../services/attributes");
|
||||||
|
const Branch = require("../../becca/entities/branch");
|
||||||
|
|
||||||
|
const GENERIC_CODE = "GENERIC";
|
||||||
|
|
||||||
function sendError(res, statusCode, code, message) {
|
function sendError(res, statusCode, code, message) {
|
||||||
return res
|
return res
|
||||||
@ -33,22 +38,7 @@ function register(router) {
|
|||||||
return sendNoteNotFoundError(res, noteId);
|
return sendNoteNotFoundError(res, noteId);
|
||||||
}
|
}
|
||||||
|
|
||||||
res.json({
|
res.json(mapNoteToPojo(note));
|
||||||
noteId: note.noteId,
|
|
||||||
isProtected: note.isProtected,
|
|
||||||
title: note.title,
|
|
||||||
type: note.type,
|
|
||||||
mime: note.mime,
|
|
||||||
dateCreated: note.dateCreated,
|
|
||||||
dateModified: note.dateModified,
|
|
||||||
utcDateCreated: note.utcDateCreated,
|
|
||||||
utcDateModified: note.utcDateModified,
|
|
||||||
parentNoteIds: note.getParentNotes().map(p => p.noteId),
|
|
||||||
childNoteIds: note.getChildNotes().map(ch => ch.noteId),
|
|
||||||
parentBranchIds: note.getParentBranches().map(p => p.branchId),
|
|
||||||
childBranchIds: note.getChildBranches().map(ch => ch.branchId),
|
|
||||||
attributes: note.getAttributes().map(attr => mapAttributeToPojo(attr))
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/etapi/notes/:noteId/content', (req, res, next) => {
|
router.get('/etapi/notes/:noteId/content', (req, res, next) => {
|
||||||
@ -77,15 +67,7 @@ function register(router) {
|
|||||||
return sendBranchNotFoundError(res, branchId);
|
return sendBranchNotFoundError(res, branchId);
|
||||||
}
|
}
|
||||||
|
|
||||||
res.json({
|
res.json(mapBranchToPojo(branch));
|
||||||
branchId: branch.branchId,
|
|
||||||
noteId: branch.noteId,
|
|
||||||
parentNoteId: branch.parentNoteId,
|
|
||||||
prefix: branch.prefix,
|
|
||||||
notePosition: branch.notePosition,
|
|
||||||
isExpanded: branch.isExpanded,
|
|
||||||
utcDateModified: branch.utcDateModified
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/etapi/attributes/:attributeId', (req, res, next) => {
|
router.get('/etapi/attributes/:attributeId', (req, res, next) => {
|
||||||
@ -98,6 +80,113 @@ function register(router) {
|
|||||||
|
|
||||||
res.json(mapAttributeToPojo(attribute));
|
res.json(mapAttributeToPojo(attribute));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
router.post('/etapi/notes', (req, res, next) => {
|
||||||
|
const params = req.body;
|
||||||
|
|
||||||
|
if (!becca.getNote(params.parentNoteId)) {
|
||||||
|
return sendNoteNotFoundError(res, params.parentNoteId);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const resp = noteService.createNewNote(params);
|
||||||
|
|
||||||
|
res.json({
|
||||||
|
note: mapNoteToPojo(resp.note),
|
||||||
|
branch: mapBranchToPojo(resp.branch)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
return sendError(res, 400, GENERIC_CODE, e.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
router.post('/etapi/branches', (req, res, next) => {
|
||||||
|
const params = req.body;
|
||||||
|
|
||||||
|
if (!becca.getNote(params.noteId)) {
|
||||||
|
return sendNoteNotFoundError(res, params.noteId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!becca.getNote(params.parentNoteId)) {
|
||||||
|
return sendNoteNotFoundError(res, params.parentNoteId);
|
||||||
|
}
|
||||||
|
|
||||||
|
const existing = becca.getBranchFromChildAndParent(params.noteId, params.parentNoteId);
|
||||||
|
|
||||||
|
if (existing) {
|
||||||
|
existing.notePosition = params.notePosition;
|
||||||
|
existing.prefix = params.prefix;
|
||||||
|
existing.save();
|
||||||
|
|
||||||
|
return res.json(mapBranchToPojo(existing));
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const branch = new Branch(params).save();
|
||||||
|
|
||||||
|
res.json(mapBranchToPojo(branch));
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
return sendError(res, 400, GENERIC_CODE, e.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
router.post('/etapi/attributes', (req, res, next) => {
|
||||||
|
const params = req.body;
|
||||||
|
|
||||||
|
if (!becca.getNote(params.noteId)) {
|
||||||
|
return sendNoteNotFoundError(res, params.noteId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.type === 'relation' && !becca.getNote(params.value)) {
|
||||||
|
return sendNoteNotFoundError(res, params.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (params.type !== 'relation' && params.type !== 'label') {
|
||||||
|
return sendError(res, 400, GENERIC_CODE, `Only "relation" and "label" are supported attribute types, "${params.type}" given.`);
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const attr = attributeService.createAttribute(params);
|
||||||
|
|
||||||
|
res.json(mapAttributeToPojo(attr));
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
return sendError(res, 400, GENERIC_CODE, e.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function mapNoteToPojo(note) {
|
||||||
|
return {
|
||||||
|
noteId: note.noteId,
|
||||||
|
isProtected: note.isProtected,
|
||||||
|
title: note.title,
|
||||||
|
type: note.type,
|
||||||
|
mime: note.mime,
|
||||||
|
dateCreated: note.dateCreated,
|
||||||
|
dateModified: note.dateModified,
|
||||||
|
utcDateCreated: note.utcDateCreated,
|
||||||
|
utcDateModified: note.utcDateModified,
|
||||||
|
parentNoteIds: note.getParentNotes().map(p => p.noteId),
|
||||||
|
childNoteIds: note.getChildNotes().map(ch => ch.noteId),
|
||||||
|
parentBranchIds: note.getParentBranches().map(p => p.branchId),
|
||||||
|
childBranchIds: note.getChildBranches().map(ch => ch.branchId),
|
||||||
|
attributes: note.getAttributes().map(attr => mapAttributeToPojo(attr))
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function mapBranchToPojo(branch) {
|
||||||
|
return {
|
||||||
|
branchId: branch.branchId,
|
||||||
|
noteId: branch.noteId,
|
||||||
|
parentNoteId: branch.parentNoteId,
|
||||||
|
prefix: branch.prefix,
|
||||||
|
notePosition: branch.notePosition,
|
||||||
|
isExpanded: branch.isExpanded,
|
||||||
|
utcDateModified: branch.utcDateModified
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function mapAttributeToPojo(attr) {
|
function mapAttributeToPojo(attr) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user