mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-30 19:19:03 +01:00 
			
		
		
		
	split out dateUtils on the backend
This commit is contained in:
		
							parent
							
								
									277368ab43
								
							
						
					
					
						commit
						6ab0cea4e3
					
				| @ -73,10 +73,10 @@ app.on('ready', () => { | |||||||
|     mainWindow = createMainWindow(); |     mainWindow = createMainWindow(); | ||||||
| 
 | 
 | ||||||
|     const result = globalShortcut.register('CommandOrControl+Alt+P', async () => { |     const result = globalShortcut.register('CommandOrControl+Alt+P', async () => { | ||||||
|         const date_notes = require('./src/services/date_notes'); |         const dateNoteService = require('./src/services/date_notes'); | ||||||
|         const utils = require('./src/services/utils'); |         const dateUtils = require('./src/services/date_utils'); | ||||||
| 
 | 
 | ||||||
|         const parentNoteId = await date_notes.getDateNoteId(utils.nowDate()); |         const parentNoteId = await dateNoteService.getDateNoteId(dateUtils.nowDate()); | ||||||
| 
 | 
 | ||||||
|         // window may be hidden / not in focus
 |         // window may be hidden / not in focus
 | ||||||
|         mainWindow.focus(); |         mainWindow.focus(); | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| const Entity = require('./entity'); | const Entity = require('./entity'); | ||||||
| const utils = require('../services/utils'); | const dateUtils = require('../services/date_utils'); | ||||||
| 
 | 
 | ||||||
| class ApiToken extends Entity { | class ApiToken extends Entity { | ||||||
|     static get tableName() { return "api_tokens"; } |     static get tableName() { return "api_tokens"; } | ||||||
| @ -15,7 +15,7 @@ class ApiToken extends Entity { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (!this.dateCreated) { |         if (!this.dateCreated) { | ||||||
|             this.dateCreated = utils.nowDate(); |             this.dateCreated = dateUtils.nowDate(); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| const Entity = require('./entity'); | const Entity = require('./entity'); | ||||||
| const utils = require('../services/utils'); | const dateUtils = require('../services/date_utils'); | ||||||
| const repository = require('../services/repository'); | const repository = require('../services/repository'); | ||||||
| 
 | 
 | ||||||
| class Branch extends Entity { | class Branch extends Entity { | ||||||
| @ -19,7 +19,7 @@ class Branch extends Entity { | |||||||
|             this.isDeleted = false; |             this.isDeleted = false; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         this.dateModified = utils.nowDate() |         this.dateModified = dateUtils.nowDate() | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -5,8 +5,6 @@ const repository = require('../services/repository'); | |||||||
| 
 | 
 | ||||||
| class Entity { | class Entity { | ||||||
|     constructor(row = {}) { |     constructor(row = {}) { | ||||||
|         utils.assertArguments(row); |  | ||||||
| 
 |  | ||||||
|         for (const key in row) { |         for (const key in row) { | ||||||
|             this[key] = row[key]; |             this[key] = row[key]; | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| const Entity = require('./entity'); | const Entity = require('./entity'); | ||||||
| const utils = require('../services/utils'); | const dateUtils = require('../services/date_utils'); | ||||||
| 
 | 
 | ||||||
| class Image extends Entity { | class Image extends Entity { | ||||||
|     static get tableName() { return "images"; } |     static get tableName() { return "images"; } | ||||||
| @ -15,10 +15,10 @@ class Image extends Entity { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (!this.dateCreated) { |         if (!this.dateCreated) { | ||||||
|             this.dateCreated = utils.nowDate(); |             this.dateCreated = dateUtils.nowDate(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         this.dateModified = utils.nowDate(); |         this.dateModified = dateUtils.nowDate(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| const Entity = require('./entity'); | const Entity = require('./entity'); | ||||||
| const repository = require('../services/repository'); | const repository = require('../services/repository'); | ||||||
| const utils = require('../services/utils'); | const dateUtils = require('../services/date_utils'); | ||||||
| const sql = require('../services/sql'); | const sql = require('../services/sql'); | ||||||
| 
 | 
 | ||||||
| class Label extends Entity { | class Label extends Entity { | ||||||
| @ -30,10 +30,10 @@ class Label extends Entity { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (!this.dateCreated) { |         if (!this.dateCreated) { | ||||||
|             this.dateCreated = utils.nowDate(); |             this.dateCreated = dateUtils.nowDate(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         this.dateModified = utils.nowDate(); |         this.dateModified = dateUtils.nowDate(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| const Entity = require('./entity'); | const Entity = require('./entity'); | ||||||
| const protected_session = require('../services/protected_session'); | const protected_session = require('../services/protected_session'); | ||||||
| const repository = require('../services/repository'); | const repository = require('../services/repository'); | ||||||
| const utils = require('../services/utils'); | const dateUtils = require('../services/date_utils'); | ||||||
| 
 | 
 | ||||||
| class Note extends Entity { | class Note extends Entity { | ||||||
|     static get tableName() { return "notes"; } |     static get tableName() { return "notes"; } | ||||||
| @ -146,10 +146,10 @@ class Note extends Entity { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (!this.dateCreated) { |         if (!this.dateCreated) { | ||||||
|             this.dateCreated = utils.nowDate(); |             this.dateCreated = dateUtils.nowDate(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         this.dateModified = utils.nowDate(); |         this.dateModified = dateUtils.nowDate(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -2,7 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| const Entity = require('./entity'); | const Entity = require('./entity'); | ||||||
| const repository = require('../services/repository'); | const repository = require('../services/repository'); | ||||||
| const utils = require('../services/utils'); | const dateUtils = require('../services/date_utils'); | ||||||
| 
 | 
 | ||||||
| class NoteImage extends Entity { | class NoteImage extends Entity { | ||||||
|     static get tableName() { return "note_images"; } |     static get tableName() { return "note_images"; } | ||||||
| @ -24,10 +24,10 @@ class NoteImage extends Entity { | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if (!this.dateCreated) { |         if (!this.dateCreated) { | ||||||
|             this.dateCreated = utils.nowDate(); |             this.dateCreated = dateUtils.nowDate(); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         this.dateModified = utils.nowDate(); |         this.dateModified = dateUtils.nowDate(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -50,8 +50,6 @@ async function cleanupUnusedImages() { | |||||||
|         images.isDeleted = 0 |         images.isDeleted = 0 | ||||||
|         AND note_images.noteImageId IS NULL`);
 |         AND note_images.noteImageId IS NULL`);
 | ||||||
| 
 | 
 | ||||||
|     const now = utils.nowDate(); |  | ||||||
| 
 |  | ||||||
|     for (const imageId of unusedImageIds) { |     for (const imageId of unusedImageIds) { | ||||||
|         log.info(`Deleting unused image: ${imageId}`); |         log.info(`Deleting unused image: ${imageId}`); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ | |||||||
| 
 | 
 | ||||||
| const options = require('../../services/options'); | const options = require('../../services/options'); | ||||||
| const utils = require('../../services/utils'); | const utils = require('../../services/utils'); | ||||||
|  | const dateUtils = require('../../services/date_utils'); | ||||||
| const sourceIdService = require('../../services/source_id'); | const sourceIdService = require('../../services/source_id'); | ||||||
| const passwordEncryptionService = require('../../services/password_encryption'); | const passwordEncryptionService = require('../../services/password_encryption'); | ||||||
| const protectedSessionService = require('../../services/protected_session'); | const protectedSessionService = require('../../services/protected_session'); | ||||||
| @ -10,7 +11,7 @@ const appInfo = require('../../services/app_info'); | |||||||
| async function loginSync(req) { | async function loginSync(req) { | ||||||
|     const timestampStr = req.body.timestamp; |     const timestampStr = req.body.timestamp; | ||||||
| 
 | 
 | ||||||
|     const timestamp = utils.parseDateTime(timestampStr); |     const timestamp = dateUtils.parseDateTime(timestampStr); | ||||||
| 
 | 
 | ||||||
|     const now = new Date(); |     const now = new Date(); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| const repository = require('../../services/repository'); | const repository = require('../../services/repository'); | ||||||
| const utils = require('../../services/utils'); | const dateUtils = require('../../services/date_utils'); | ||||||
| const optionService = require('../../services/options'); | const optionService = require('../../services/options'); | ||||||
| const RecentNote = require('../../entities/recent_note'); | const RecentNote = require('../../entities/recent_note'); | ||||||
| 
 | 
 | ||||||
| @ -27,7 +27,7 @@ async function addRecentNote(req) { | |||||||
|     const recentNote = new RecentNote({ |     const recentNote = new RecentNote({ | ||||||
|         branchId: branchId, |         branchId: branchId, | ||||||
|         notePath: notePath, |         notePath: notePath, | ||||||
|         dateAccessed: utils.nowDate(), |         dateAccessed: dateUtils.nowDate(), | ||||||
|         isDeleted: 0 |         isDeleted: 0 | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,7 +1,7 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| const dataDir = require('./data_dir'); | const dataDir = require('./data_dir'); | ||||||
| const utils = require('./utils'); | const dateUtils = require('./date_utils'); | ||||||
| const fs = require('fs-extra'); | const fs = require('fs-extra'); | ||||||
| const sqlite = require('sqlite'); | const sqlite = require('sqlite'); | ||||||
| 
 | 
 | ||||||
| @ -10,7 +10,7 @@ async function anonymize() { | |||||||
|         fs.mkdirSync(dataDir.ANONYMIZED_DB_DIR, 0o700); |         fs.mkdirSync(dataDir.ANONYMIZED_DB_DIR, 0o700); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     const anonymizedFile = dataDir.ANONYMIZED_DB_DIR + "/" + "backup-" + utils.getDateTimeForFile() + ".db"; |     const anonymizedFile = dataDir.ANONYMIZED_DB_DIR + "/" + "backup-" + dateUtils.getDateTimeForFile() + ".db"; | ||||||
| 
 | 
 | ||||||
|     fs.copySync(dataDir.DOCUMENT_PATH, anonymizedFile); |     fs.copySync(dataDir.DOCUMENT_PATH, anonymizedFile); | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| const utils = require('./utils'); | const dateUtils = require('./date_utils'); | ||||||
| const optionService = require('./options'); | const optionService = require('./options'); | ||||||
| const fs = require('fs-extra'); | const fs = require('fs-extra'); | ||||||
| const dataDir = require('./data_dir'); | const dataDir = require('./data_dir'); | ||||||
| @ -11,7 +11,7 @@ const cls = require('./cls'); | |||||||
| 
 | 
 | ||||||
| async function regularBackup() { | async function regularBackup() { | ||||||
|     const now = new Date(); |     const now = new Date(); | ||||||
|     const lastBackupDate = utils.parseDateTime(await optionService.getOption('last_backup_date')); |     const lastBackupDate = dateUtils.parseDateTime(await optionService.getOption('last_backup_date')); | ||||||
| 
 | 
 | ||||||
|     console.log(lastBackupDate); |     console.log(lastBackupDate); | ||||||
| 
 | 
 | ||||||
| @ -26,15 +26,13 @@ async function backupNow() { | |||||||
|     // we don't want to backup DB in the middle of sync with potentially inconsistent DB state
 |     // we don't want to backup DB in the middle of sync with potentially inconsistent DB state
 | ||||||
| 
 | 
 | ||||||
|     await syncMutexService.doExclusively(async () => { |     await syncMutexService.doExclusively(async () => { | ||||||
|         const now = utils.nowDate(); |         const backupFile = dataDir.BACKUP_DIR + "/" + "backup-" + dateUtils.getDateTimeForFile() + ".db"; | ||||||
| 
 |  | ||||||
|         const backupFile = dataDir.BACKUP_DIR + "/" + "backup-" + utils.getDateTimeForFile() + ".db"; |  | ||||||
| 
 | 
 | ||||||
|         fs.copySync(dataDir.DOCUMENT_PATH, backupFile); |         fs.copySync(dataDir.DOCUMENT_PATH, backupFile); | ||||||
| 
 | 
 | ||||||
|         log.info("Created backup at " + backupFile); |         log.info("Created backup at " + backupFile); | ||||||
| 
 | 
 | ||||||
|         await optionService.setOption('last_backup_date', now); |         await optionService.setOption('last_backup_date', dateUtils.nowDate()); | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -4,12 +4,9 @@ const sql = require('./sql'); | |||||||
| const log = require('./log'); | const log = require('./log'); | ||||||
| const messagingService = require('./messaging'); | const messagingService = require('./messaging'); | ||||||
| const syncMutexService = require('./sync_mutex'); | const syncMutexService = require('./sync_mutex'); | ||||||
| const utils = require('./utils'); |  | ||||||
| const cls = require('./cls'); | const cls = require('./cls'); | ||||||
| 
 | 
 | ||||||
| async function runCheck(query, errorText, errorList) { | async function runCheck(query, errorText, errorList) { | ||||||
|     utils.assertArguments(query, errorText, errorList); |  | ||||||
| 
 |  | ||||||
|     const result = await sql.getColumn(query); |     const result = await sql.getColumn(query); | ||||||
| 
 | 
 | ||||||
|     if (result.length > 0) { |     if (result.length > 0) { | ||||||
|  | |||||||
| @ -3,7 +3,7 @@ | |||||||
| const sql = require('./sql'); | const sql = require('./sql'); | ||||||
| const noteService = require('./notes'); | const noteService = require('./notes'); | ||||||
| const labelService = require('./labels'); | const labelService = require('./labels'); | ||||||
| const utils = require('./utils'); | const dateUtils = require('./date_utils'); | ||||||
| 
 | 
 | ||||||
| const CALENDAR_ROOT_LABEL = 'calendar_root'; | const CALENDAR_ROOT_LABEL = 'calendar_root'; | ||||||
| const YEAR_LABEL = 'year_note'; | const YEAR_LABEL = 'year_note'; | ||||||
| @ -80,7 +80,7 @@ async function getMonthNoteId(dateTimeStr, rootNoteId) { | |||||||
|         monthNoteId = await getNoteStartingWith(yearNoteId, monthNumber); |         monthNoteId = await getNoteStartingWith(yearNoteId, monthNumber); | ||||||
| 
 | 
 | ||||||
|         if (!monthNoteId) { |         if (!monthNoteId) { | ||||||
|             const dateObj = utils.parseDate(dateTimeStr); |             const dateObj = dateUtils.parseDate(dateTimeStr); | ||||||
| 
 | 
 | ||||||
|             const noteTitle = monthNumber + " - " + MONTHS[dateObj.getMonth()]; |             const noteTitle = monthNumber + " - " + MONTHS[dateObj.getMonth()]; | ||||||
| 
 | 
 | ||||||
| @ -109,7 +109,7 @@ async function getDateNoteId(dateTimeStr, rootNoteId = null) { | |||||||
|         dateNoteId = await getNoteStartingWith(monthNoteId, dayNumber); |         dateNoteId = await getNoteStartingWith(monthNoteId, dayNumber); | ||||||
| 
 | 
 | ||||||
|         if (!dateNoteId) { |         if (!dateNoteId) { | ||||||
|             const dateObj = utils.parseDate(dateTimeStr); |             const dateObj = dateUtils.parseDate(dateTimeStr); | ||||||
| 
 | 
 | ||||||
|             const noteTitle = dayNumber + " - " + DAYS[dateObj.getDay()]; |             const noteTitle = dayNumber + " - " + DAYS[dateObj.getDay()]; | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										38
									
								
								src/services/date_utils.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/services/date_utils.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,38 @@ | |||||||
|  | function nowDate() { | ||||||
|  |     return dateStr(new Date()); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function dateStr(date) { | ||||||
|  |     return date.toISOString(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /** | ||||||
|  |  * @param str - needs to be in the ISO 8601 format "YYYY-MM-DDTHH:MM:SS.sssZ" format as outputted by dateStr(). | ||||||
|  |  *              also is assumed to be GMT time (as indicated by the "Z" at the end), *not* local time | ||||||
|  |  */ | ||||||
|  | function parseDateTime(str) { | ||||||
|  |     try { | ||||||
|  |         return new Date(Date.parse(str)); | ||||||
|  |     } | ||||||
|  |     catch (e) { | ||||||
|  |         throw new Error("Can't parse date from " + str + ": " + e.stack); | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function parseDate(str) { | ||||||
|  |     const datePart = str.substr(0, 10); | ||||||
|  | 
 | ||||||
|  |     return parseDateTime(datePart + "T12:00:00.000Z"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function getDateTimeForFile() { | ||||||
|  |     return new Date().toISOString().substr(0, 19).replace(/:/g, ''); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | module.exports = { | ||||||
|  |     nowDate, | ||||||
|  |     dateStr, | ||||||
|  |     parseDate, | ||||||
|  |     parseDateTime, | ||||||
|  |     getDateTimeForFile | ||||||
|  | }; | ||||||
| @ -1,5 +1,5 @@ | |||||||
| const sql = require('./sql'); | const sql = require('./sql'); | ||||||
| const utils = require('./utils'); | const dateUtils = require('./date_utils'); | ||||||
| const log = require('./log'); | const log = require('./log'); | ||||||
| 
 | 
 | ||||||
| async function addEvent(comment) { | async function addEvent(comment) { | ||||||
| @ -10,7 +10,7 @@ async function addNoteEvent(noteId, comment) { | |||||||
|     await sql.insert('event_log', { |     await sql.insert('event_log', { | ||||||
|        noteId : noteId, |        noteId : noteId, | ||||||
|        comment: comment, |        comment: comment, | ||||||
|        dateAdded: utils.nowDate() |        dateAdded: dateUtils.nowDate() | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     log.info("Event log for " + noteId + ": " + comment); |     log.info("Event log for " + noteId + ": " + comment); | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| const sql = require('./sql'); | const sql = require('./sql'); | ||||||
| const optionService = require('./options'); | const optionService = require('./options'); | ||||||
| const utils = require('./utils'); | const dateUtils = require('./date_utils'); | ||||||
| const syncTableService = require('./sync_table'); | const syncTableService = require('./sync_table'); | ||||||
| const labelService = require('./labels'); | const labelService = require('./labels'); | ||||||
| const repository = require('./repository'); | const repository = require('./repository'); | ||||||
| @ -167,12 +167,12 @@ async function saveNoteRevision(note) { | |||||||
|     const now = new Date(); |     const now = new Date(); | ||||||
|     const noteRevisionSnapshotTimeInterval = parseInt(await optionService.getOption('note_revision_snapshot_time_interval')); |     const noteRevisionSnapshotTimeInterval = parseInt(await optionService.getOption('note_revision_snapshot_time_interval')); | ||||||
| 
 | 
 | ||||||
|     const revisionCutoff = utils.dateStr(new Date(now.getTime() - noteRevisionSnapshotTimeInterval * 1000)); |     const revisionCutoff = dateUtils.dateStr(new Date(now.getTime() - noteRevisionSnapshotTimeInterval * 1000)); | ||||||
| 
 | 
 | ||||||
|     const existingnoteRevisionId = await sql.getValue( |     const existingnoteRevisionId = await sql.getValue( | ||||||
|         "SELECT noteRevisionId FROM note_revisions WHERE noteId = ? AND dateModifiedTo >= ?", [note.noteId, revisionCutoff]); |         "SELECT noteRevisionId FROM note_revisions WHERE noteId = ? AND dateModifiedTo >= ?", [note.noteId, revisionCutoff]); | ||||||
| 
 | 
 | ||||||
|     const msSinceDateCreated = now.getTime() - utils.parseDateTime(note.dateCreated).getTime(); |     const msSinceDateCreated = now.getTime() - dateUtils.parseDateTime(note.dateCreated).getTime(); | ||||||
| 
 | 
 | ||||||
|     if (note.type !== 'file' |     if (note.type !== 'file' | ||||||
|         && labelsMap.disable_versioning !== 'true' |         && labelsMap.disable_versioning !== 'true' | ||||||
| @ -186,7 +186,7 @@ async function saveNoteRevision(note) { | |||||||
|             content: note.content, |             content: note.content, | ||||||
|             isProtected: 0, // will be fixed in the protectNoteRevisions() call
 |             isProtected: 0, // will be fixed in the protectNoteRevisions() call
 | ||||||
|             dateModifiedFrom: note.dateModified, |             dateModifiedFrom: note.dateModified, | ||||||
|             dateModifiedTo: utils.nowDate() |             dateModifiedTo: dateUtils.nowDate() | ||||||
|         })).save(); |         })).save(); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,5 +1,6 @@ | |||||||
| const sql = require('./sql'); | const sql = require('./sql'); | ||||||
| const utils = require('./utils'); | const utils = require('./utils'); | ||||||
|  | const dateUtils = require('./date_utils'); | ||||||
| const syncTableService = require('./sync_table'); | const syncTableService = require('./sync_table'); | ||||||
| const appInfo = require('./app_info'); | const appInfo = require('./app_info'); | ||||||
| 
 | 
 | ||||||
| @ -29,7 +30,7 @@ async function setOption(name, value) { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     await sql.execute("UPDATE options SET value = ?, dateModified = ? WHERE name = ?", |     await sql.execute("UPDATE options SET value = ?, dateModified = ? WHERE name = ?", | ||||||
|         [value, utils.nowDate(), name]); |         [value, dateUtils.nowDate(), name]); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async function createOption(name, value, isSynced) { | async function createOption(name, value, isSynced) { | ||||||
| @ -37,7 +38,7 @@ async function createOption(name, value, isSynced) { | |||||||
|         name: name, |         name: name, | ||||||
|         value: value, |         value: value, | ||||||
|         isSynced: isSynced, |         isSynced: isSynced, | ||||||
|         dateModified: utils.nowDate() |         dateModified: dateUtils.nowDate() | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     if (isSynced) { |     if (isSynced) { | ||||||
| @ -59,7 +60,7 @@ async function initOptions(startNotePath) { | |||||||
|     await createOption('start_note_path', startNotePath, false); |     await createOption('start_note_path', startNotePath, false); | ||||||
|     await createOption('protected_session_timeout', 600, true); |     await createOption('protected_session_timeout', 600, true); | ||||||
|     await createOption('note_revision_snapshot_time_interval', 600, true); |     await createOption('note_revision_snapshot_time_interval', 600, true); | ||||||
|     await createOption('last_backup_date', utils.nowDate(), false); |     await createOption('last_backup_date', dateUtils.nowDate(), false); | ||||||
|     await createOption('db_version', appInfo.db_version, false); |     await createOption('db_version', appInfo.db_version, false); | ||||||
| 
 | 
 | ||||||
|     await createOption('last_synced_pull', appInfo.db_version, false); |     await createOption('last_synced_pull', appInfo.db_version, false); | ||||||
|  | |||||||
| @ -2,6 +2,7 @@ const log = require('./log'); | |||||||
| const noteService = require('./notes'); | const noteService = require('./notes'); | ||||||
| const sql = require('./sql'); | const sql = require('./sql'); | ||||||
| const utils = require('./utils'); | const utils = require('./utils'); | ||||||
|  | const dateUtils = require('./date_utils'); | ||||||
| const labelService = require('./labels'); | const labelService = require('./labels'); | ||||||
| const dateNoteService = require('./date_notes'); | const dateNoteService = require('./date_notes'); | ||||||
| const config = require('./config'); | const config = require('./config'); | ||||||
| @ -34,8 +35,8 @@ function ScriptApi(startNote, currentNote) { | |||||||
| 
 | 
 | ||||||
|     this.utils = { |     this.utils = { | ||||||
|         unescapeHtml: utils.unescapeHtml, |         unescapeHtml: utils.unescapeHtml, | ||||||
|         isoDateTimeStr: utils.dateStr, |         isoDateTimeStr: dateUtils.dateStr, | ||||||
|         isoDateStr: date => utils.dateStr(date).substr(0, 10) |         isoDateStr: date => dateUtils.dateStr(date).substr(0, 10) | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     this.getInstanceName = () => config.General ? config.General.instanceName : null; |     this.getInstanceName = () => config.General ? config.General.instanceName : null; | ||||||
|  | |||||||
| @ -1,4 +1,5 @@ | |||||||
| const utils = require('./utils'); | const utils = require('./utils'); | ||||||
|  | const dateUtils = require('./date_utils'); | ||||||
| const log = require('./log'); | const log = require('./log'); | ||||||
| const sql = require('./sql'); | const sql = require('./sql'); | ||||||
| const cls = require('./cls'); | const cls = require('./cls'); | ||||||
| @ -6,7 +7,7 @@ const cls = require('./cls'); | |||||||
| async function saveSourceId(sourceId) { | async function saveSourceId(sourceId) { | ||||||
|     await sql.insert("source_ids", { |     await sql.insert("source_ids", { | ||||||
|         sourceId: sourceId, |         sourceId: sourceId, | ||||||
|         dateCreated: utils.nowDate() |         dateCreated: dateUtils.nowDate() | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     await refreshSourceIds(); |     await refreshSourceIds(); | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ const sql = require('./sql'); | |||||||
| const optionService = require('./options'); | const optionService = require('./options'); | ||||||
| const utils = require('./utils'); | const utils = require('./utils'); | ||||||
| const sourceIdService = require('./source_id'); | const sourceIdService = require('./source_id'); | ||||||
| const noteService = require('./notes'); | const dateUtils = require('./date_utils'); | ||||||
| const syncUpdateService = require('./sync_update'); | const syncUpdateService = require('./sync_update'); | ||||||
| const contentHashService = require('./content_hash'); | const contentHashService = require('./content_hash'); | ||||||
| const eventLogService = require('./event_log'); | const eventLogService = require('./event_log'); | ||||||
| @ -68,7 +68,7 @@ async function sync() { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| async function login() { | async function login() { | ||||||
|     const timestamp = utils.nowDate(); |     const timestamp = dateUtils.nowDate(); | ||||||
| 
 | 
 | ||||||
|     const documentSecret = await optionService.getOption('document_secret'); |     const documentSecret = await optionService.getOption('document_secret'); | ||||||
|     const hash = utils.hmac(documentSecret, timestamp); |     const hash = utils.hmac(documentSecret, timestamp); | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| const sql = require('./sql'); | const sql = require('./sql'); | ||||||
| const sourceIdService = require('./source_id'); | const sourceIdService = require('./source_id'); | ||||||
| const utils = require('./utils'); | const dateUtils = require('./date_utils'); | ||||||
| const syncSetup = require('./sync_setup'); | const syncSetup = require('./sync_setup'); | ||||||
| const log = require('./log'); | const log = require('./log'); | ||||||
| const cls = require('./cls'); | const cls = require('./cls'); | ||||||
| @ -49,7 +49,7 @@ async function addEntitySync(entityName, entityId, sourceId) { | |||||||
|     await sql.replace("sync", { |     await sql.replace("sync", { | ||||||
|         entityName: entityName, |         entityName: entityName, | ||||||
|         entityId: entityId, |         entityId: entityId, | ||||||
|         syncDate: utils.nowDate(), |         syncDate: dateUtils.nowDate(), | ||||||
|         sourceId: sourceId || cls.getSourceId() || sourceIdService.getCurrentSourceId() |         sourceId: sourceId || cls.getSourceId() || sourceIdService.getCurrentSourceId() | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
| @ -84,7 +84,7 @@ async function fillSyncRows(entityName, entityKey) { | |||||||
|                 entityName: entityName, |                 entityName: entityName, | ||||||
|                 entityId: entityId, |                 entityId: entityId, | ||||||
|                 sourceId: "SYNC_FILL", |                 sourceId: "SYNC_FILL", | ||||||
|                 syncDate: utils.nowDate() |                 syncDate: dateUtils.nowDate() | ||||||
|             }); |             }); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -16,41 +16,6 @@ function randomSecureToken(bytes = 32) { | |||||||
|     return crypto.randomBytes(bytes).toString('base64'); |     return crypto.randomBytes(bytes).toString('base64'); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function nowDate() { |  | ||||||
|     return dateStr(new Date()); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function localDate() { |  | ||||||
|     const date = new Date(); |  | ||||||
| 
 |  | ||||||
|     return date.getFullYear() + "-" |  | ||||||
|         + (date.getMonth() < 9 ? "0" : "") + (date.getMonth() + 1) + "-" |  | ||||||
|         + (date.getDate() < 10 ? "0" : "") + date.getDate(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function dateStr(date) { |  | ||||||
|     return date.toISOString(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * @param str - needs to be in the ISO 8601 format "YYYY-MM-DDTHH:MM:SS.sssZ" format as outputted by dateStr(). |  | ||||||
|  *              also is assumed to be GMT time (as indicated by the "Z" at the end), *not* local time |  | ||||||
|  */ |  | ||||||
| function parseDateTime(str) { |  | ||||||
|     try { |  | ||||||
|         return new Date(Date.parse(str)); |  | ||||||
|     } |  | ||||||
|     catch (e) { |  | ||||||
|         throw new Error("Can't parse date from " + str + ": " + e.stack); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function parseDate(str) { |  | ||||||
|     const datePart = str.substr(0, 10); |  | ||||||
| 
 |  | ||||||
|     return parseDateTime(datePart + "T12:00:00.000Z"); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function toBase64(plainText) { | function toBase64(plainText) { | ||||||
|     return Buffer.from(plainText).toString('base64'); |     return Buffer.from(plainText).toString('base64'); | ||||||
| } | } | ||||||
| @ -77,23 +42,11 @@ function isEmptyOrWhitespace(str) { | |||||||
|     return str === null || str.match(/^ *$/) !== null; |     return str === null || str.match(/^ *$/) !== null; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function getDateTimeForFile() { |  | ||||||
|     return new Date().toISOString().substr(0, 19).replace(/:/g, ''); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| function sanitizeSql(str) { | function sanitizeSql(str) { | ||||||
|     // should be improved or usage eliminated
 |     // should be improved or usage eliminated
 | ||||||
|     return str.replace(/'/g, "\\'"); |     return str.replace(/'/g, "\\'"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function assertArguments() { |  | ||||||
|     for (const i in arguments) { |  | ||||||
|         if (!arguments[i]) { |  | ||||||
|             throw new Error(`Argument idx#${i} should not be falsy: ${arguments[i]}`); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| async function stopWatch(what, func) { | async function stopWatch(what, func) { | ||||||
|     const start = new Date(); |     const start = new Date(); | ||||||
| 
 | 
 | ||||||
| @ -125,11 +78,6 @@ function toObject(array, fn) { | |||||||
| module.exports = { | module.exports = { | ||||||
|     randomSecureToken, |     randomSecureToken, | ||||||
|     randomString, |     randomString, | ||||||
|     nowDate, |  | ||||||
|     localDate, |  | ||||||
|     dateStr, |  | ||||||
|     parseDate, |  | ||||||
|     parseDateTime, |  | ||||||
|     newEntityId, |     newEntityId, | ||||||
|     toBase64, |     toBase64, | ||||||
|     fromBase64, |     fromBase64, | ||||||
| @ -137,9 +85,7 @@ module.exports = { | |||||||
|     isElectron, |     isElectron, | ||||||
|     hash, |     hash, | ||||||
|     isEmptyOrWhitespace, |     isEmptyOrWhitespace, | ||||||
|     getDateTimeForFile, |  | ||||||
|     sanitizeSql, |     sanitizeSql, | ||||||
|     assertArguments, |  | ||||||
|     stopWatch, |     stopWatch, | ||||||
|     unescapeHtml, |     unescapeHtml, | ||||||
|     toObject |     toObject | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 azivner
						azivner