mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
cleanup of entity changes processing
This commit is contained in:
parent
5be7f003ca
commit
2035304b63
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user