From 434d8ef48c3db56cf8846c77e6e8934ce1eba4b7 Mon Sep 17 00:00:00 2001 From: zadam Date: Sat, 23 Nov 2019 19:56:52 +0100 Subject: [PATCH] added extra autofixers for completely missing note_contents or note_revision_contents row --- src/services/consistency_checks.js | 39 ++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/src/services/consistency_checks.js b/src/services/consistency_checks.js index d0c2dfc73..a8f81bd31 100644 --- a/src/services/consistency_checks.js +++ b/src/services/consistency_checks.js @@ -311,6 +311,25 @@ async function findLogicIssues() { } }); + await findAndFixIssues(` + SELECT notes.noteId + FROM notes + LEFT JOIN note_contents USING(noteId) + WHERE + note_contents.noteId IS NULL`, + async ({noteId}, autoFix) => { + if (autoFix) { + const note = await repository.getNote(noteId); + // empty string might be wrong choice for some note types (and protected notes) but it's a best guess + await note.setContent(note.isErased ? null : ''); + + logFix(`Note ${noteId} content was set to empty string since there was no corresponding row`); + } + else { + logError(`Note ${noteId} content row does not exist`); + } + }); + await findAndFixIssues(` SELECT noteId FROM notes @@ -321,6 +340,7 @@ async function findLogicIssues() { async ({noteId}, autoFix) => { if (autoFix) { const note = await repository.getNote(noteId); + // empty string might be wrong choice for some note types (and protected notes) but it's a best guess await note.setContent(''); logFix(`Note ${noteId} content was set to empty string since it was null even though it is not deleted`); @@ -360,6 +380,25 @@ async function findLogicIssues() { } }); + await findAndFixIssues(` + SELECT note_revisions.noteRevisionId + FROM note_revisions + LEFT JOIN note_revision_contents USING(noteRevisionId) + WHERE note_revision_contents.noteRevisionId IS NULL`, + async ({noteRevisionId}, autoFix) => { + if (autoFix) { + const noteRevision = await repository.getNoteRevision(noteRevisionId); + await noteRevision.setContent(null); + noteRevision.isErased = true; + await noteRevision.save(); + + logFix(`Note revision content ${noteRevisionId} was created and set to erased since it did not exist.`); + } + else { + logError(`Note revision content ${noteRevisionId} does not exist`); + } + }); + await findAndFixIssues(` SELECT noteRevisionId FROM note_revisions