From 0a9a032daacccda6de3c78d62e6c1c24a4b55f0e Mon Sep 17 00:00:00 2001 From: azivner Date: Mon, 5 Feb 2018 22:25:25 -0500 Subject: [PATCH] fix incorrect removal of attribute filter from string, fixes #35 --- src/routes/api/notes.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/routes/api/notes.js b/src/routes/api/notes.js index de39cf57c..37ac51f99 100644 --- a/src/routes/api/notes.js +++ b/src/routes/api/notes.js @@ -58,10 +58,16 @@ router.put('/:noteId', auth.checkApiAuth, wrap(async (req, res, next) => { })); router.get('/', auth.checkApiAuth, wrap(async (req, res, next) => { + console.log("Search: ", req.query.search); + let {attrFilters, searchText} = parseFilters(req.query.search); + console.log(attrFilters); + const {query, params} = getSearchQuery(attrFilters, searchText); + console.log(query, params); + const noteIds = await sql.getColumn(query, params); res.send(noteIds); @@ -72,8 +78,12 @@ function parseFilters(searchText) { const attrRegex = /(\b(and|or)\s+)?@(!?)([\w_-]+|"[^"]+")((=|!=|<|<=|>|>=)([\w_-]+|"[^"]+"))?/i; + console.log("attrRegex", attrRegex); + let match = attrRegex.exec(searchText); + console.log("Match: ", match); + function trimQuotes(str) { return str.startsWith('"') ? str.substr(1, str.length - 2) : str; } while (match != null) { @@ -88,7 +98,7 @@ function parseFilters(searchText) { }); // remove attributes from further fulltext search - searchText = searchText.replace(new RegExp(match[0], 'g'), ''); + searchText = searchText.split(match[0]).join(''); match = attrRegex.exec(searchText); }