Merge branch 'master' into m41

This commit is contained in:
zadam 2020-01-18 09:25:18 +01:00
commit b25c1d6fa8
5 changed files with 54 additions and 19 deletions

1
.idea/.gitignore generated vendored
View File

@ -3,3 +3,4 @@
# Datasource local storage ignored files # Datasource local storage ignored files
/dataSources.local.xml /dataSources.local.xml
/dataSources/

View File

@ -110,6 +110,10 @@ class Note extends Entity {
async getJsonContent() { async getJsonContent() {
const content = await this.getContent(); const content = await this.getContent();
if (!content || !content.trim()) {
return null;
}
return JSON.parse(content); return JSON.parse(content);
} }

View File

@ -29,8 +29,12 @@ async function searchFromNote(req) {
return [404, `Note ${req.params.noteId} has not been found.`]; return [404, `Note ${req.params.noteId} has not been found.`];
} }
if (note.isDeleted) {
return [400, `Note ${req.params.noteId} is deleted.`];
}
if (note.type !== 'search') { if (note.type !== 'search') {
return [400, '`Note ${req.params.noteId} is not search note.`'] return [400, `Note ${req.params.noteId} is not search note.`]
} }
const json = await note.getJsonContent(); const json = await note.getJsonContent();
@ -41,18 +45,28 @@ async function searchFromNote(req) {
let noteIds; let noteIds;
if (json.searchString.startsWith('=')) { try {
const relationName = json.searchString.substr(1).trim(); if (json.searchString.startsWith('=')) {
const relationName = json.searchString.substr(1).trim();
noteIds = await searchFromRelation(note, relationName); noteIds = await searchFromRelation(note, relationName);
} else {
noteIds = await searchService.searchForNoteIds(json.searchString);
}
} }
else { catch (e) {
noteIds = await searchService.searchForNoteIds(json.searchString); log.error(`Search failed for note ${note.noteId}: ` + e.message + ": " + e.stack);
throw new Error("Search failed, see logs for details.");
} }
// we won't return search note's own noteId // we won't return search note's own noteId
noteIds = noteIds.filter(noteId => noteId !== note.noteId); noteIds = noteIds.filter(noteId => noteId !== note.noteId);
if (noteIds.length > 200) {
noteIds = noteIds.slice(0, 200);
}
return noteIds.map(noteCacheService.getNotePath).filter(res => !!res); return noteIds.map(noteCacheService.getNotePath).filter(res => !!res);
} }

View File

@ -40,7 +40,9 @@ async function getRootCalendarNote() {
parentNoteId: 'root', parentNoteId: 'root',
title: 'Calendar', title: 'Calendar',
target: 'into', target: 'into',
isProtected: false isProtected: false,
type: 'text',
content: ''
})).note; })).note;
await attributeService.createLabel(rootNote.noteId, CALENDAR_ROOT_LABEL); await attributeService.createLabel(rootNote.noteId, CALENDAR_ROOT_LABEL);

View File

@ -71,22 +71,36 @@ function sendMessageToAllClients(message) {
} }
} }
async function fillInAdditionalProperties(sync) {
// fill in some extra data needed by the frontend
if (sync.entityName === 'attributes') {
sync.noteId = await sql.getValue(`SELECT noteId
FROM attributes
WHERE attributeId = ?`, [sync.entityId]);
} else if (sync.entityName === 'note_revisions') {
sync.noteId = await sql.getValue(`SELECT noteId
FROM note_revisions
WHERE noteRevisionId = ?`, [sync.entityId]);
} else if (sync.entityName === 'branches') {
const {noteId, parentNoteId} = await sql.getRow(`SELECT noteId, parentNoteId
FROM branches
WHERE branchId = ?`, [sync.entityId]);
sync.noteId = noteId;
sync.parentNoteId = parentNoteId;
}
}
async function sendPing(client) { async function sendPing(client) {
const syncData = require('./sync_table').getEntitySyncsNewerThan(lastAcceptedSyncIds[client.id]); const syncData = require('./sync_table').getEntitySyncsNewerThan(lastAcceptedSyncIds[client.id]);
for (const sync of syncData) { for (const sync of syncData) {
// fill in some extra data needed by the frontend try {
if (sync.entityName === 'attributes') { await fillInAdditionalProperties(sync);
sync.noteId = await sql.getValue(`SELECT noteId FROM attributes WHERE attributeId = ?`, [sync.entityId]);
} }
else if (sync.entityName === 'note_revisions') { catch (e) {
sync.noteId = await sql.getValue(`SELECT noteId FROM note_revisions WHERE noteRevisionId = ?`, [sync.entityId]); log.error("Could not fill additional properties for sync " + JSON.stringify(sync)
} + " because of error: " + e.message + ": " + e.stack);
else if (sync.entityName === 'branches') {
const {noteId, parentNoteId} = await sql.getRow(`SELECT noteId, parentNoteId FROM branches WHERE branchId = ?`, [sync.entityId]);
sync.noteId = noteId;
sync.parentNoteId = parentNoteId;
} }
} }