diff --git a/spec/parser.spec.js b/spec/parser.spec.js index 466d90363..e0993e51d 100644 --- a/spec/parser.spec.js +++ b/spec/parser.spec.js @@ -6,7 +6,7 @@ describe("Parser", () => { const rootExp = parser({ fulltextTokens: ["hello", "hi"], expressionTokens: [], - parsingContext: new ParsingContext(false) + parsingContext: new ParsingContext({includeNoteContent: false}) }); expect(rootExp.constructor.name).toEqual("NoteCacheFulltextExp"); @@ -17,7 +17,7 @@ describe("Parser", () => { const rootExp = parser({ fulltextTokens: ["hello", "hi"], expressionTokens: [], - parsingContext: new ParsingContext(true) + parsingContext: new ParsingContext({includeNoteContent: true}) }); expect(rootExp.constructor.name).toEqual("OrExp"); @@ -34,7 +34,7 @@ describe("Parser", () => { const rootExp = parser({ fulltextTokens: [], expressionTokens: ["#mylabel", "=", "text"], - parsingContext: new ParsingContext(true) + parsingContext: new ParsingContext() }); expect(rootExp.constructor.name).toEqual("FieldComparisonExp"); @@ -64,7 +64,7 @@ describe("Parser", () => { const rootExp = parser({ fulltextTokens: [], expressionTokens: ["#first", "=", "text", "#second", "=", "text"], - parsingContext: new ParsingContext(true) + parsingContext: new ParsingContext() }); expect(rootExp.constructor.name).toEqual("AndExp"); @@ -81,7 +81,7 @@ describe("Parser", () => { const rootExp = parser({ fulltextTokens: [], expressionTokens: ["#first", "=", "text", "OR", "#second", "=", "text"], - parsingContext: new ParsingContext(true) + parsingContext: new ParsingContext() }); expect(rootExp.constructor.name).toEqual("OrExp"); @@ -98,7 +98,7 @@ describe("Parser", () => { const rootExp = parser({ fulltextTokens: ["hello"], expressionTokens: ["#mylabel", "=", "text"], - parsingContext: new ParsingContext(false) + parsingContext: new ParsingContext() }); expect(rootExp.constructor.name).toEqual("AndExp"); @@ -115,7 +115,7 @@ describe("Parser", () => { const rootExp = parser({ fulltextTokens: [], expressionTokens: ["#first", "=", "text", "OR", ["#second", "=", "text", "AND", "#third", "=", "text"]], - parsingContext: new ParsingContext(false) + parsingContext: new ParsingContext() }); expect(rootExp.constructor.name).toEqual("OrExp"); diff --git a/spec/search.spec.js b/spec/search.spec.js new file mode 100644 index 000000000..836043da1 --- /dev/null +++ b/spec/search.spec.js @@ -0,0 +1,7 @@ +const searchService = require('../src/services/search/search'); + +describe("Search", () => { + it("fulltext parser without content", () => { +// searchService. + }); +}); diff --git a/src/app.js b/src/app.js index 3ef1a7c0f..1c6a31d3e 100644 --- a/src/app.js +++ b/src/app.js @@ -12,6 +12,8 @@ const sessionSecret = require('./services/session_secret'); const cls = require('./services/cls'); require('./entities/entity_constructor'); require('./services/handlers'); +require('./services/hoisted_note_loader'); +require('./services/note_cache/note_cache_loader'); const app = express(); @@ -120,4 +122,4 @@ require('./services/scheduler'); module.exports = { app, sessionParser -}; \ No newline at end of file +}; diff --git a/src/services/hoisted_note.js b/src/services/hoisted_note.js index dc9536bc9..2a45cd322 100644 --- a/src/services/hoisted_note.js +++ b/src/services/hoisted_note.js @@ -1,19 +1,6 @@ -const optionService = require('./options'); -const sqlInit = require('./sql_init'); -const eventService = require('./events'); - let hoistedNoteId = 'root'; -eventService.subscribe(eventService.ENTITY_CHANGED, async ({entityName, entity}) => { - if (entityName === 'options' && entity.name === 'hoistedNoteId') { - hoistedNoteId = entity.value; - } -}); - -sqlInit.dbReady.then(async () => { - hoistedNoteId = await optionService.getOption('hoistedNoteId'); -}); - module.exports = { - getHoistedNoteId: () => hoistedNoteId -}; \ No newline at end of file + getHoistedNoteId: () => hoistedNoteId, + setHoistedNoteId(noteId) { hoistedNoteId = noteId; } +}; diff --git a/src/services/hoisted_note_loader.js b/src/services/hoisted_note_loader.js new file mode 100644 index 000000000..fb7b6df12 --- /dev/null +++ b/src/services/hoisted_note_loader.js @@ -0,0 +1,14 @@ +const optionService = require('./options'); +const sqlInit = require('./sql_init'); +const eventService = require('./events'); +const hoistedNote = require('./hoisted_note'); + +eventService.subscribe(eventService.ENTITY_CHANGED, async ({entityName, entity}) => { + if (entityName === 'options' && entity.name === 'hoistedNoteId') { + hoistedNote.setHoistedNoteId(entity.value); + } +}); + +sqlInit.dbReady.then(async () => { + hoistedNote.setHoistedNoteId(await optionService.getOption('hoistedNoteId')); +}); diff --git a/src/services/note_cache/note_cache_loader.js b/src/services/note_cache/note_cache_loader.js index 33d387c3e..9fb160128 100644 --- a/src/services/note_cache/note_cache_loader.js +++ b/src/services/note_cache/note_cache_loader.js @@ -166,4 +166,4 @@ eventService.subscribe(eventService.ENTER_PROTECTED_SESSION, () => { noteCache.loadedPromise.then(() => noteCache.decryptProtectedNotes()); }); -module.exports = load; +load(); diff --git a/src/services/note_cache/note_cache_service.js b/src/services/note_cache/note_cache_service.js index 35b078be1..8007c9cb3 100644 --- a/src/services/note_cache/note_cache_service.js +++ b/src/services/note_cache/note_cache_service.js @@ -4,8 +4,6 @@ const noteCache = require('./note_cache'); const hoistedNoteService = require('../hoisted_note'); const stringSimilarity = require('string-similarity'); -require('./note_cache_loader')(); - function isNotePathArchived(notePath) { const noteId = notePath[notePath.length - 1]; const note = noteCache.notes[noteId]; diff --git a/src/services/search/parsing_context.js b/src/services/search/parsing_context.js index 24118050f..59bc487d8 100644 --- a/src/services/search/parsing_context.js +++ b/src/services/search/parsing_context.js @@ -1,10 +1,10 @@ "use strict"; class ParsingContext { - constructor(includeNoteContent) { - this.includeNoteContent = includeNoteContent; + constructor(params = {}) { + this.includeNoteContent = !!params.includeNoteContent; + this.fuzzyAttributeSearch = !!params.fuzzyAttributeSearch; this.highlightedTokens = []; - this.fuzzyAttributeSearch = false; this.error = null; } diff --git a/src/services/search/search.js b/src/services/search/search.js index c5c2d5236..254c35869 100644 --- a/src/services/search/search.js +++ b/src/services/search/search.js @@ -61,8 +61,10 @@ async function searchNotesForAutocomplete(query) { return []; } - const parsingContext = new ParsingContext(false); - parsingContext.fuzzyAttributeSearch = true; + const parsingContext = new ParsingContext({ + includeNoteContent: false, + fuzzyAttributeSearch: true + }); const expression = parseQueryToExpression(query, parsingContext);