Skip to content

Commit 1ca46e3

Browse files
authored
Fix enex import stores wrong format in database for dateCreated, dateModified (#7718)
2 parents 6b6dc47 + 98b5b81 commit 1ca46e3

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

apps/server/src/services/date_utils.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,12 @@ function validateUtcDateTime(str: string | undefined) {
9191
}
9292

9393
export default {
94+
LOCAL_DATETIME_FORMAT,
95+
UTC_DATETIME_FORMAT,
9496
utcNowDateTime,
9597
localNowDateTime,
9698
localNowDate,
99+
97100
utcDateStr,
98101
utcDateTimeStr,
99102
parseDateTime,

apps/server/src/services/import/enex.ts

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1+
import dayjs from "dayjs";
12
import sax from "sax";
23
import stream from "stream";
34
import { Throttle } from "stream-throttle";
45
import log from "../log.js";
56
import { md5, escapeHtml, fromBase64 } from "../utils.js";
7+
import date_utils from "../date_utils.js";
68
import sql from "../sql.js";
79
import noteService from "../notes.js";
810
import imageService from "../image.js";
@@ -235,6 +237,8 @@ function importEnex(taskContext: TaskContext<"importNotes">, file: File, parentN
235237

236238
function updateDates(note: BNote, utcDateCreated?: string, utcDateModified?: string) {
237239
// it's difficult to force custom dateCreated and dateModified to Note entity, so we do it post-creation with SQL
240+
const dateCreated = formatDateTimeToLocalDbFormat(utcDateCreated, false);
241+
const dateModified = formatDateTimeToLocalDbFormat(utcDateModified, false);
238242
sql.execute(
239243
`
240244
UPDATE notes
@@ -243,7 +247,7 @@ function importEnex(taskContext: TaskContext<"importNotes">, file: File, parentN
243247
dateModified = ?,
244248
utcDateModified = ?
245249
WHERE noteId = ?`,
246-
[utcDateCreated, utcDateCreated, utcDateModified, utcDateModified, note.noteId]
250+
[dateCreated, utcDateCreated, dateModified, utcDateModified, note.noteId]
247251
);
248252

249253
sql.execute(
@@ -407,4 +411,21 @@ function importEnex(taskContext: TaskContext<"importNotes">, file: File, parentN
407411
});
408412
}
409413

414+
function formatDateTimeToLocalDbFormat(
415+
utcDateFromEnex: Date | string | null | undefined,
416+
keepUtc: boolean
417+
): string | undefined {
418+
if (!utcDateFromEnex) {
419+
return undefined;
420+
}
421+
422+
const parsedDate = dayjs(utcDateFromEnex);
423+
424+
if (!parsedDate.isValid()) {
425+
return undefined;
426+
}
427+
428+
return (keepUtc ? parsedDate.utc() : parsedDate).format(date_utils.LOCAL_DATETIME_FORMAT);
429+
}
430+
410431
export default { importEnex };

0 commit comments

Comments
 (0)