diff --git a/src/services/entity_changes.js b/src/services/entity_changes.js index a1b205309..4daefbe92 100644 --- a/src/services/entity_changes.js +++ b/src/services/entity_changes.js @@ -7,10 +7,13 @@ const becca = require("../becca/becca"); let maxEntityChangeId = 0; -function addEntityChange(origEntityChange) { +function addEntityChange(origEntityChange, keepOriginalId = false) { const ec = {...origEntityChange}; - delete ec.id; + if (!keepOriginalId) { + delete ec.id; + } + ec.sourceId = ec.sourceId || cls.getSourceId() || sourceIdService.getCurrentSourceId(); ec.isSynced = ec.isSynced ? 1 : 0; ec.isErased = ec.isErased ? 1 : 0; diff --git a/src/services/sync_update.js b/src/services/sync_update.js index bf181bf43..908a7927c 100644 --- a/src/services/sync_update.js +++ b/src/services/sync_update.js @@ -9,7 +9,7 @@ function updateEntity(entityChange, entityRow) { if (!entityRow) { if (entityChange.isSynced) { if (entityChange.isErased) { - entityChangesService.addEntityChange(entityChange); + entityChangesService.addEntityChange(entityChange, true); } else { log.info(`Encountered synced non-erased entity change without entity: ${JSON.stringify(entityChange)}`); @@ -54,7 +54,7 @@ function updateNormalEntity(remoteEntityChange, entity) { sql.execute(`DELETE FROM ${remoteEntityChange.entityName} WHERE ${primaryKey} = ?`, remoteEntityChange.entityId); - entityChangesService.addEntityChange(remoteEntityChange); + entityChangesService.addEntityChange(remoteEntityChange, true); }); return true; @@ -71,7 +71,7 @@ function updateNormalEntity(remoteEntityChange, entity) { sql.transactional(() => { sql.replace(remoteEntityChange.entityName, entity); - entityChangesService.addEntityChange(remoteEntityChange); + entityChangesService.addEntityChange(remoteEntityChange, true); }); return true; @@ -86,7 +86,7 @@ function updateNoteReordering(entityChange, entity) { sql.execute("UPDATE branches SET notePosition = ? WHERE branchId = ?", [entity[key], key]); } - entityChangesService.addEntityChange(entityChange); + entityChangesService.addEntityChange(entityChange, true); }); return true;