mirror of
https://github.com/typesense/typesense.git
synced 2025-05-22 23:06:30 +08:00
55 lines
1.4 KiB
C++
55 lines
1.4 KiB
C++
#include <analytics_manager.h>
|
|
#include "event_manager.h"
|
|
|
|
bool EventManager::add_event(const nlohmann::json& event) {
|
|
/*
|
|
Sample event payload:
|
|
|
|
{
|
|
"type": "search",
|
|
"data": {
|
|
"q": "Nike shoes",
|
|
"collections": ["products"]
|
|
}
|
|
}
|
|
*/
|
|
|
|
if(!event.contains("type")) {
|
|
return false;
|
|
}
|
|
|
|
const auto& event_type_val = event[EVENT_TYPE];
|
|
|
|
if(event_type_val.is_string()) {
|
|
const std::string& event_type = event_type_val.get<std::string>();
|
|
if(event_type == "search") {
|
|
if(!event.contains("data")) {
|
|
return false;
|
|
}
|
|
|
|
const auto& event_data_val = event[EVENT_DATA];
|
|
|
|
if(!event_data_val.is_object()) {
|
|
return false;
|
|
}
|
|
|
|
const auto& event_data_query_it = event_data_val["q"];
|
|
|
|
if(!event_data_query_it.is_string() || !event_data_val["collections"].is_array()) {
|
|
return false;
|
|
}
|
|
|
|
for(const auto& coll: event_data_val["collections"]) {
|
|
if(!coll.is_string()) {
|
|
return false;
|
|
}
|
|
|
|
std::string query = event_data_query_it.get<std::string>();
|
|
AnalyticsManager::get_instance().add_suggestion(coll.get<std::string>(), query, false, "");
|
|
}
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|