diff --git a/src/routes/api/sync.js b/src/routes/api/sync.js index 214acd2e8..43bbdb656 100644 --- a/src/routes/api/sync.js +++ b/src/routes/api/sync.js @@ -200,9 +200,7 @@ function queueSector(req) { const entityName = utils.sanitizeSqlIdentifier(req.params.entityName); const sector = utils.sanitizeSqlIdentifier(req.params.sector); - const entityPrimaryKey = entityConstructor.getEntityFromEntityName(entityName).primaryKeyName; - - entityChangesService.addEntityChangesForSector(entityName, entityPrimaryKey, sector); + entityChangesService.addEntityChangesForSector(entityName, sector); } module.exports = { diff --git a/src/services/entity_changes.js b/src/services/entity_changes.js index b9b8e600b..72a389dfa 100644 --- a/src/services/entity_changes.js +++ b/src/services/entity_changes.js @@ -53,22 +53,14 @@ function moveEntityChangeToTop(entityName, entityId) { addEntityChange(entityName, entityId, hash, null, isSynced); } -function addEntityChangesForSector(entityName, entityPrimaryKey, sector) { +function addEntityChangesForSector(entityName, sector) { const startTime = Date.now(); - const repository = require('./repository'); + + const entityChanges = sql.getRows(`SELECT * FROM entity_changes WHERE entityName = ? AND SUBSTR(entityId, 1, 1) = ?`, [entityName, sector]); sql.transactional(() => { - const entityIds = sql.getColumn(`SELECT ${entityPrimaryKey} FROM ${entityName} WHERE SUBSTR(${entityPrimaryKey}, 1, 1) = ?`, [sector]); - - for (const entityId of entityIds) { - // retrieving entity one by one to avoid memory issues with note_contents - const entity = repository.getEntity(`SELECT * FROM ${entityName} WHERE ${entityPrimaryKey} = ?`, [entityId]); - - if (entityName === 'options' && !entity.isSynced) { - continue - } - - insertEntityChange(entityName, entityId, entity.generateHash(), false, entity.getUtcDateChanged(), 'content-check', true); + for (const ec of entityChanges) { + insertEntityChange(entityName, ec.entityId, ec.hash, ec.isErased, ec.utcDateChanged, ec.sourceId, ec.isSynced); } }); diff --git a/src/services/sync.js b/src/services/sync.js index 9aad2e3e7..71ad6fa05 100644 --- a/src/services/sync.js +++ b/src/services/sync.js @@ -245,9 +245,7 @@ async function checkContentHash(syncContext) { const failedChecks = contentHashService.checkContentHashes(resp.entityHashes); for (const {entityName, sector} of failedChecks) { - const entityPrimaryKey = entityConstructor.getEntityFromEntityName(entityName).primaryKeyName; - - entityChangesService.addEntityChangesForSector(entityName, entityPrimaryKey, sector); + entityChangesService.addEntityChangesForSector(entityName, sector); await syncRequest(syncContext, 'POST', `/api/sync/queue-sector/${entityName}/${sector}`); }