nash_protocol/protocol/list_candles/
request.rs

1use super::types::ListCandlesRequest;
2use crate::graphql;
3use crate::graphql::list_candles;
4use crate::types::CandleInterval;
5
6use graphql_client::GraphQLQuery;
7
8impl ListCandlesRequest {
9    pub fn make_query(&self) -> graphql_client::QueryBody<list_candles::Variables> {
10        let list_candles = list_candles::Variables {
11            before: self.before.clone(),
12            limit: self.limit,
13            market_name: self.market.clone(),
14            chronological: self.chronological,
15            interval: self.interval.as_ref().map(|x| x.into()),
16            range_start: self.range.as_ref().map(|x| format!("{:?}", x.start)),
17            range_stop: self.range.as_ref().map(|x| format!("{:?}", x.stop)),
18        };
19        graphql::ListCandles::build_query(list_candles)
20    }
21}
22
23impl From<&CandleInterval> for list_candles::CandleInterval {
24    fn from(interval: &CandleInterval) -> Self {
25        match interval {
26            CandleInterval::FifteenMinute => list_candles::CandleInterval::FIFTEEN_MINUTE,
27            CandleInterval::FiveMinute => list_candles::CandleInterval::FIVE_MINUTE,
28            CandleInterval::FourHour => list_candles::CandleInterval::FOUR_HOUR,
29            CandleInterval::OneDay => list_candles::CandleInterval::ONE_DAY,
30            CandleInterval::OneHour => list_candles::CandleInterval::ONE_HOUR,
31            CandleInterval::SixHour => list_candles::CandleInterval::SIX_HOUR,
32            CandleInterval::ThirtyMinute => list_candles::CandleInterval::THIRTY_MINUTE,
33            CandleInterval::ThreeHour => list_candles::CandleInterval::THREE_HOUR,
34            CandleInterval::TwelveHour => list_candles::CandleInterval::TWELVE_HOUR,
35            CandleInterval::OneMonth => list_candles::CandleInterval::ONE_MONTH,
36            CandleInterval::OneWeek => list_candles::CandleInterval::ONE_WEEK,
37            CandleInterval::OneMinute => list_candles::CandleInterval::ONE_MINUTE,
38        }
39    }
40}