From 10a5773c66e678c6d2bd3bd9dc9952d5cd76b795 Mon Sep 17 00:00:00 2001 From: zadam Date: Tue, 21 Dec 2021 14:25:26 +0100 Subject: [PATCH] added consistency check to reconcile erased status between entity_changes and data --- src/services/consistency_checks.js | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/services/consistency_checks.js b/src/services/consistency_checks.js index 2869c0390..76debe2db 100644 --- a/src/services/consistency_checks.js +++ b/src/services/consistency_checks.js @@ -538,6 +538,27 @@ class ConsistencyChecks { logError(`Unrecognized entity change id=${id}, entityName=${entityName}, entityId=${entityId}`); } }); + + this.findAndFixIssues(` + SELECT + id, entityId + FROM + entity_changes + JOIN ${entityName} ON entityId = ${key} + WHERE + entity_changes.isErased = 1 + AND entity_changes.entityName = '${entityName}'`, + ({id, entityId}) => { + if (this.autoFix) { + sql.execute(`DELETE FROM ${entityName} WHERE ${key} = ?`, [entityId]); + + this.reloadNeeded = true; + + logFix(`Erasing entityName=${entityName}, entityId=${entityId} since entity change id=${id} has it as erased.`); + } else { + logError(`Entity change id=${id} has entityName=${entityName}, entityId=${entityId} as erased, but it's not.`); + } + }); } findEntityChangeIssues() { @@ -604,14 +625,14 @@ class ConsistencyChecks { this.fixedIssues = false; this.reloadNeeded = false; + this.findEntityChangeIssues(); + this.findBrokenReferenceIssues(); this.findExistencyIssues(); this.findLogicIssues(); - this.findEntityChangeIssues(); - this.findWronglyNamedAttributes(); this.findSyncIssues();