mirror of
https://github.com/TriliumNext/Notes.git
synced 2025-10-26 09:31:34 +08:00
feat(edit-docs): preserve IDs when importing
This commit is contained in:
parent
966ad36919
commit
841bc54f78
@ -42,8 +42,6 @@ async function importData(input: Buffer) {
|
||||
const notes = ((await import("./src/services/notes.js")).default);
|
||||
beccaLoader.load();
|
||||
|
||||
const becca = ((await import("./src/becca/becca.js")).default);
|
||||
|
||||
const { note } = notes.createNewNoteWithTarget("into", "none_root", {
|
||||
parentNoteId: "root",
|
||||
noteId: NOTE_ID_USER_GUIDE,
|
||||
@ -55,7 +53,7 @@ async function importData(input: Buffer) {
|
||||
const TaskContext = (await import("./src/services/task_context.js")).default;
|
||||
const { importZip } = ((await import("./src/services/import/zip.js")).default);
|
||||
const context = new TaskContext("no-report");
|
||||
await importZip(context, input, note);
|
||||
await importZip(context, input, note, { preserveIds: true });
|
||||
}
|
||||
|
||||
async function createImportZip() {
|
||||
|
||||
@ -26,7 +26,11 @@ interface MetaFile {
|
||||
files: NoteMeta[];
|
||||
}
|
||||
|
||||
async function importZip(taskContext: TaskContext, fileBuffer: Buffer, importRootNote: BNote): Promise<BNote> {
|
||||
interface ImportZipOpts {
|
||||
preserveIds?: boolean;
|
||||
}
|
||||
|
||||
async function importZip(taskContext: TaskContext, fileBuffer: Buffer, importRootNote: BNote, opts?: ImportZipOpts): Promise<BNote> {
|
||||
/** maps from original noteId (in ZIP file) to newly generated noteId */
|
||||
const noteIdMap: Record<string, string> = {};
|
||||
/** type maps from original attachmentId (in ZIP file) to newly generated attachmentId */
|
||||
@ -45,7 +49,7 @@ async function importZip(taskContext: TaskContext, fileBuffer: Buffer, importRoo
|
||||
return "empty_note_id";
|
||||
}
|
||||
|
||||
if (origNoteId === "root" || origNoteId.startsWith("_")) {
|
||||
if (origNoteId === "root" || origNoteId.startsWith("_") || opts?.preserveIds) {
|
||||
// these "named" noteIds don't differ between Trilium instances
|
||||
return origNoteId;
|
||||
}
|
||||
@ -490,6 +494,10 @@ async function importZip(taskContext: TaskContext, fileBuffer: Buffer, importRoo
|
||||
notePosition: noteMeta?.notePosition
|
||||
}).save();
|
||||
}
|
||||
|
||||
if (opts?.preserveIds) {
|
||||
firstNote = firstNote || note;
|
||||
}
|
||||
} else {
|
||||
({ note } = noteService.createNewNote({
|
||||
parentNoteId: parentNoteId,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user