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,
|
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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user