From 4e5e3e4675696ba93af4c53cfd7c973d4fcef5ed Mon Sep 17 00:00:00 2001 From: zadam Date: Fri, 1 Nov 2019 19:21:48 +0100 Subject: [PATCH] note revisions changes WIP --- .../0150__note_revision_contents.sql | 8 +++--- src/entities/note.js | 2 +- src/entities/note_revision.js | 15 ++++++---- .../javascripts/dialogs/note_revisions.js | 12 ++++---- .../javascripts/widgets/note_revisions.js | 4 +-- src/routes/api/note_revisions.js | 28 ++++++------------- src/routes/api/recent_changes.js | 4 +-- src/routes/routes.js | 2 +- src/services/notes.js | 17 ++++++----- src/services/repository.js | 5 ++++ src/services/sync_update.js | 4 +-- 11 files changed, 51 insertions(+), 50 deletions(-) diff --git a/db/migrations/0150__note_revision_contents.sql b/db/migrations/0150__note_revision_contents.sql index e892915f9..5349f175d 100644 --- a/db/migrations/0150__note_revision_contents.sql +++ b/db/migrations/0150__note_revision_contents.sql @@ -1,7 +1,7 @@ CREATE TABLE IF NOT EXISTS "note_revisions_mig" (`noteRevisionId` TEXT NOT NULL PRIMARY KEY, `noteId` TEXT NOT NULL, `title` TEXT, - `content` TEXT, + `contentLength` INT NOT NULL, `isProtected` INT NOT NULL DEFAULT 0, `utcDateLastEdited` TEXT NOT NULL, `utcDateCreated` TEXT NOT NULL, @@ -18,10 +18,10 @@ CREATE TABLE IF NOT EXISTS "note_revision_contents" (`noteRevisionId` TEXT NOT N `utcDateModified` TEXT NOT NULL); INSERT INTO note_revision_contents (noteRevisionId, content, hash, utcDateModified) -SELECT noteRevisionId, content, hash, utcDateModified FROM note_revisions; +SELECT noteRevisionId, content, hash, utcDateModifiedTo FROM note_revisions; -INSERT INTO note_revisions_mig (noteRevisionId, noteId, title, isProtected, utcDateLastEdited, utcDateCreated, utcDateModified, dateLastEdited, dateCreated, type, mime, hash) -SELECT noteRevisionId, noteId, title, isProtected, utcDateModifiedFrom, utcDateModifiedTo, utcDateModifiedTo, dateModifiedFrom, dateModifiedTo, type, mime, hash FROM note_revisions; +INSERT INTO note_revisions_mig (noteRevisionId, noteId, title, contentLength, isProtected, utcDateLastEdited, utcDateCreated, utcDateModified, dateLastEdited, dateCreated, type, mime, hash) +SELECT noteRevisionId, noteId, title, LENGTH(content), isProtected, utcDateModifiedFrom, utcDateModifiedTo, utcDateModifiedTo, dateModifiedFrom, dateModifiedTo, type, mime, hash FROM note_revisions; DROP TABLE note_revisions; ALTER TABLE note_revisions_mig RENAME TO note_revisions; diff --git a/src/entities/note.js b/src/entities/note.js index edeafc59c..2c59f4ce9 100644 --- a/src/entities/note.js +++ b/src/entities/note.js @@ -112,7 +112,7 @@ class Note extends Entity { /** @returns {Promise} */ async setContent(content) { - // force updating note itself so that dateChanged is represented correctly even for the content + // force updating note itself so that dateModified is represented correctly even for the content this.forcedChange = true; await this.save(); diff --git a/src/entities/note_revision.js b/src/entities/note_revision.js index c748cc694..6cd8853e8 100644 --- a/src/entities/note_revision.js +++ b/src/entities/note_revision.js @@ -4,6 +4,7 @@ const Entity = require('./entity'); const protectedSessionService = require('../services/protected_session'); const repository = require('../services/repository'); const utils = require('../services/utils'); +const sql = require('../services/sql'); const dateUtils = require('../services/date_utils'); const syncTableService = require('../services/sync_table'); @@ -16,17 +17,18 @@ const syncTableService = require('../services/sync_table'); * @param {string} mime * @param {string} title * @param {string} isProtected - * @param {string} dateModifiedFrom - * @param {string} dateModifiedTo - * @param {string} utcDateModifiedFrom - * @param {string} utcDateModifiedTo + * @param {string} dateLastEdited + * @param {string} dateCreated + * @param {string} utcDateLastEdited + * @param {string} utcDateCreated + * @param {string} utcDateModified * * @extends Entity */ class NoteRevision extends Entity { static get entityName() { return "note_revisions"; } static get primaryKeyName() { return "noteRevisionId"; } - static get hashedProperties() { return ["noteRevisionId", "noteId", "title", "isProtected", "dateModifiedFrom", "dateModifiedTo", "utcDateModifiedFrom", "utcDateModifiedTo"]; } + static get hashedProperties() { return ["noteRevisionId", "noteId", "title", "contentLength", "isProtected", "dateLastEdited", "dateCreated", "utcDateLastEdited", "utcDateCreated", "utcDateModified"]; } constructor(row) { super(row); @@ -98,8 +100,9 @@ class NoteRevision extends Entity { /** @returns {Promise} */ async setContent(content) { - // force updating note itself so that dateChanged is represented correctly even for the content + // force updating note itself so that utcDateModified is represented correctly even for the content this.forcedChange = true; + this.contentLength = content.length; await this.save(); this.content = content; diff --git a/src/public/javascripts/dialogs/note_revisions.js b/src/public/javascripts/dialogs/note_revisions.js index 29eb16af6..efb352491 100644 --- a/src/public/javascripts/dialogs/note_revisions.js +++ b/src/public/javascripts/dialogs/note_revisions.js @@ -25,12 +25,12 @@ export async function showNoteRevisionsDialog(noteId, noteRevisionId) { $content.empty(); note = noteDetailService.getActiveTabNote(); - revisionItems = await server.get('notes/' + noteId + '/revisions'); + revisionItems = await server.get(`notes/${noteId}/revisions`); for (const item of revisionItems) { $list.append($('