mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 10:26:08 +01:00 
			
		
		
		
	cleanup of entity changes processing
This commit is contained in:
		| @@ -217,7 +217,7 @@ class Note extends AbstractEntity { | ||||
|             isErased: false, | ||||
|             utcDateChanged: pojo.utcDateModified, | ||||
|             isSynced: true | ||||
|         }, null); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     setJsonContent(content) { | ||||
|   | ||||
| @@ -133,7 +133,7 @@ class NoteRevision extends AbstractEntity { | ||||
|             isErased: false, | ||||
|             utcDateChanged: this.getUtcDateChanged(), | ||||
|             isSynced: true | ||||
|         }, null); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|     beforeSaving() { | ||||
|   | ||||
| @@ -170,10 +170,10 @@ function update(req) { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     const {sourceId, entities} = body; | ||||
|     const {entities} = body; | ||||
|  | ||||
|     for (const {entityChange, entity} of entities) { | ||||
|         syncUpdateService.updateEntity(entityChange, entity, sourceId); | ||||
|         syncUpdateService.updateEntity(entityChange, entity); | ||||
|     } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -307,8 +307,9 @@ class ConsistencyChecks { | ||||
|                             entityId: noteId, | ||||
|                             hash: hash, | ||||
|                             isErased: false, | ||||
|                             utcDateChanged: utcDateModified | ||||
|                         }, null); | ||||
|                             utcDateChanged: utcDateModified, | ||||
|                             isSynced: true | ||||
|                         }); | ||||
|                     } | ||||
|                     else { | ||||
|                         // 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}'  | ||||
|                                   AND entity_changes.entityId = ${key}  | ||||
|         WHERE  | ||||
|           entity_changes.id IS NULL AND ` + (entityName === 'options' ? 'options.isSynced = 1' : '1'), | ||||
|           entity_changes.id IS NULL`, | ||||
|             ({entityId}) => { | ||||
|                 if (this.autoFix) { | ||||
|                     const entity = becca.getEntity(entityName, entityId); | ||||
| @@ -476,8 +477,9 @@ class ConsistencyChecks { | ||||
|                         entityId, | ||||
|                         hash: entity.generateHash(), | ||||
|                         isErased: false, | ||||
|                         utcDateChanged: entity.getUtcDateChanged() | ||||
|                     }, null); | ||||
|                         utcDateChanged: entity.getUtcDateChanged(), | ||||
|                         isSynced: entityName !== 'options' || entity.isSynced | ||||
|                     }); | ||||
|  | ||||
|                     logFix(`Created missing entity change for entityName=${entityName}, entityId=${entityId}`); | ||||
|                 } else { | ||||
|   | ||||
| @@ -7,28 +7,15 @@ const becca = require("../becca/becca"); | ||||
|  | ||||
| let maxEntityChangeId = 0; | ||||
|  | ||||
| function insertEntityChange(entityName, entityId, hash, isErased, utcDateChanged, sourceId = null, isSynced = true) { | ||||
|     const entityChange = { | ||||
|         entityName: entityName, | ||||
|         entityId: entityId, | ||||
|         hash: hash, | ||||
|         sourceId: sourceId || cls.getSourceId() || sourceIdService.getCurrentSourceId(), | ||||
|         isSynced: isSynced ? 1 : 0, | ||||
|         isErased: isErased ? 1 : 0, | ||||
|         utcDateChanged: utcDateChanged | ||||
|     }; | ||||
|  | ||||
| function addEntityChange(entityChange) { | ||||
|     entityChange.sourceId = entityChange.sourceId || cls.getSourceId() || sourceIdService.getCurrentSourceId(); | ||||
|     entityChange.isSynced = entityChange.isSynced ? 1 : 0; | ||||
|     entityChange.isErased = entityChange.isErased ? 1 : 0; | ||||
|     entityChange.id = sql.replace("entity_changes", entityChange); | ||||
|  | ||||
|     maxEntityChangeId = Math.max(maxEntityChangeId, entityChange.id); | ||||
|  | ||||
|     return entityChange; | ||||
| } | ||||
|  | ||||
| function addEntityChange(entityChange, sourceId) { | ||||
|     const localEntityChange = insertEntityChange(entityChange.entityName, entityChange.entityId, entityChange.hash, entityChange.isErased, entityChange.utcDateChanged, sourceId, entityChange.isSynced); | ||||
|  | ||||
|     cls.addEntityChange(localEntityChange); | ||||
|     cls.addEntityChange(entityChange); | ||||
| } | ||||
|  | ||||
| function addNoteReorderingEntityChange(parentNoteId, sourceId) { | ||||
| @@ -38,8 +25,9 @@ function addNoteReorderingEntityChange(parentNoteId, sourceId) { | ||||
|         hash: 'N/A', | ||||
|         isErased: false, | ||||
|         utcDateChanged: dateUtils.utcNowDateTime(), | ||||
|         isSynced: true | ||||
|     }, sourceId); | ||||
|         isSynced: true, | ||||
|         sourceId | ||||
|     }); | ||||
|  | ||||
|     const eventService = require('./events'); | ||||
|  | ||||
| @@ -52,9 +40,7 @@ function addNoteReorderingEntityChange(parentNoteId, sourceId) { | ||||
| function moveEntityChangeToTop(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); | ||||
|  | ||||
|     cls.addEntityChange(localEntityChange); | ||||
|     addEntityChange(ec); | ||||
| } | ||||
|  | ||||
| function addEntityChangesForSector(entityName, sector) { | ||||
| @@ -64,7 +50,7 @@ function addEntityChangesForSector(entityName, sector) { | ||||
|  | ||||
|     sql.transactional(() => { | ||||
|         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, | ||||
|                         utcDateChanged: entity.getUtcDateChanged(), | ||||
|                         isSynced: entityName !== 'options' || !!entity.isSynced | ||||
|                     }, null); | ||||
|                     }); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|   | ||||
| @@ -156,7 +156,7 @@ async function pullChanges(syncContext) { | ||||
|                         atLeastOnePullApplied = true; | ||||
|                     } | ||||
|  | ||||
|                     syncUpdateService.updateEntity(entityChange, entity, syncContext.sourceId); | ||||
|                     syncUpdateService.updateEntity(entityChange, entity); | ||||
|                 } | ||||
|  | ||||
|                 outstandingPullCount = Math.max(0, resp.maxEntityChangeId - entityChange.id); | ||||
|   | ||||
| @@ -4,12 +4,12 @@ const entityChangesService = require('./entity_changes'); | ||||
| const eventService = require('./events'); | ||||
| const entityConstructor = require("../becca/entity_constructor"); | ||||
|  | ||||
| function updateEntity(entityChange, entity, sourceId) { | ||||
| function updateEntity(entityChange, entity) { | ||||
|     // can be undefined for options with isSynced=false | ||||
|     if (!entity) { | ||||
|         if (entityChange.isSynced) { | ||||
|             if (entityChange.isErased) { | ||||
|                 entityChangesService.addEntityChange(entityChange, sourceId); | ||||
|                 entityChangesService.addEntityChange(entityChange); | ||||
|             } | ||||
|             else { | ||||
|                 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' | ||||
|         ? updateNoteReordering(entityChange, entity, sourceId) | ||||
|         : updateNormalEntity(entityChange, entity, sourceId); | ||||
|         ? updateNoteReordering(entityChange, entity) | ||||
|         : updateNormalEntity(entityChange, entity); | ||||
|  | ||||
|     if (updated && !entityChange.isErased) { | ||||
|         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(` | ||||
|         SELECT utcDateChanged, hash, isErased | ||||
|         FROM entity_changes  | ||||
| @@ -54,7 +54,7 @@ function updateNormalEntity(remoteEntityChange, entity, sourceId) { | ||||
|  | ||||
|             sql.execute(`DELETE FROM ${remoteEntityChange.entityName} WHERE ${primaryKey} = ?`, remoteEntityChange.entityId); | ||||
|  | ||||
|             entityChangesService.addEntityChange(remoteEntityChange, sourceId); | ||||
|             entityChangesService.addEntityChange(remoteEntityChange); | ||||
|         }); | ||||
|  | ||||
|         return true; | ||||
| @@ -71,7 +71,7 @@ function updateNormalEntity(remoteEntityChange, entity, sourceId) { | ||||
|         sql.transactional(() => { | ||||
|             sql.replace(remoteEntityChange.entityName, entity); | ||||
|  | ||||
|             entityChangesService.addEntityChange(remoteEntityChange, sourceId); | ||||
|             entityChangesService.addEntityChange(remoteEntityChange); | ||||
|         }); | ||||
|  | ||||
|         return true; | ||||
| @@ -80,13 +80,13 @@ function updateNormalEntity(remoteEntityChange, entity, sourceId) { | ||||
|     return false; | ||||
| } | ||||
|  | ||||
| function updateNoteReordering(entityChange, entity, sourceId) { | ||||
| function updateNoteReordering(entityChange, entity) { | ||||
|     sql.transactional(() => { | ||||
|         for (const key in entity) { | ||||
|             sql.execute("UPDATE branches SET notePosition = ? WHERE branchId = ?", [entity[key], key]); | ||||
|         } | ||||
|  | ||||
|         entityChangesService.addEntityChange(entityChange, sourceId); | ||||
|         entityChangesService.addEntityChange(entityChange); | ||||
|     }); | ||||
|  | ||||
|     return true; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user