From 64f6d775719ef2ec83ba3bf6145c22b17ec198ec Mon Sep 17 00:00:00 2001 From: Krunal Gandhi Date: Mon, 25 Mar 2024 12:40:28 +0000 Subject: [PATCH] add events in get response (#1632) * add events in get response * add counter_field in response, add test --- include/analytics_manager.h | 7 +++++++ src/analytics_manager.cpp | 5 ++++- test/analytics_manager_test.cpp | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/analytics_manager.h b/include/analytics_manager.h index f4394a53..bad7bcd8 100644 --- a/include/analytics_manager.h +++ b/include/analytics_manager.h @@ -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; + } } }; diff --git a/src/analytics_manager.cpp b/src/analytics_manager.cpp index e6c97322..4e08b234 100644 --- a/src/analytics_manager.cpp +++ b/src/analytics_manager.cpp @@ -110,6 +110,8 @@ Option AnalyticsManager::create_index(nlohmann::json &payload, bool upsert || !params["source"]["events"][0].is_object()))) { return Option(400, "Bad or missing events."); } + + suggestion_config.events = params["source"]["events"]; } if (!params.contains("destination") || !params["destination"].is_object()) { @@ -130,6 +132,7 @@ Option AnalyticsManager::create_index(nlohmann::json &payload, bool upsert return Option(400, "Must contain a valid counter_field."); } counter_field = params["destination"]["counter_field"].get(); + suggestion_config.counter_field = counter_field; } for (const auto &coll: params["source"]["collections"]) { @@ -372,7 +375,7 @@ Option 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(404, "No analytics rule defined for event name" + event_name); + return Option(404, "No analytics rule defined for event name " + event_name); } if(event_collection_map_it->second.event_type != event_type) { diff --git a/test/analytics_manager_test.cpp b/test/analytics_manager_test.cpp index a77f1087..0817d433 100644 --- a/test/analytics_manager_test.cpp +++ b/test/analytics_manager_test.cpp @@ -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",