marketstore 0.1.1

Marketstore rust driver
Documentation
use std::time::SystemTime;

use crate::{
    proto::{MultiQueryRequest, QueryRequest},
    Interval,
};

#[derive(Debug, Clone)]
pub struct QueryParams {
    pub symbols: Vec<String>,
    pub timeframe: Interval,
    pub attrgroup: String,
    pub start: Option<SystemTime>,
    pub end: Option<SystemTime>,
    pub limit: Option<u32>,
    pub limit_from_start: Option<bool>,
}

impl Default for QueryParams {
    fn default() -> Self {
        Self {
            symbols: Default::default(),
            timeframe: Default::default(),
            attrgroup: Default::default(),
            start: Default::default(),
            end: Default::default(),
            limit: Default::default(),
            limit_from_start: Default::default(),
        }
    }
}

impl From<QueryParams> for MultiQueryRequest {
    fn from(value: QueryParams) -> Self {
        MultiQueryRequest {
            requests: vec![QueryRequest {
                destination: format!(
                    "{}/{}/{}",
                    value.symbols[0],
                    String::from(value.timeframe),
                    value.attrgroup
                ),
                ..Default::default()
            }],
        }
    }
}