mirror of
https://github.com/typesense/typesense.git
synced 2025-05-18 12:42:50 +08:00
Don't wrap () for empty filter strings.
This commit is contained in:
parent
0e1d70ebf6
commit
a9b926e24b
@ -394,7 +394,13 @@ bool AuthManager::add_item_to_params(std::map<std::string, std::string>& req_par
|
||||
if(req_params.count(item.key()) == 0) {
|
||||
req_params[item.key()] = str_value;
|
||||
} else if(item.key() == "filter_by") {
|
||||
req_params[item.key()] = "(" + req_params[item.key()] + ") && (" + str_value + ")";
|
||||
if(!req_params[item.key()].empty() && !str_value.empty()) {
|
||||
req_params[item.key()] = "(" + req_params[item.key()] + ") && (" + str_value + ")";
|
||||
} else if(req_params[item.key()].empty() && !str_value.empty()) {
|
||||
req_params[item.key()] = "(" + str_value + ")";
|
||||
} else if(!req_params[item.key()].empty() && str_value.empty()) {
|
||||
req_params[item.key()] = "(" + req_params[item.key()] + ")";
|
||||
}
|
||||
} else if(overwrite) {
|
||||
req_params[item.key()] = str_value;
|
||||
}
|
||||
|
@ -199,6 +199,29 @@ TEST_F(CoreAPIUtilsTest, MultiSearchEmbeddedKeys) {
|
||||
// ensure that req params are appended to (embedded params are also rolled into req params)
|
||||
ASSERT_EQ("((user_id: 100) && (age: > 100)) && (foo: bar)", req->params["filter_by"]);
|
||||
|
||||
// when empty filter_by is present in req params, don't add ()
|
||||
req->params["filter_by"] = "";
|
||||
post_multi_search(req, res);
|
||||
ASSERT_EQ("((age: > 100)) && (foo: bar)", req->params["filter_by"]);
|
||||
|
||||
// when empty filter_by in collection search params, don't add ()
|
||||
req->params["filter_by"] = "user_id: 100";
|
||||
search["filter_by"] = "";
|
||||
body["searches"].clear();
|
||||
body["searches"].push_back(search);
|
||||
req->body = body.dump();
|
||||
post_multi_search(req, res);
|
||||
ASSERT_EQ("((user_id: 100)) && (foo: bar)", req->params["filter_by"]);
|
||||
|
||||
// when both are empty, don't add ()
|
||||
req->params["filter_by"] = "";
|
||||
search["filter_by"] = "";
|
||||
body["searches"].clear();
|
||||
body["searches"].push_back(search);
|
||||
req->body = body.dump();
|
||||
post_multi_search(req, res);
|
||||
ASSERT_EQ("(foo: bar)", req->params["filter_by"]);
|
||||
|
||||
// try setting max search limit
|
||||
req->embedded_params_vec[0]["limit_multi_searches"] = 0;
|
||||
ASSERT_FALSE(post_multi_search(req, res));
|
||||
|
Loading…
x
Reference in New Issue
Block a user