ORE Studio 0.0.4
Loading...
Searching...
No Matches
telemetry_query.hpp
1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 *
3 * Copyright (C) 2025 Marco Craveiro <marco.craveiro@gmail.com>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License as published by the Free Software
7 * Foundation; either version 3 of the License, or (at your option) any later
8 * version.
9 *
10 * This program is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13 * details.
14 *
15 * You should have received a copy of the GNU General Public License along with
16 * this program; if not, write to the Free Software Foundation, Inc., 51
17 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 *
19 */
20#ifndef ORES_TELEMETRY_DOMAIN_TELEMETRY_QUERY_HPP
21#define ORES_TELEMETRY_DOMAIN_TELEMETRY_QUERY_HPP
22
23#include <chrono>
24#include <string>
25#include <cstdint>
26#include <optional>
27#include <boost/uuid/uuid.hpp>
28#include "ores.telemetry/domain/telemetry_source.hpp"
29
31
38struct telemetry_query final {
44 std::chrono::system_clock::time_point start_time;
45
51 std::chrono::system_clock::time_point end_time;
52
56 std::optional<telemetry_source> source;
57
61 std::optional<std::string> source_name;
62
68 std::optional<boost::uuids::uuid> session_id;
69
75 std::optional<boost::uuids::uuid> account_id;
76
82 std::optional<std::string> level;
83
90 std::optional<std::string> min_level;
91
97 std::optional<std::string> component;
98
102 std::optional<std::string> tag;
103
109 std::optional<std::string> message_contains;
110
114 std::uint32_t limit = 1000;
115
119 std::uint32_t offset = 0;
120};
121
129 hourly = 0,
130
134 daily = 1
135};
136
144 std::chrono::system_clock::time_point start_time;
145
149 std::chrono::system_clock::time_point end_time;
150
155
159 std::optional<telemetry_source> source;
160
164 std::optional<std::string> source_name;
165
169 std::optional<std::string> level;
170
174 std::optional<std::string> component;
175};
176
177}
178
179#endif
Domain types for telemetry and observability.
Definition attribute_value.hpp:29
stats_granularity
Granularity for statistics queries.
Definition telemetry_query.hpp:125
Query parameters for retrieving telemetry logs.
Definition telemetry_query.hpp:38
std::uint32_t limit
Maximum number of results to return.
Definition telemetry_query.hpp:114
std::optional< boost::uuids::uuid > account_id
Filter by account ID.
Definition telemetry_query.hpp:75
std::optional< telemetry_source > source
Filter by source type (client or server).
Definition telemetry_query.hpp:56
std::chrono::system_clock::time_point end_time
End of the time range (exclusive).
Definition telemetry_query.hpp:51
std::optional< std::string > source_name
Filter by source application name.
Definition telemetry_query.hpp:61
std::optional< std::string > min_level
Filter by minimum log level.
Definition telemetry_query.hpp:90
std::optional< std::string > message_contains
Search text in message body.
Definition telemetry_query.hpp:109
std::optional< std::string > tag
Filter by tag.
Definition telemetry_query.hpp:102
std::optional< boost::uuids::uuid > session_id
Filter by session ID.
Definition telemetry_query.hpp:68
std::optional< std::string > level
Filter by log level.
Definition telemetry_query.hpp:82
std::uint32_t offset
Number of results to skip (for pagination).
Definition telemetry_query.hpp:119
std::chrono::system_clock::time_point start_time
Start of the time range (inclusive).
Definition telemetry_query.hpp:44
std::optional< std::string > component
Filter by component name.
Definition telemetry_query.hpp:97
Query parameters for retrieving telemetry statistics.
Definition telemetry_query.hpp:140
std::optional< telemetry_source > source
Filter by source type.
Definition telemetry_query.hpp:159
std::chrono::system_clock::time_point end_time
End of the time range (exclusive).
Definition telemetry_query.hpp:149
stats_granularity granularity
Aggregation granularity.
Definition telemetry_query.hpp:154
std::optional< std::string > source_name
Filter by source application name.
Definition telemetry_query.hpp:164
std::optional< std::string > level
Filter by log level.
Definition telemetry_query.hpp:169
std::chrono::system_clock::time_point start_time
Start of the time range (inclusive).
Definition telemetry_query.hpp:144
std::optional< std::string > component
Filter by component (daily stats only).
Definition telemetry_query.hpp:174