mirror of
				https://github.com/TriliumNext/Notes.git
				synced 2025-10-31 13:01:31 +08:00 
			
		
		
		
	ETAPI - post services WIP
This commit is contained in:
		
							parent
							
								
									dcba6ad70d
								
							
						
					
					
						commit
						e25a904a84
					
				| @ -1,5 +1,10 @@ | ||||
| const becca = require("../../becca/becca"); | ||||
| 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) { | ||||
|     return res | ||||
| @ -33,22 +38,7 @@ function register(router) { | ||||
|             return sendNoteNotFoundError(res, noteId); | ||||
|         } | ||||
| 
 | ||||
|         res.json({ | ||||
|             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)) | ||||
|         }); | ||||
|         res.json(mapNoteToPojo(note)); | ||||
|     }); | ||||
| 
 | ||||
|     router.get('/etapi/notes/:noteId/content', (req, res, next) => { | ||||
| @ -77,15 +67,7 @@ function register(router) { | ||||
|             return sendBranchNotFoundError(res, branchId); | ||||
|         } | ||||
| 
 | ||||
|         res.json({ | ||||
|             branchId: branch.branchId, | ||||
|             noteId: branch.noteId, | ||||
|             parentNoteId: branch.parentNoteId, | ||||
|             prefix: branch.prefix, | ||||
|             notePosition: branch.notePosition, | ||||
|             isExpanded: branch.isExpanded, | ||||
|             utcDateModified: branch.utcDateModified | ||||
|         }); | ||||
|         res.json(mapBranchToPojo(branch)); | ||||
|     }); | ||||
| 
 | ||||
|     router.get('/etapi/attributes/:attributeId', (req, res, next) => { | ||||
| @ -98,6 +80,113 @@ function register(router) { | ||||
| 
 | ||||
|         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) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 zadam
						zadam