added extra autofixers for completely missing note_contents or note_revision_contents row

This commit is contained in:
zadam 2019-11-23 19:56:52 +01:00
parent c8ba07a4ae
commit 434d8ef48c

View File

@ -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