mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
etapi fixes + basic test
This commit is contained in:
parent
e8acf3f9f3
commit
e3114e0602
@ -3,6 +3,12 @@ const utils = require("../../services/utils");
|
|||||||
const noteService = require("../../services/notes");
|
const noteService = require("../../services/notes");
|
||||||
const attributeService = require("../../services/attributes");
|
const attributeService = require("../../services/attributes");
|
||||||
const Branch = require("../../becca/entities/branch");
|
const Branch = require("../../becca/entities/branch");
|
||||||
|
const cls = require("../../services/cls.js");
|
||||||
|
const sql = require("../../services/sql.js");
|
||||||
|
const log = require("../../services/log.js");
|
||||||
|
const entityChangesService = require("../../services/entity_changes.js");
|
||||||
|
const sqlInit = require("../../services/sql_init.js");
|
||||||
|
const passwordService = require("../../services/password.js");
|
||||||
|
|
||||||
const GENERIC_CODE = "GENERIC";
|
const GENERIC_CODE = "GENERIC";
|
||||||
|
|
||||||
@ -29,8 +35,43 @@ function sendAttributeNotFoundError(res, attributeId) {
|
|||||||
return sendError(res, 404, "ATTRIBUTE_NOT_FOUND",`Attribute ${attributeId} not found`);
|
return sendError(res, 404, "ATTRIBUTE_NOT_FOUND",`Attribute ${attributeId} not found`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
// * add date/month/year functions
|
||||||
|
|
||||||
|
function checkEtapiAuth(req, res, next) {
|
||||||
|
if (false) {
|
||||||
|
sendError(res, 401, "NOT_AUTHENTICATED", "Not authenticated");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
next();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function register(router) {
|
function register(router) {
|
||||||
router.get('/etapi/notes/:noteId', (req, res, next) => {
|
function route(method, path, routeHandler) {
|
||||||
|
router[method](path, checkEtapiAuth, (req, res, next) => {
|
||||||
|
try {
|
||||||
|
cls.namespace.bindEmitter(req);
|
||||||
|
cls.namespace.bindEmitter(res);
|
||||||
|
|
||||||
|
cls.init(() => {
|
||||||
|
cls.set('sourceId', "etapi");
|
||||||
|
cls.set('localNowDateTime', req.headers['trilium-local-now-datetime']);
|
||||||
|
|
||||||
|
const cb = () => routeHandler(req, res, next);
|
||||||
|
|
||||||
|
return sql.transactional(cb);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
log.error(`${method} ${path} threw exception: ` + e.stack);
|
||||||
|
|
||||||
|
res.status(500).send(e.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
route('get', '/etapi/notes/:noteId', (req, res, next) => {
|
||||||
const {noteId} = req.params;
|
const {noteId} = req.params;
|
||||||
const note = becca.getNote(noteId);
|
const note = becca.getNote(noteId);
|
||||||
|
|
||||||
@ -41,7 +82,7 @@ function register(router) {
|
|||||||
res.json(mapNoteToPojo(note));
|
res.json(mapNoteToPojo(note));
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/etapi/notes/:noteId/content', (req, res, next) => {
|
route('get', '/etapi/notes/:noteId/content', (req, res, next) => {
|
||||||
const {noteId} = req.params;
|
const {noteId} = req.params;
|
||||||
const note = becca.getNote(noteId);
|
const note = becca.getNote(noteId);
|
||||||
|
|
||||||
@ -59,7 +100,7 @@ function register(router) {
|
|||||||
res.send(note.getContent());
|
res.send(note.getContent());
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/etapi/branches/:branchId', (req, res, next) => {
|
route('get', '/etapi/branches/:branchId', (req, res, next) => {
|
||||||
const {branchId} = req.params;
|
const {branchId} = req.params;
|
||||||
const branch = becca.getBranch(branchId);
|
const branch = becca.getBranch(branchId);
|
||||||
|
|
||||||
@ -70,7 +111,7 @@ function register(router) {
|
|||||||
res.json(mapBranchToPojo(branch));
|
res.json(mapBranchToPojo(branch));
|
||||||
});
|
});
|
||||||
|
|
||||||
router.get('/etapi/attributes/:attributeId', (req, res, next) => {
|
route('get', '/etapi/attributes/:attributeId', (req, res, next) => {
|
||||||
const {attributeId} = req.params;
|
const {attributeId} = req.params;
|
||||||
const attribute = becca.getAttribute(attributeId);
|
const attribute = becca.getAttribute(attributeId);
|
||||||
|
|
||||||
@ -81,7 +122,7 @@ function register(router) {
|
|||||||
res.json(mapAttributeToPojo(attribute));
|
res.json(mapAttributeToPojo(attribute));
|
||||||
});
|
});
|
||||||
|
|
||||||
router.post('/etapi/notes', (req, res, next) => {
|
route('post' ,'/etapi/notes', (req, res, next) => {
|
||||||
const params = req.body;
|
const params = req.body;
|
||||||
|
|
||||||
if (!becca.getNote(params.parentNoteId)) {
|
if (!becca.getNote(params.parentNoteId)) {
|
||||||
@ -101,7 +142,7 @@ function register(router) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
router.post('/etapi/branches', (req, res, next) => {
|
route('post' ,'/etapi/branches', (req, res, next) => {
|
||||||
const params = req.body;
|
const params = req.body;
|
||||||
|
|
||||||
if (!becca.getNote(params.noteId)) {
|
if (!becca.getNote(params.noteId)) {
|
||||||
@ -132,7 +173,7 @@ function register(router) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
router.post('/etapi/attributes', (req, res, next) => {
|
route('post' ,'/etapi/attributes', (req, res, next) => {
|
||||||
const params = req.body;
|
const params = req.body;
|
||||||
|
|
||||||
if (!becca.getNote(params.noteId)) {
|
if (!becca.getNote(params.noteId)) {
|
||||||
|
@ -134,18 +134,18 @@ function BackendScriptApi(currentNote, apiParams) {
|
|||||||
this.getNoteWithLabel = attributeService.getNoteWithLabel;
|
this.getNoteWithLabel = attributeService.getNoteWithLabel;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If there's no branch between note and parent note, create one. Otherwise do nothing.
|
* If there's no branch between note and parent note, create one. Otherwise, do nothing.
|
||||||
*
|
*
|
||||||
* @method
|
* @method
|
||||||
* @param {string} noteId
|
* @param {string} noteId
|
||||||
* @param {string} parentNoteId
|
* @param {string} parentNoteId
|
||||||
* @param {string} prefix - if branch will be create between note and parent note, set this prefix
|
* @param {string} prefix - if branch will be created between note and parent note, set this prefix
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
this.ensureNoteIsPresentInParent = cloningService.ensureNoteIsPresentInParent;
|
this.ensureNoteIsPresentInParent = cloningService.ensureNoteIsPresentInParent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If there's a branch between note and parent note, remove it. Otherwise do nothing.
|
* If there's a branch between note and parent note, remove it. Otherwise, do nothing.
|
||||||
*
|
*
|
||||||
* @method
|
* @method
|
||||||
* @param {string} noteId
|
* @param {string} noteId
|
||||||
|
39
test-etapi/create-note.http
Normal file
39
test-etapi/create-note.http
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
POST {{triliumHost}}/etapi/notes
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"parentNoteId": "root",
|
||||||
|
"title": "Hello",
|
||||||
|
"type": "text",
|
||||||
|
"content": "Hi there!"
|
||||||
|
}
|
||||||
|
|
||||||
|
> {%
|
||||||
|
client.test("Request executed successfully", function() {
|
||||||
|
client.assert(response.status === 200, "Response status is not 200");
|
||||||
|
});
|
||||||
|
|
||||||
|
client.global.set("createdNoteId", response.body.note.noteId);
|
||||||
|
client.global.set("createdBranchId", response.body.note.branchId);
|
||||||
|
%}
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
POST {{triliumHost}}/etapi/attributes
|
||||||
|
Content-Type: application/json
|
||||||
|
|
||||||
|
{
|
||||||
|
"noteId": "{{createdNoteId}}",
|
||||||
|
"type": "label",
|
||||||
|
"name": "mylabel",
|
||||||
|
"value": "val",
|
||||||
|
"isInheritable": "true"
|
||||||
|
}
|
||||||
|
|
||||||
|
> {%
|
||||||
|
client.test("Request executed successfully", function() {
|
||||||
|
client.assert(response.status === 200, "Response status is not 200");
|
||||||
|
});
|
||||||
|
|
||||||
|
client.global.set("createdAttributeId", response.body.attributeId);
|
||||||
|
%}
|
5
test-etapi/http-client.env.json
Normal file
5
test-etapi/http-client.env.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"dev": {
|
||||||
|
"triliumHost": "http://localhost:37740"
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user