2016-07-22 10:25:17 +09:00
|
|
|
import escapeStringRegexp from 'escape-string-regexp';
|
2016-12-13 11:40:24 +09:00
|
|
|
import { Callbacks, addCallback, Utils } from 'meteor/nova:core';
|
2016-07-22 10:25:17 +09:00
|
|
|
|
2015-09-18 11:12:53 +09:00
|
|
|
function addSearchQueryParameter (parameters, terms) {
|
|
|
|
if(!!terms.query) {
|
2016-07-22 10:25:17 +09:00
|
|
|
|
|
|
|
const query = escapeStringRegexp(terms.query);
|
|
|
|
|
2016-12-12 11:34:28 +09:00
|
|
|
parameters = Utils.deepExtend(true, parameters, {
|
2016-02-17 19:39:43 +09:00
|
|
|
selector: {
|
2015-09-18 11:12:53 +09:00
|
|
|
$or: [
|
2016-07-22 10:25:17 +09:00
|
|
|
{title: {$regex: query, $options: 'i'}},
|
|
|
|
{url: {$regex: query, $options: 'i'}},
|
2016-05-07 18:09:39 +09:00
|
|
|
// note: we cannot search the body field because it's not published
|
|
|
|
// to the client. If we did, we'd get different result sets on
|
|
|
|
// client and server
|
2016-07-22 10:25:17 +09:00
|
|
|
{excerpt: {$regex: query, $options: 'i'}}
|
2015-09-18 11:12:53 +09:00
|
|
|
]
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
return parameters;
|
|
|
|
}
|
2016-12-13 11:40:24 +09:00
|
|
|
addCallback("posts.parameters", addSearchQueryParameter);
|