1use iso8601_timestamp::Timestamp;
2use serde::Deserialize;
3use std::collections::HashMap;
4
5#[derive(Deserialize, Debug, Clone)]
7pub struct IndexAccess {
8 pub ops: i32,
10 pub since: Timestamp,
12}
13
14#[derive(Deserialize, Debug, Clone)]
16pub struct Index {
17 pub name: String,
19 pub accesses: IndexAccess,
21}
22
23#[derive(Deserialize, Debug, Clone)]
25pub struct LatencyHistogramEntry {
26 pub micros: i64,
28 pub count: i64,
30}
31
32#[derive(Deserialize, Debug, Clone)]
34pub struct LatencyStats {
35 pub ops: i64,
37 pub latency: i64,
39 pub histogram: Vec<LatencyHistogramEntry>,
41}
42
43#[derive(Deserialize, Debug, Clone)]
45#[serde(rename_all = "camelCase")]
46pub struct StorageStats {
47 pub size: i64,
49 pub storage_size: i64,
51 pub total_index_size: i64,
53 pub total_size: i64,
55 pub index_sizes: HashMap<String, i64>,
57 pub count: i64,
59 pub avg_obj_size: i64,
61}
62
63#[derive(Deserialize, Debug, Clone)]
65#[serde(rename_all = "camelCase")]
66pub struct CollectionScans {
67 pub total: i64,
69 pub non_tailable: i64,
71}
72
73#[derive(Deserialize, Debug, Clone)]
75#[serde(rename_all = "camelCase")]
76pub struct QueryExecStats {
77 pub collection_scans: CollectionScans,
79}
80
81#[derive(Deserialize, Debug, Clone)]
83#[serde(rename_all = "camelCase")]
84pub struct CollectionStats {
85 pub ns: String,
87 pub local_time: Timestamp,
89 pub latency_stats: HashMap<String, LatencyStats>,
91 pub query_exec_stats: QueryExecStats,
93 pub count: u64,
95}
96
97#[derive(Deserialize, Debug, Clone)]
99pub struct Stats {
100 pub indices: HashMap<String, Vec<Index>>,
102 pub coll_stats: HashMap<String, CollectionStats>,
104}