use async_trait::async_trait; use std::collections::HashMap; use crate::types; pub type MetricId = String; struct DatasourceParams { db: String, q: String, epoch: String, } struct Datasource { url: String, dtype: String, params: Option, data: Option>, datasource_id: Option, } struct MetricQuery { url: String, method: String, schema: HashMap, headers: Option>, } pub type MetricResult = HashMap>; #[async_trait] pub trait Metric { async fn query(&self, from: u64, to: u64, step: u64) -> types::Result; }