fix incorrect removal of attribute filter from string, fixes #35

This commit is contained in:
azivner 2018-02-05 22:25:25 -05:00
parent 23a2b58b24
commit 0a9a032daa

View File

@ -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);
}