use crate::{currencies::currency::Currency, time::date::Date};
#[derive(Clone)]
pub struct FxRequest {
base: Currency,
quote: Option<Currency>,
date: Option<Date>,
}
impl FxRequest {
#[must_use]
pub const fn single(base: Currency) -> Self {
Self {
base,
quote: None,
date: None,
}
}
#[must_use]
pub const fn pair(base: Currency, quote: Currency) -> Self {
Self {
base,
quote: Some(quote),
date: None,
}
}
#[must_use]
pub const fn with_date(mut self, date: Date) -> Self {
self.date = Some(date);
self
}
#[must_use]
pub const fn base(&self) -> Currency {
self.base
}
#[must_use]
pub const fn quote(&self) -> Option<Currency> {
self.quote
}
#[must_use]
pub const fn date(&self) -> Option<Date> {
self.date
}
#[must_use]
pub const fn is_pair(&self) -> bool {
self.quote.is_some()
}
}