add events in get response (#1632)

* add events in get response

* add counter_field in response, add test
This commit is contained in:
Krunal Gandhi 2024-03-25 12:40:28 +00:00 committed by GitHub
parent acf2800006
commit 64f6d77571
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 17 additions and 1 deletions

View File

@ -106,6 +106,8 @@ private:
size_t limit;
std::string rule_type;
bool expand_query = false;
nlohmann::json events;
std::string counter_field;
void to_json(nlohmann::json& obj) const {
obj["name"] = name;
@ -118,6 +120,11 @@ private:
if(rule_type == POPULAR_QUERIES_TYPE) {
obj["params"]["expand_query"] = expand_query;
}
if(!events.empty()) {
obj["params"]["source"]["events"] = events;
obj["params"]["destination"]["counter_field"] = counter_field;
}
}
};

View File

@ -110,6 +110,8 @@ Option<bool> AnalyticsManager::create_index(nlohmann::json &payload, bool upsert
|| !params["source"]["events"][0].is_object()))) {
return Option<bool>(400, "Bad or missing events.");
}
suggestion_config.events = params["source"]["events"];
}
if (!params.contains("destination") || !params["destination"].is_object()) {
@ -130,6 +132,7 @@ Option<bool> AnalyticsManager::create_index(nlohmann::json &payload, bool upsert
return Option<bool>(400, "Must contain a valid counter_field.");
}
counter_field = params["destination"]["counter_field"].get<std::string>();
suggestion_config.counter_field = counter_field;
}
for (const auto &coll: params["source"]["collections"]) {
@ -372,7 +375,7 @@ Option<bool> AnalyticsManager::add_event(const std::string& client_ip, const std
}
const auto event_collection_map_it = event_collection_map.find(event_name);
if(event_collection_map_it == event_collection_map.end()) {
return Option<bool>(404, "No analytics rule defined for event name" + event_name);
return Option<bool>(404, "No analytics rule defined for event name " + event_name);
}
if(event_collection_map_it->second.event_type != event_type) {

View File

@ -1107,6 +1107,12 @@ TEST_F(AnalyticsManagerTest, PopularityScoreValidation) {
create_op = analyticsManager.create_rule(analytics_rule, false, true);
ASSERT_TRUE(create_op.ok());
auto rule_op = analyticsManager.get_rule("books_popularity2");
ASSERT_TRUE(rule_op.ok());
auto rule = rule_op.get();
ASSERT_EQ(analytics_rule["params"]["source"]["events"], rule["params"]["source"]["events"]);
ASSERT_EQ(analytics_rule["params"]["destination"]["counter_field"], rule["params"]["destination"]["counter_field"]);
nlohmann::json event = R"({
"type": "conversion",
"name": "CNV4",