mirror of
https://github.com/typesense/typesense.git
synced 2025-05-19 13:12:22 +08:00
add events in get response (#1632)
* add events in get response * add counter_field in response, add test
This commit is contained in:
parent
acf2800006
commit
64f6d77571
@ -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;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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",
|
||||
|
Loading…
x
Reference in New Issue
Block a user