mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 10:26:08 +01:00 
			
		
		
		
	notes are now soft-deleted
This commit is contained in:
		
							
								
								
									
										1
									
								
								migrations/0003__add_is_deleted_to_note.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								migrations/0003__add_is_deleted_to_note.sql
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | ||||
| ALTER TABLE notes ADD COLUMN is_deleted INTEGER NOT NULL DEFAULT 0 | ||||
| @@ -104,22 +104,24 @@ router.put('/:noteId', async (req, res, next) => { | ||||
| }); | ||||
|  | ||||
| router.delete('/:noteId', async (req, res, next) => { | ||||
|     await deleteNote(req.params.noteId); | ||||
|     await sql.beginTransaction(); | ||||
|  | ||||
|     await deleteNote(req.params.noteId, req); | ||||
|  | ||||
|     await sql.commit(); | ||||
|  | ||||
|     res.send({}); | ||||
| }); | ||||
|  | ||||
| async function deleteNote(noteId) { | ||||
| async function deleteNote(noteId, req) { | ||||
|     const children = await sql.getResults("select note_id from notes_tree where note_pid = ?", [noteId]); | ||||
|  | ||||
|     for (const child of children) { | ||||
|         await deleteNote(child['note_id']); | ||||
|     } | ||||
|  | ||||
|     await sql.delete("notes_tree", noteId); | ||||
|     await sql.delete("notes", noteId); | ||||
|     await sql.remove("notes_tree", noteId); | ||||
|     await sql.execute("update notes set is_deleted = 1 where note_id = ?", [noteId]); | ||||
|  | ||||
|     await sql.addAudit(audit_category.DELETE_NOTE, req, noteId); | ||||
| } | ||||
|   | ||||
| @@ -19,6 +19,7 @@ router.get('/', auth.checkApiAuth, async (req, res, next) => { | ||||
|         + "from notes_tree " | ||||
|         + "join notes on notes.note_id = notes_tree.note_id " | ||||
|         + "left join notes as clone on notes.note_clone_id = clone.note_id " | ||||
|         + "where notes.is_deleted = 0 " | ||||
|         + "order by note_pid, note_pos"); | ||||
|  | ||||
|     const root_notes = []; | ||||
|   | ||||
| @@ -2,7 +2,7 @@ const backup = require('./backup'); | ||||
| const sql = require('./sql'); | ||||
| const fs = require('fs-extra'); | ||||
|  | ||||
| const APP_DB_VERSION = 2; | ||||
| const APP_DB_VERSION = 3; | ||||
| const MIGRATIONS_DIR = "./migrations"; | ||||
|  | ||||
| async function migrate() { | ||||
|   | ||||
| @@ -6,41 +6,45 @@ | ||||
|   </head> | ||||
|   <body> | ||||
|     <div style="width: 800px; margin: auto;"> | ||||
|         <h1>Migration</h1> | ||||
|       <h1>Migration</h1> | ||||
|  | ||||
|         <div id="up-to-date" style="display:none;"> | ||||
|           <p>Your database is up-to-date with the application.</p> | ||||
|         </div> | ||||
|       <div id="up-to-date" style="display:none;"> | ||||
|         <p>Your database is up-to-date with the application.</p> | ||||
|  | ||||
|         <div id="need-to-migrate" style="display:none;"> | ||||
|           <p>Your database needs to be migrated to new version before you can use the application again. | ||||
|           Database will be backed up before migration in case of something going wrong.</p> | ||||
|         <a href="/" class="btn btn-success">Continue to app</a> | ||||
|       </div> | ||||
|  | ||||
|           <table class="table table-bordered" style="width: 200px;"> | ||||
|             <tr> | ||||
|               <th>Application version:</th> | ||||
|               <td id="app-db-version" style="text-align: right;"></td> | ||||
|             <tr> | ||||
|               <th>Database version:</th> | ||||
|               <td id="db-version" style="text-align: right;"></td> | ||||
|             </tr> | ||||
|           </table> | ||||
|       <div id="need-to-migrate" style="display:none;"> | ||||
|         <p>Your database needs to be migrated to new version before you can use the application again. | ||||
|         Database will be backed up before migration in case of something going wrong.</p> | ||||
|  | ||||
|           <button class="btn btn-warning" id="run-migration">Run migration</button> | ||||
|         </div> | ||||
|         <table class="table table-bordered" style="width: 200px;"> | ||||
|           <tr> | ||||
|             <th>Application version:</th> | ||||
|             <td id="app-db-version" style="text-align: right;"></td> | ||||
|           <tr> | ||||
|             <th>Database version:</th> | ||||
|             <td id="db-version" style="text-align: right;"></td> | ||||
|           </tr> | ||||
|         </table> | ||||
|  | ||||
|         <div id="migration-result" style="display:none;"> | ||||
|           <h2>Migration result</h2> | ||||
|         <button class="btn btn-warning" id="run-migration">Run migration</button> | ||||
|       </div> | ||||
|  | ||||
|           <table id="migration-table" class="table"> | ||||
|             <tr> | ||||
|               <th>Database version</th> | ||||
|               <th>Name</th> | ||||
|               <th>Success</th> | ||||
|               <th>Error</th> | ||||
|             </tr> | ||||
|           </table> | ||||
|         </div> | ||||
|       <div id="migration-result" style="display:none;"> | ||||
|         <h2>Migration result</h2> | ||||
|  | ||||
|         <table id="migration-table" class="table"> | ||||
|           <tr> | ||||
|             <th>Database version</th> | ||||
|             <th>Name</th> | ||||
|             <th>Success</th> | ||||
|             <th>Error</th> | ||||
|           </tr> | ||||
|         </table> | ||||
|  | ||||
|         <a href="/" class="btn btn-success">Continue to app</a> | ||||
|       </div> | ||||
|     </div> | ||||
|  | ||||
|     <script type="text/javascript"> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user