// This file was copied from: // https://raw.githubusercontent.com/nickbabcock/rrinlog/master/rrinlog-server/src/api.rs // on the 10th December 2017 use chrono::prelude::*; use serde_json; use getset::{Getters, MutGetters}; #[derive(Serialize, Deserialize, Debug, PartialEq, Clone, Copy)] pub struct Range { pub from: DateTime, pub to: DateTime, } #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] pub struct Target { pub target: String, #[serde(rename = "refId")] pub ref_id: String, #[serde(rename = "type")] pub _type: String, } #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] pub struct Query { pub range: Range, #[serde(rename = "intervalMs")] pub interval_ms: i32, #[serde(rename = "maxDataPoints")] pub max_data_points: i32, pub format: Option, pub targets: Vec, } #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] #[serde(untagged)] pub enum TargetData { Series(Series), Table(Table), } #[derive(Getters, MutGetters, Serialize, Deserialize, Debug, PartialEq, Clone)] pub struct Series { target: String, #[getset(get = "pub", get_mut = "pub")] datapoints: Vec<[f64; 2]>, } impl Series { pub fn new(target: String) -> Self { Series { target, datapoints: Vec::new() } } } #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] pub struct Column { text: String, #[serde(rename = "type")] _type: String, } #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] pub struct Table { columns: Vec, #[serde(rename = "type")] _type: String, rows: Vec>, } #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] pub struct Search { target: String, } #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] pub struct SearchResponse(Vec); impl From> for SearchResponse { fn from(v: Vec) -> Self { SearchResponse(v) } } #[derive(Serialize, Deserialize, Debug, PartialEq, Clone)] pub struct QueryResponse(Vec); impl From> for QueryResponse { fn from(v: Vec) -> Self { QueryResponse(v) } }