diff --git a/include/analytics_manager.h b/include/analytics_manager.h index 04a249f8..41abe683 100644 --- a/include/analytics_manager.h +++ b/include/analytics_manager.h @@ -151,7 +151,7 @@ public: void persist_click_events(ReplicationState *raft_server, uint64_t prev_persistence_s); - Option get_click_events(); + nlohmann::json get_click_events(); Option write_click_event_to_store(nlohmann::json& click_event_json); diff --git a/src/analytics_manager.cpp b/src/analytics_manager.cpp index a3e1abac..e3d3e322 100644 --- a/src/analytics_manager.cpp +++ b/src/analytics_manager.cpp @@ -424,24 +424,22 @@ std::unordered_map AnalyticsManager::get_popular_q return popular_queries; } -Option AnalyticsManager::get_click_events() { +nlohmann::json AnalyticsManager::get_click_events() { std::unique_lock lk(mutex); std::vector click_event_jsons; + nlohmann::json result_json = nlohmann::json::array(); + if (analytics_store) { analytics_store->scan_fill(std::string(CLICK_EVENT) + "_", std::string(CLICK_EVENT) + "`", click_event_jsons); - } else { - return Option(500, "Analytics DB not initialized."); + + for (const auto &click_event_json: click_event_jsons) { + nlohmann::json click_event = nlohmann::json::parse(click_event_json); + result_json.push_back(click_event); + } } - nlohmann::json result_json = nlohmann::json::array(); - for (const auto &click_event_json: click_event_jsons) { - nlohmann::json click_event = nlohmann::json::parse(click_event_json); - result_json.push_back(click_event); - } - - - return Option(result_json); + return result_json; } Option AnalyticsManager::write_click_event_to_store(nlohmann::json &click_event_jsons) { diff --git a/src/core_api.cpp b/src/core_api.cpp index 1e1f8302..cd531253 100644 --- a/src/core_api.cpp +++ b/src/core_api.cpp @@ -2800,13 +2800,13 @@ bool put_conversation_model(const std::shared_ptr& req, const std::sha return true; } bool get_click_events(const std::shared_ptr& req, const std::shared_ptr& res) { - auto click_events_op = AnalyticsManager::get_instance().get_click_events(); + auto click_events = AnalyticsManager::get_instance().get_click_events(); - if(!click_events_op.ok()) { - res->set(click_events_op.code(), click_events_op.error()); + if(click_events.empty()) { + res->set_400(click_events.dump()); } - res->set_200(click_events_op.get().dump()); + res->set_200(click_events.dump()); return true; }