virtual std::unique_ptr<Cursor> metadata_query(std::string metric, std::string where_clause) { boost::property_tree::ptree query; // No (re)sampling query.add("select", "names"); // Add metric name if (!metric.empty()) { query.add("metric", metric); } // Where clause if (!where_clause.empty()) { boost::property_tree::ptree where = from_json(where_clause); query.add_child("where", where); } std::stringstream stream; boost::property_tree::json_parser::write_json(stream, query, true); std::string query_text = stream.str(); auto cursor = aku_query(db_, query_text.c_str()); std::unique_ptr<LocalCursor> ptr(new LocalCursor(db_, cursor)); return std::move(ptr); }
virtual std::unique_ptr<Cursor> query(std::string begin, std::string end, std::vector<std::string> ids) { boost::property_tree::ptree query; // Add metric name query.add("metric", "cpu"); // Add time constraints boost::property_tree::ptree range; range.add("from", begin); range.add("to", end); query.add_child("range", range); // Where clause // Where clause boost::property_tree::ptree where; boost::property_tree::ptree array; for (auto series: ids) { auto val = series.substr(8, 1); boost::property_tree::ptree elem; elem.put("", val); array.push_back(std::make_pair("", elem)); } where.add_child("key", array); query.add_child("where", where); std::stringstream stream; boost::property_tree::json_parser::write_json(stream, query, true); std::string query_text = stream.str(); auto cursor = aku_query(db_, query_text.c_str()); std::unique_ptr<LocalCursor> ptr(new LocalCursor(db_, cursor)); return std::move(ptr); }
std::shared_ptr<DbCursor> AkumuliConnection::search(std::string query) { aku_Cursor* cursor = aku_query(db_, query.c_str()); return std::make_shared<AkumuliCursor>(cursor); }