diff --git a/db/demo.tar b/db/demo.tar index c36232117..48b750ba7 100644 Binary files a/db/demo.tar and b/db/demo.tar differ diff --git a/src/services/import/tar.js b/src/services/import/tar.js index 7da144dfc..30ddc9d76 100644 --- a/src/services/import/tar.js +++ b/src/services/import/tar.js @@ -1,6 +1,5 @@ "use strict"; - const Attribute = require('../../entities/attribute'); const utils = require('../../services/utils'); const log = require('../../services/log'); @@ -114,28 +113,18 @@ async function importTar(importContext, fileBuffer, importRootNote) { } function getNoteId(noteMeta, filePath) { - let noteId; - const filePathNoExt = getTextFileWithoutExtension(filePath); - if (noteMeta) { - if (filePathNoExt in createdPaths) { - noteId = createdPaths[filePathNoExt]; - noteIdMap[noteMeta.noteId] = noteId; - } - else { - noteId = getNewNoteId(noteMeta.noteId); - } - } - else { - if (filePathNoExt in createdPaths) { - noteId = createdPaths[filePathNoExt]; - } - else { - noteId = utils.newEntityId(); - } + console.log(`Searching for noteId of filePath ${filePath} with meta: ${!!noteMeta}`); + + if (filePathNoExt in createdPaths) { + console.log("Found existing path", filePathNoExt, createdPaths[filePathNoExt]); + + return createdPaths[filePathNoExt]; } + const noteId = noteMeta ? getNewNoteId(noteMeta.noteId) : utils.newEntityId(); + createdPaths[filePathNoExt] = noteId; return noteId; @@ -234,7 +223,8 @@ async function importTar(importContext, fileBuffer, importRootNote) { absUrl += (absUrl.length > 0 ? '/' : '') + url; - const targetNoteId = getNoteId(null, absUrl); + const {noteMeta} = getMeta(absUrl); + const targetNoteId = getNoteId(noteMeta, absUrl); return targetNoteId; } @@ -340,22 +330,6 @@ async function importTar(importContext, fileBuffer, importRootNote) { await saveAttributes(note, noteMeta); - if (!noteMeta && (type === 'file' || type === 'image')) { - attributes.push({ - noteId, - type: 'label', - name: 'originalFileName', - value: path.basename(filePath) - }); - - attributes.push({ - noteId, - type: 'label', - name: 'fileSize', - value: content.byteLength - }); - } - if (!firstNote) { firstNote = note; } @@ -364,6 +338,22 @@ async function importTar(importContext, fileBuffer, importRootNote) { filePath = getTextFileWithoutExtension(filePath); } } + + if (!noteMeta && (type === 'file' || type === 'image')) { + attributes.push({ + noteId, + type: 'label', + name: 'originalFileName', + value: path.basename(filePath) + }); + + attributes.push({ + noteId, + type: 'label', + name: 'fileSize', + value: content.byteLength + }); + } } /** @return {string} path without leading or trailing slash and backslashes converted to forward ones*/ @@ -426,7 +416,9 @@ async function importTar(importContext, fileBuffer, importRootNote) { const noteId = createdPaths[path]; createdNoteIds[noteId] = true; + } + for (const noteId in createdNoteIds) { // now the noteIds are unique await noteService.scanForLinks(noteId); importContext.increaseProgressCount(); diff --git a/src/services/notes.js b/src/services/notes.js index 87c988ad2..853827f42 100644 --- a/src/services/notes.js +++ b/src/services/notes.js @@ -248,7 +248,7 @@ function findRelationMapLinks(content, foundLinks) { foundLinks.push({ name: 'relation-map-link', value: note.noteId - }) + }); } } diff --git a/src/services/sync_table.js b/src/services/sync_table.js index 03b0356d5..b293acabb 100644 --- a/src/services/sync_table.js +++ b/src/services/sync_table.js @@ -64,12 +64,14 @@ async function fillSyncRows(entityName, entityKey, condition = '') { const entityIds = await sql.getColumn(`SELECT ${entityKey} FROM ${entityName}` + (condition ? ` WHERE ${condition}` : '')); + let createdCount = 0; + for (const entityId of entityIds) { const existingRows = await sql.getValue("SELECT COUNT(id) FROM sync WHERE entityName = ? AND entityId = ?", [entityName, entityId]); // we don't want to replace existing entities (which would effectively cause full resync) if (existingRows === 0) { - log.info(`Creating missing sync record for ${entityName} ${entityId}`); + createdCount++; await sql.insert("sync", { entityName: entityName, @@ -79,6 +81,10 @@ async function fillSyncRows(entityName, entityKey, condition = '') { }); } } + + if (createdCount > 0) { + log.info(`Created ${createdCount} missing sync records for ${entityName}.`); + } } catch (e) { // this is to fix migration from 0.30 to 0.32, can be removed later