use super::{default_exch, default_inst, default_interval, default_sec_id, default_seg};
use serde::Serialize;
#[derive(Debug, Default, Serialize)]
pub struct DhanPayload {
#[serde(rename = "EXCH")]
exch: String,
#[serde(rename = "SEG")]
seg: char,
#[serde(rename = "INST")]
inst: String,
#[serde(rename = "SEC_ID")]
sec_id: u32,
#[serde(rename = "START")]
start: u32,
#[serde(rename = "END")]
end: u32,
#[serde(rename = "INTERVAL")]
interval: String,
}
#[derive(Debug, Default, Serialize)]
pub struct DhanPayloadBuilder {
payload: DhanPayload,
}
impl DhanPayloadBuilder {
pub fn new(start: u32, end: u32) -> Self {
Self {
payload: DhanPayload {
exch: default_exch(),
seg: default_seg(),
inst: default_inst(),
sec_id: default_sec_id(),
interval: default_interval(),
start,
end,
},
}
}
pub fn exch(mut self, exch: &str) -> Self {
self.payload.exch = exch.to_string();
self
}
pub fn seg(mut self, seg: char) -> Self {
self.payload.seg = seg;
self
}
pub fn inst(mut self, inst: &str) -> Self {
self.payload.inst = inst.to_string();
self
}
pub fn interval(mut self, interval: &str) -> Self {
self.payload.interval = interval.to_string();
self
}
pub fn build(self) -> DhanPayload {
self.payload
}
}