mirror of
https://github.com/zadam/trilium.git
synced 2025-06-06 18:08:33 +02:00
added checksum to note_attachment
This commit is contained in:
parent
a7b103e07a
commit
3c57f08ef7
@ -5,6 +5,7 @@ CREATE TABLE IF NOT EXISTS "note_attachments"
|
|||||||
name TEXT not null,
|
name TEXT not null,
|
||||||
mime TEXT not null,
|
mime TEXT not null,
|
||||||
isProtected INT not null DEFAULT 0,
|
isProtected INT not null DEFAULT 0,
|
||||||
|
contentCheckSum TEXT not null,
|
||||||
utcDateModified TEXT not null,
|
utcDateModified TEXT not null,
|
||||||
isDeleted INT not null,
|
isDeleted INT not null,
|
||||||
`deleteId` TEXT DEFAULT NULL);
|
`deleteId` TEXT DEFAULT NULL);
|
||||||
|
@ -1442,17 +1442,22 @@ class BNote extends AbstractBeccaEntity {
|
|||||||
* @returns {BNoteAttachment}
|
* @returns {BNoteAttachment}
|
||||||
*/
|
*/
|
||||||
saveNoteAttachment(name, mime, content) {
|
saveNoteAttachment(name, mime, content) {
|
||||||
this.getNoteAttachments()
|
let noteAttachment = this.getNoteAttachmentByName(name);
|
||||||
|
|
||||||
const noteAttachment = new BNoteAttachment({
|
if (noteAttachment
|
||||||
|
&& noteAttachment.mime === mime
|
||||||
|
&& noteAttachment.contentCheckSum === noteAttachment.calculateCheckSum(content)) {
|
||||||
|
|
||||||
|
return noteAttachment; // no change
|
||||||
|
}
|
||||||
|
|
||||||
|
noteAttachment = new BNoteAttachment({
|
||||||
noteId: this.noteId,
|
noteId: this.noteId,
|
||||||
name,
|
name,
|
||||||
mime,
|
mime,
|
||||||
isProtected: this.isProtected
|
isProtected: this.isProtected
|
||||||
});
|
});
|
||||||
|
|
||||||
noteAttachment.save();
|
|
||||||
|
|
||||||
noteAttachment.setContent(content);
|
noteAttachment.setContent(content);
|
||||||
|
|
||||||
return noteAttachment;
|
return noteAttachment;
|
||||||
|
@ -33,6 +33,8 @@ class BNoteAttachment extends AbstractBeccaEntity {
|
|||||||
/** @type {boolean} */
|
/** @type {boolean} */
|
||||||
this.isProtected = !!row.isProtected;
|
this.isProtected = !!row.isProtected;
|
||||||
/** @type {string} */
|
/** @type {string} */
|
||||||
|
this.contentCheckSum = row.contentCheckSum;
|
||||||
|
/** @type {string} */
|
||||||
this.utcDateModified = row.utcDateModified;
|
this.utcDateModified = row.utcDateModified;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,18 +99,22 @@ class BNoteAttachment extends AbstractBeccaEntity {
|
|||||||
|
|
||||||
sql.upsert("note_attachment_contents", "noteAttachmentId", pojo);
|
sql.upsert("note_attachment_contents", "noteAttachmentId", pojo);
|
||||||
|
|
||||||
const hash = utils.hash(`${this.noteAttachmentId}|${pojo.content.toString()}`);
|
this.contentCheckSum = this.calculateCheckSum(pojo.content);
|
||||||
|
|
||||||
entityChangesService.addEntityChange({
|
entityChangesService.addEntityChange({
|
||||||
entityName: 'note_attachment_contents',
|
entityName: 'note_attachment_contents',
|
||||||
entityId: this.noteAttachmentId,
|
entityId: this.noteAttachmentId,
|
||||||
hash: hash,
|
hash: this.contentCheckSum,
|
||||||
isErased: false,
|
isErased: false,
|
||||||
utcDateChanged: this.getUtcDateChanged(),
|
utcDateChanged: this.getUtcDateChanged(),
|
||||||
isSynced: true
|
isSynced: true
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
calculateCheckSum(content) {
|
||||||
|
return utils.hash(`${this.noteAttachmentId}|${content.toString()}`);
|
||||||
|
}
|
||||||
|
|
||||||
beforeSaving() {
|
beforeSaving() {
|
||||||
if (!this.name.match(/^[a-z0-9]+$/i)) {
|
if (!this.name.match(/^[a-z0-9]+$/i)) {
|
||||||
throw new Error(`Name must be alphanumerical, "${this.name}" given.`);
|
throw new Error(`Name must be alphanumerical, "${this.name}" given.`);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user