mirror of
https://github.com/zadam/trilium.git
synced 2025-11-17 10:40:41 +01:00
sync changes for note content
This commit is contained in:
@@ -239,6 +239,7 @@ async function syncRequest(syncContext, method, requestPath, body) {
|
||||
|
||||
const primaryKeys = {
|
||||
"notes": "noteId",
|
||||
"note_contents": "noteContentId",
|
||||
"branches": "branchId",
|
||||
"note_revisions": "noteRevisionId",
|
||||
"recent_notes": "branchId",
|
||||
@@ -261,9 +262,10 @@ async function getEntityRow(entityName, entityId) {
|
||||
|
||||
const entity = await sql.getRow(`SELECT * FROM ${entityName} WHERE ${primaryKey} = ?`, [entityId]);
|
||||
|
||||
if (entityName === 'notes'
|
||||
&& entity.content !== null
|
||||
&& (entity.type === 'file' || entity.type === 'image')) {
|
||||
if (['note_contents', 'note_revisions'].includes(entityName) && entity.content !== null) {
|
||||
if (typeof entity.content === 'string') {
|
||||
entity.content = Buffer.from(entity.content, 'UTF-8');
|
||||
}
|
||||
|
||||
entity.content = entity.content.toString("base64");
|
||||
}
|
||||
|
||||
@@ -8,6 +8,10 @@ async function addNoteSync(noteId, sourceId) {
|
||||
await addEntitySync("notes", noteId, sourceId)
|
||||
}
|
||||
|
||||
async function addNoteContentSync(noteContentId, sourceId) {
|
||||
await addEntitySync("note_contents", noteContentId, sourceId)
|
||||
}
|
||||
|
||||
async function addBranchSync(branchId, sourceId) {
|
||||
await addEntitySync("branches", branchId, sourceId)
|
||||
}
|
||||
@@ -84,6 +88,7 @@ async function fillAllSyncRows() {
|
||||
await sql.execute("DELETE FROM sync");
|
||||
|
||||
await fillSyncRows("notes", "noteId");
|
||||
await fillSyncRows("note_contents", "noteContentId");
|
||||
await fillSyncRows("branches", "branchId");
|
||||
await fillSyncRows("note_revisions", "noteRevisionId");
|
||||
await fillSyncRows("recent_notes", "branchId");
|
||||
@@ -95,6 +100,7 @@ async function fillAllSyncRows() {
|
||||
|
||||
module.exports = {
|
||||
addNoteSync,
|
||||
addNoteContentSync,
|
||||
addBranchSync,
|
||||
addNoteReorderingSync,
|
||||
addNoteRevisionSync,
|
||||
|
||||
@@ -10,6 +10,9 @@ async function updateEntity(sync, entity, sourceId) {
|
||||
if (entityName === 'notes') {
|
||||
await updateNote(entity, sourceId);
|
||||
}
|
||||
else if (entityName === 'note_contents') {
|
||||
await updateNoteContent(entity, sourceId);
|
||||
}
|
||||
else if (entityName === 'branches') {
|
||||
await updateBranch(entity, sourceId);
|
||||
}
|
||||
@@ -48,17 +51,7 @@ async function updateEntity(sync, entity, sourceId) {
|
||||
}
|
||||
}
|
||||
|
||||
async function deserializeNoteContentBuffer(note) {
|
||||
const noteContent = await note.getNoteContent();
|
||||
|
||||
if (noteContent.content !== null && (note.type === 'file' || note.type === 'image')) {
|
||||
noteContent.content = Buffer.from(noteContent.content, 'base64');
|
||||
}
|
||||
}
|
||||
|
||||
async function updateNote(entity, sourceId) {
|
||||
await deserializeNoteContentBuffer(entity);
|
||||
|
||||
const origNote = await sql.getRow("SELECT * FROM notes WHERE noteId = ?", [entity.noteId]);
|
||||
|
||||
if (!origNote || origNote.dateModified <= entity.dateModified) {
|
||||
@@ -72,6 +65,22 @@ async function updateNote(entity, sourceId) {
|
||||
}
|
||||
}
|
||||
|
||||
async function updateNoteContent(entity, sourceId) {
|
||||
const origNoteContent = await sql.getRow("SELECT * FROM note_contents WHERE noteId = ?", [entity.noteId]);
|
||||
|
||||
if (!origNoteContent || origNoteContent.dateModified <= entity.dateModified) {
|
||||
entity.content = entity.content === null ? null : Buffer.from(entity.content, 'base64');
|
||||
|
||||
await sql.transactional(async () => {
|
||||
await sql.replace("note_contents", entity);
|
||||
|
||||
await syncTableService.addNoteContentSync(entity.noteContentId, sourceId);
|
||||
});
|
||||
|
||||
log.info("Update/sync note content " + entity.noteContentId);
|
||||
}
|
||||
}
|
||||
|
||||
async function updateBranch(entity, sourceId) {
|
||||
const orig = await sql.getRowOrNull("SELECT * FROM branches WHERE branchId = ?", [entity.branchId]);
|
||||
|
||||
@@ -99,6 +108,8 @@ async function updateNoteRevision(entity, sourceId) {
|
||||
// we update note revision even if date modified to is the same because the only thing which might have changed
|
||||
// is the protected status (and correnspondingly title and content) which doesn't affect the dateModifiedTo
|
||||
if (orig === null || orig.dateModifiedTo <= entity.dateModifiedTo) {
|
||||
entity.content = entity.content === null ? null : Buffer.from(entity.content, 'base64');
|
||||
|
||||
await sql.replace('note_revisions', entity);
|
||||
|
||||
await syncTableService.addNoteRevisionSync(entity.noteRevisionId, sourceId);
|
||||
|
||||
Reference in New Issue
Block a user