mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 18:36:30 +01:00 
			
		
		
		
	cleanup of entity changes processing
This commit is contained in:
		| @@ -217,7 +217,7 @@ class Note extends AbstractEntity { | |||||||
|             isErased: false, |             isErased: false, | ||||||
|             utcDateChanged: pojo.utcDateModified, |             utcDateChanged: pojo.utcDateModified, | ||||||
|             isSynced: true |             isSynced: true | ||||||
|         }, null); |         }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     setJsonContent(content) { |     setJsonContent(content) { | ||||||
|   | |||||||
| @@ -133,7 +133,7 @@ class NoteRevision extends AbstractEntity { | |||||||
|             isErased: false, |             isErased: false, | ||||||
|             utcDateChanged: this.getUtcDateChanged(), |             utcDateChanged: this.getUtcDateChanged(), | ||||||
|             isSynced: true |             isSynced: true | ||||||
|         }, null); |         }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     beforeSaving() { |     beforeSaving() { | ||||||
|   | |||||||
| @@ -170,10 +170,10 @@ function update(req) { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     const {sourceId, entities} = body; |     const {entities} = body; | ||||||
|  |  | ||||||
|     for (const {entityChange, entity} of entities) { |     for (const {entityChange, entity} of entities) { | ||||||
|         syncUpdateService.updateEntity(entityChange, entity, sourceId); |         syncUpdateService.updateEntity(entityChange, entity); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -307,8 +307,9 @@ class ConsistencyChecks { | |||||||
|                             entityId: noteId, |                             entityId: noteId, | ||||||
|                             hash: hash, |                             hash: hash, | ||||||
|                             isErased: false, |                             isErased: false, | ||||||
|                             utcDateChanged: utcDateModified |                             utcDateChanged: utcDateModified, | ||||||
|                         }, null); |                             isSynced: true | ||||||
|  |                         }); | ||||||
|                     } |                     } | ||||||
|                     else { |                     else { | ||||||
|                         // empty string might be wrong choice for some note types but it's a best guess |                         // empty string might be wrong choice for some note types but it's a best guess | ||||||
| @@ -466,7 +467,7 @@ class ConsistencyChecks { | |||||||
|           LEFT JOIN entity_changes ON entity_changes.entityName = '${entityName}'  |           LEFT JOIN entity_changes ON entity_changes.entityName = '${entityName}'  | ||||||
|                                   AND entity_changes.entityId = ${key}  |                                   AND entity_changes.entityId = ${key}  | ||||||
|         WHERE  |         WHERE  | ||||||
|           entity_changes.id IS NULL AND ` + (entityName === 'options' ? 'options.isSynced = 1' : '1'), |           entity_changes.id IS NULL`, | ||||||
|             ({entityId}) => { |             ({entityId}) => { | ||||||
|                 if (this.autoFix) { |                 if (this.autoFix) { | ||||||
|                     const entity = becca.getEntity(entityName, entityId); |                     const entity = becca.getEntity(entityName, entityId); | ||||||
| @@ -476,8 +477,9 @@ class ConsistencyChecks { | |||||||
|                         entityId, |                         entityId, | ||||||
|                         hash: entity.generateHash(), |                         hash: entity.generateHash(), | ||||||
|                         isErased: false, |                         isErased: false, | ||||||
|                         utcDateChanged: entity.getUtcDateChanged() |                         utcDateChanged: entity.getUtcDateChanged(), | ||||||
|                     }, null); |                         isSynced: entityName !== 'options' || entity.isSynced | ||||||
|  |                     }); | ||||||
|  |  | ||||||
|                     logFix(`Created missing entity change for entityName=${entityName}, entityId=${entityId}`); |                     logFix(`Created missing entity change for entityName=${entityName}, entityId=${entityId}`); | ||||||
|                 } else { |                 } else { | ||||||
|   | |||||||
| @@ -7,28 +7,15 @@ const becca = require("../becca/becca"); | |||||||
|  |  | ||||||
| let maxEntityChangeId = 0; | let maxEntityChangeId = 0; | ||||||
|  |  | ||||||
| function insertEntityChange(entityName, entityId, hash, isErased, utcDateChanged, sourceId = null, isSynced = true) { | function addEntityChange(entityChange) { | ||||||
|     const entityChange = { |     entityChange.sourceId = entityChange.sourceId || cls.getSourceId() || sourceIdService.getCurrentSourceId(); | ||||||
|         entityName: entityName, |     entityChange.isSynced = entityChange.isSynced ? 1 : 0; | ||||||
|         entityId: entityId, |     entityChange.isErased = entityChange.isErased ? 1 : 0; | ||||||
|         hash: hash, |  | ||||||
|         sourceId: sourceId || cls.getSourceId() || sourceIdService.getCurrentSourceId(), |  | ||||||
|         isSynced: isSynced ? 1 : 0, |  | ||||||
|         isErased: isErased ? 1 : 0, |  | ||||||
|         utcDateChanged: utcDateChanged |  | ||||||
|     }; |  | ||||||
|  |  | ||||||
|     entityChange.id = sql.replace("entity_changes", entityChange); |     entityChange.id = sql.replace("entity_changes", entityChange); | ||||||
|  |  | ||||||
|     maxEntityChangeId = Math.max(maxEntityChangeId, entityChange.id); |     maxEntityChangeId = Math.max(maxEntityChangeId, entityChange.id); | ||||||
|  |  | ||||||
|     return entityChange; |     cls.addEntityChange(entityChange); | ||||||
| } |  | ||||||
|  |  | ||||||
| function addEntityChange(entityChange, sourceId) { |  | ||||||
|     const localEntityChange = insertEntityChange(entityChange.entityName, entityChange.entityId, entityChange.hash, entityChange.isErased, entityChange.utcDateChanged, sourceId, entityChange.isSynced); |  | ||||||
|  |  | ||||||
|     cls.addEntityChange(localEntityChange); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| function addNoteReorderingEntityChange(parentNoteId, sourceId) { | function addNoteReorderingEntityChange(parentNoteId, sourceId) { | ||||||
| @@ -38,8 +25,9 @@ function addNoteReorderingEntityChange(parentNoteId, sourceId) { | |||||||
|         hash: 'N/A', |         hash: 'N/A', | ||||||
|         isErased: false, |         isErased: false, | ||||||
|         utcDateChanged: dateUtils.utcNowDateTime(), |         utcDateChanged: dateUtils.utcNowDateTime(), | ||||||
|         isSynced: true |         isSynced: true, | ||||||
|     }, sourceId); |         sourceId | ||||||
|  |     }); | ||||||
|  |  | ||||||
|     const eventService = require('./events'); |     const eventService = require('./events'); | ||||||
|  |  | ||||||
| @@ -52,9 +40,7 @@ function addNoteReorderingEntityChange(parentNoteId, sourceId) { | |||||||
| function moveEntityChangeToTop(entityName, entityId) { | function moveEntityChangeToTop(entityName, entityId) { | ||||||
|     const ec = sql.getRow(`SELECT * FROM entity_changes WHERE entityName = ? AND entityId = ?`, [entityName, entityId]); |     const ec = sql.getRow(`SELECT * FROM entity_changes WHERE entityName = ? AND entityId = ?`, [entityName, entityId]); | ||||||
|  |  | ||||||
|     const localEntityChange = insertEntityChange(entityName, entityId, ec.hash, ec.isErased, ec.utcDateChanged, ec.sourceId, ec.isSynced); |     addEntityChange(ec); | ||||||
|  |  | ||||||
|     cls.addEntityChange(localEntityChange); |  | ||||||
| } | } | ||||||
|  |  | ||||||
| function addEntityChangesForSector(entityName, sector) { | function addEntityChangesForSector(entityName, sector) { | ||||||
| @@ -64,7 +50,7 @@ function addEntityChangesForSector(entityName, sector) { | |||||||
|  |  | ||||||
|     sql.transactional(() => { |     sql.transactional(() => { | ||||||
|         for (const ec of entityChanges) { |         for (const ec of entityChanges) { | ||||||
|             insertEntityChange(entityName, ec.entityId, ec.hash, ec.isErased, ec.utcDateChanged, ec.sourceId, ec.isSynced); |             addEntityChange(ec); | ||||||
|         } |         } | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
| @@ -107,7 +93,7 @@ function fillEntityChanges(entityName, entityPrimaryKey, condition = '') { | |||||||
|                         isErased: false, |                         isErased: false, | ||||||
|                         utcDateChanged: entity.getUtcDateChanged(), |                         utcDateChanged: entity.getUtcDateChanged(), | ||||||
|                         isSynced: entityName !== 'options' || !!entity.isSynced |                         isSynced: entityName !== 'options' || !!entity.isSynced | ||||||
|                     }, null); |                     }); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -156,7 +156,7 @@ async function pullChanges(syncContext) { | |||||||
|                         atLeastOnePullApplied = true; |                         atLeastOnePullApplied = true; | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|                     syncUpdateService.updateEntity(entityChange, entity, syncContext.sourceId); |                     syncUpdateService.updateEntity(entityChange, entity); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 outstandingPullCount = Math.max(0, resp.maxEntityChangeId - entityChange.id); |                 outstandingPullCount = Math.max(0, resp.maxEntityChangeId - entityChange.id); | ||||||
|   | |||||||
| @@ -4,12 +4,12 @@ const entityChangesService = require('./entity_changes'); | |||||||
| const eventService = require('./events'); | const eventService = require('./events'); | ||||||
| const entityConstructor = require("../becca/entity_constructor"); | const entityConstructor = require("../becca/entity_constructor"); | ||||||
|  |  | ||||||
| function updateEntity(entityChange, entity, sourceId) { | function updateEntity(entityChange, entity) { | ||||||
|     // can be undefined for options with isSynced=false |     // can be undefined for options with isSynced=false | ||||||
|     if (!entity) { |     if (!entity) { | ||||||
|         if (entityChange.isSynced) { |         if (entityChange.isSynced) { | ||||||
|             if (entityChange.isErased) { |             if (entityChange.isErased) { | ||||||
|                 entityChangesService.addEntityChange(entityChange, sourceId); |                 entityChangesService.addEntityChange(entityChange); | ||||||
|             } |             } | ||||||
|             else { |             else { | ||||||
|                 log.info(`Encountered synced non-erased entity change without entity: ${JSON.stringify(entityChange)}`); |                 log.info(`Encountered synced non-erased entity change without entity: ${JSON.stringify(entityChange)}`); | ||||||
| @@ -23,8 +23,8 @@ function updateEntity(entityChange, entity, sourceId) { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     const updated = entityChange.entityName === 'note_reordering' |     const updated = entityChange.entityName === 'note_reordering' | ||||||
|         ? updateNoteReordering(entityChange, entity, sourceId) |         ? updateNoteReordering(entityChange, entity) | ||||||
|         : updateNormalEntity(entityChange, entity, sourceId); |         : updateNormalEntity(entityChange, entity); | ||||||
|  |  | ||||||
|     if (updated && !entityChange.isErased) { |     if (updated && !entityChange.isErased) { | ||||||
|         if (entity.isDeleted) { |         if (entity.isDeleted) { | ||||||
| @@ -42,7 +42,7 @@ function updateEntity(entityChange, entity, sourceId) { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| function updateNormalEntity(remoteEntityChange, entity, sourceId) { | function updateNormalEntity(remoteEntityChange, entity) { | ||||||
|     const localEntityChange = sql.getRow(` |     const localEntityChange = sql.getRow(` | ||||||
|         SELECT utcDateChanged, hash, isErased |         SELECT utcDateChanged, hash, isErased | ||||||
|         FROM entity_changes  |         FROM entity_changes  | ||||||
| @@ -54,7 +54,7 @@ function updateNormalEntity(remoteEntityChange, entity, sourceId) { | |||||||
|  |  | ||||||
|             sql.execute(`DELETE FROM ${remoteEntityChange.entityName} WHERE ${primaryKey} = ?`, remoteEntityChange.entityId); |             sql.execute(`DELETE FROM ${remoteEntityChange.entityName} WHERE ${primaryKey} = ?`, remoteEntityChange.entityId); | ||||||
|  |  | ||||||
|             entityChangesService.addEntityChange(remoteEntityChange, sourceId); |             entityChangesService.addEntityChange(remoteEntityChange); | ||||||
|         }); |         }); | ||||||
|  |  | ||||||
|         return true; |         return true; | ||||||
| @@ -71,7 +71,7 @@ function updateNormalEntity(remoteEntityChange, entity, sourceId) { | |||||||
|         sql.transactional(() => { |         sql.transactional(() => { | ||||||
|             sql.replace(remoteEntityChange.entityName, entity); |             sql.replace(remoteEntityChange.entityName, entity); | ||||||
|  |  | ||||||
|             entityChangesService.addEntityChange(remoteEntityChange, sourceId); |             entityChangesService.addEntityChange(remoteEntityChange); | ||||||
|         }); |         }); | ||||||
|  |  | ||||||
|         return true; |         return true; | ||||||
| @@ -80,13 +80,13 @@ function updateNormalEntity(remoteEntityChange, entity, sourceId) { | |||||||
|     return false; |     return false; | ||||||
| } | } | ||||||
|  |  | ||||||
| function updateNoteReordering(entityChange, entity, sourceId) { | function updateNoteReordering(entityChange, entity) { | ||||||
|     sql.transactional(() => { |     sql.transactional(() => { | ||||||
|         for (const key in entity) { |         for (const key in entity) { | ||||||
|             sql.execute("UPDATE branches SET notePosition = ? WHERE branchId = ?", [entity[key], key]); |             sql.execute("UPDATE branches SET notePosition = ? WHERE branchId = ?", [entity[key], key]); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         entityChangesService.addEntityChange(entityChange, sourceId); |         entityChangesService.addEntityChange(entityChange); | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|     return true; |     return true; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user