mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 11:39:01 +01:00 
			
		
		
		
	consistent checking of is_deleted, some small refactorings
This commit is contained in:
		
							parent
							
								
									353a9b24c1
								
							
						
					
					
						commit
						07c33979c3
					
				| @ -12,7 +12,7 @@ router.put('/:noteTreeId/move-to/:parentNoteId', auth.checkApiAuth, async (req, | |||||||
|     const parentNoteId = req.params.parentNoteId; |     const parentNoteId = req.params.parentNoteId; | ||||||
|     const sourceId = req.headers.source_id; |     const sourceId = req.headers.source_id; | ||||||
| 
 | 
 | ||||||
|     const noteToMove = await sql.getFirst("SELECT * FROM notes_tree WHERE note_tree_id = ?", [noteTreeId]); |     const noteToMove = await getNoteTree(noteTreeId); | ||||||
| 
 | 
 | ||||||
|     if (!await validateParentChild(res, parentNoteId, noteToMove.note_id, noteTreeId)) { |     if (!await validateParentChild(res, parentNoteId, noteToMove.note_id, noteTreeId)) { | ||||||
|         return; |         return; | ||||||
| @ -38,8 +38,8 @@ router.put('/:noteTreeId/move-before/:beforeNoteTreeId', auth.checkApiAuth, asyn | |||||||
|     const beforeNoteTreeId = req.params.beforeNoteTreeId; |     const beforeNoteTreeId = req.params.beforeNoteTreeId; | ||||||
|     const sourceId = req.headers.source_id; |     const sourceId = req.headers.source_id; | ||||||
| 
 | 
 | ||||||
|     const noteToMove = await sql.getFirst("SELECT * FROM notes_tree WHERE note_tree_id = ?", [noteTreeId]); |     const noteToMove = await getNoteTree(noteTreeId); | ||||||
|     const beforeNote = await sql.getFirst("SELECT * FROM notes_tree WHERE note_tree_id = ?", [beforeNoteTreeId]); |     const beforeNote = await getNoteTree(beforeNoteTreeId); | ||||||
| 
 | 
 | ||||||
|     if (!await validateParentChild(res, beforeNote.parent_note_id, noteToMove.note_id, noteTreeId)) { |     if (!await validateParentChild(res, beforeNote.parent_note_id, noteToMove.note_id, noteTreeId)) { | ||||||
|         return; |         return; | ||||||
| @ -69,8 +69,8 @@ router.put('/:noteTreeId/move-after/:afterNoteTreeId', auth.checkApiAuth, async | |||||||
|     const afterNoteTreeId = req.params.afterNoteTreeId; |     const afterNoteTreeId = req.params.afterNoteTreeId; | ||||||
|     const sourceId = req.headers.source_id; |     const sourceId = req.headers.source_id; | ||||||
| 
 | 
 | ||||||
|     const noteToMove = await sql.getFirst("SELECT * FROM notes_tree WHERE note_tree_id = ?", [noteTreeId]); |     const noteToMove = await getNoteTree(noteTreeId); | ||||||
|     const afterNote = await sql.getFirst("SELECT * FROM notes_tree WHERE note_tree_id = ?", [afterNoteTreeId]); |     const afterNote = await getNoteTree(afterNoteTreeId); | ||||||
| 
 | 
 | ||||||
|     if (!await validateParentChild(res, afterNote.parent_note_id, noteToMove.note_id, noteTreeId)) { |     if (!await validateParentChild(res, afterNote.parent_note_id, noteToMove.note_id, noteTreeId)) { | ||||||
|         return; |         return; | ||||||
| @ -133,7 +133,7 @@ router.put('/:noteId/clone-after/:afterNoteTreeId', auth.checkApiAuth, async (re | |||||||
|     const afterNoteTreeId = req.params.afterNoteTreeId; |     const afterNoteTreeId = req.params.afterNoteTreeId; | ||||||
|     const sourceId = req.headers.source_id; |     const sourceId = req.headers.source_id; | ||||||
| 
 | 
 | ||||||
|     const afterNote = await sql.getFirst("SELECT * FROM notes_tree WHERE note_tree_id = ?", [afterNoteTreeId]); |     const afterNote = await getNoteTree(afterNoteTreeId); | ||||||
| 
 | 
 | ||||||
|     if (!await validateParentChild(res, afterNote.parent_note_id, noteId)) { |     if (!await validateParentChild(res, afterNote.parent_note_id, noteId)) { | ||||||
|         return; |         return; | ||||||
| @ -168,13 +168,17 @@ router.put('/:noteId/clone-after/:afterNoteTreeId', auth.checkApiAuth, async (re | |||||||
| async function loadSubTreeNoteIds(parentNoteId, subTreeNoteIds) { | async function loadSubTreeNoteIds(parentNoteId, subTreeNoteIds) { | ||||||
|     subTreeNoteIds.push(parentNoteId); |     subTreeNoteIds.push(parentNoteId); | ||||||
| 
 | 
 | ||||||
|     const children = await sql.getFirstColumn("SELECT note_id FROM notes_tree WHERE parent_note_id = ?", [parentNoteId]); |     const children = await sql.getFirstColumn("SELECT note_id FROM notes_tree WHERE parent_note_id = ? AND is_deleted = 0", [parentNoteId]); | ||||||
| 
 | 
 | ||||||
|     for (const childNoteId of children) { |     for (const childNoteId of children) { | ||||||
|         await loadSubTreeNoteIds(childNoteId, subTreeNoteIds); |         await loadSubTreeNoteIds(childNoteId, subTreeNoteIds); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | async function getNoteTree(noteTreeId) { | ||||||
|  |     return sql.getFirst("SELECT * FROM notes_tree WHERE note_tree_id = ?", [noteTreeId]); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| async function validateParentChild(res, parentNoteId, childNoteId, noteTreeId = null) { | async function validateParentChild(res, parentNoteId, childNoteId, noteTreeId = null) { | ||||||
|     const existing = await getExistingNoteTree(parentNoteId, childNoteId); |     const existing = await getExistingNoteTree(parentNoteId, childNoteId); | ||||||
| 
 | 
 | ||||||
| @ -223,7 +227,7 @@ async function checkTreeCycle(parentNoteId, childNoteId) { | |||||||
|             return false; |             return false; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         const parentNoteIds = await sql.getFirstColumn("SELECT DISTINCT parent_note_id FROM notes_tree WHERE note_id = ?", [parentNoteId]); |         const parentNoteIds = await sql.getFirstColumn("SELECT DISTINCT parent_note_id FROM notes_tree WHERE note_id = ? AND is_deleted = 0", [parentNoteId]); | ||||||
| 
 | 
 | ||||||
|         for (const pid of parentNoteIds) { |         for (const pid of parentNoteIds) { | ||||||
|             if (!await checkTreeCycleInner(pid)) { |             if (!await checkTreeCycleInner(pid)) { | ||||||
|  | |||||||
| @ -112,7 +112,7 @@ router.get('/notes_reordering/:noteTreeParentId', auth.checkApiAuth, async (req, | |||||||
| 
 | 
 | ||||||
|     res.send({ |     res.send({ | ||||||
|         parent_note_id: noteTreeParentId, |         parent_note_id: noteTreeParentId, | ||||||
|         ordering: await sql.getMap("SELECT note_tree_id, note_position FROM notes_tree WHERE parent_note_id = ?", [noteTreeParentId]) |         ordering: await sql.getMap("SELECT note_tree_id, note_position FROM notes_tree WHERE parent_note_id = ? AND is_deleted = 0", [noteTreeParentId]) | ||||||
|     }); |     }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -12,14 +12,20 @@ const notes = require('../../services/notes'); | |||||||
| const sync_table = require('../../services/sync_table'); | const sync_table = require('../../services/sync_table'); | ||||||
| 
 | 
 | ||||||
| router.get('/', auth.checkApiAuth, async (req, res, next) => { | router.get('/', auth.checkApiAuth, async (req, res, next) => { | ||||||
|     const notes = await sql.getAll("SELECT " |     const notes = await sql.getAll(` | ||||||
|         + "notes_tree.*, " |       SELECT  | ||||||
|         + "notes.note_title, " |         notes_tree.*,  | ||||||
|         + "notes.is_protected " |         notes.note_title,  | ||||||
|         + "FROM notes_tree " |         notes.is_protected | ||||||
|         + "JOIN notes ON notes.note_id = notes_tree.note_id " |       FROM  | ||||||
|         + "WHERE notes.is_deleted = 0 AND notes_tree.is_deleted = 0 " |         notes_tree  | ||||||
|         + "ORDER BY note_position"); |       JOIN  | ||||||
|  |         notes ON notes.note_id = notes_tree.note_id | ||||||
|  |       WHERE  | ||||||
|  |         notes.is_deleted = 0  | ||||||
|  |         AND notes_tree.is_deleted = 0 | ||||||
|  |       ORDER BY  | ||||||
|  |         note_position`);
 | ||||||
| 
 | 
 | ||||||
|     const dataKey = protected_session.getDataKey(req); |     const dataKey = protected_session.getDataKey(req); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -19,7 +19,7 @@ async function runCheck(query, errorText, errorList) { | |||||||
| 
 | 
 | ||||||
| async function checkTreeCycles(errorList) { | async function checkTreeCycles(errorList) { | ||||||
|     const childToParents = {}; |     const childToParents = {}; | ||||||
|     const rows = await sql.getAll("SELECT note_id, parent_note_id FROM notes_tree"); |     const rows = await sql.getAll("SELECT note_id, parent_note_id FROM notes_tree WHERE is_deleted = 0"); | ||||||
| 
 | 
 | ||||||
|     for (const row of rows) { |     for (const row of rows) { | ||||||
|         const childNoteId = row.note_id; |         const childNoteId = row.note_id; | ||||||
|  | |||||||
| @ -74,7 +74,7 @@ async function protectNoteRecursively(noteId, dataKey, protect, sourceId) { | |||||||
| 
 | 
 | ||||||
|     await protectNote(note, dataKey, protect, sourceId); |     await protectNote(note, dataKey, protect, sourceId); | ||||||
| 
 | 
 | ||||||
|     const children = await sql.getFirstColumn("SELECT note_id FROM notes_tree WHERE parent_note_id = ?", [noteId]); |     const children = await sql.getFirstColumn("SELECT note_id FROM notes_tree WHERE parent_note_id = ? AND is_deleted = 0", [noteId]); | ||||||
| 
 | 
 | ||||||
|     for (const childNoteId of children) { |     for (const childNoteId of children) { | ||||||
|         await protectNoteRecursively(childNoteId, dataKey, protect, sourceId); |         await protectNoteRecursively(childNoteId, dataKey, protect, sourceId); | ||||||
|  | |||||||
| @ -37,9 +37,9 @@ const dbReady = new Promise((resolve, reject) => { | |||||||
|                 await executeScript(notesSql); |                 await executeScript(notesSql); | ||||||
|                 await executeScript(notesTreeSql); |                 await executeScript(notesTreeSql); | ||||||
| 
 | 
 | ||||||
|                 const noteId = await getFirstValue("SELECT note_id FROM notes_tree WHERE parent_note_id = 'root' ORDER BY note_position"); |                 const startNoteId = await getFirstValue("SELECT note_id FROM notes_tree WHERE parent_note_id = 'root' AND is_deleted = 0 ORDER BY note_position"); | ||||||
| 
 | 
 | ||||||
|                 await require('./options').initOptions(noteId); |                 await require('./options').initOptions(startNoteId); | ||||||
|                 await require('./sync_table').fillAllSyncRows(); |                 await require('./sync_table').fillAllSyncRows(); | ||||||
|             }); |             }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -214,7 +214,7 @@ async function pushEntity(sync, syncContext) { | |||||||
|     else if (sync.entity_name === 'notes_reordering') { |     else if (sync.entity_name === 'notes_reordering') { | ||||||
|         entity = { |         entity = { | ||||||
|             parent_note_id: sync.entity_id, |             parent_note_id: sync.entity_id, | ||||||
|             ordering: await sql.getMap('SELECT note_tree_id, note_position FROM notes_tree WHERE parent_note_id = ?', [sync.entity_id]) |             ordering: await sql.getMap('SELECT note_tree_id, note_position FROM notes_tree WHERE parent_note_id = ? AND is_deleted = 0', [sync.entity_id]) | ||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
|     else if (sync.entity_name === 'options') { |     else if (sync.entity_name === 'options') { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 azivner
						azivner