use crate::parsers::common::{Location, TravelClass, Travelers};
use chrono::NaiveDate;
#[derive(Debug, Clone)]
pub struct DealConfig {
pub origin: Vec<Location>,
pub outbound_date: NaiveDate,
pub return_date: NaiveDate,
pub nonstop: bool,
pub max_duration_minutes: Option<u32>,
pub travel_class: TravelClass,
pub travellers: Travelers,
}
impl Default for DealConfig {
fn default() -> Self {
Self {
origin: Vec::new(),
outbound_date: NaiveDate::from_ymd_opt(2025, 1, 1).expect("valid date"),
return_date: NaiveDate::from_ymd_opt(2025, 1, 4).expect("valid date"),
nonstop: false,
max_duration_minutes: None,
travel_class: TravelClass::Economy,
travellers: Travelers::default(),
}
}
}
#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
pub struct DealResult {
pub origin_iata: String,
pub destination_iata: String,
pub destination_city: String,
pub destination_country: String,
pub destination_mid: Option<String>,
pub outbound_date: Option<NaiveDate>,
pub return_date: Option<NaiveDate>,
pub price: Option<i32>,
pub typical_price: Option<i32>,
pub discount_pct: Option<i32>,
pub duration_minutes: Option<u32>,
pub stops: Option<u8>,
pub airline_code: Option<String>,
pub airline_name: Option<String>,
pub image_url: Option<String>,
pub highlights: Vec<String>,
pub description: Option<String>,
pub booking_url: Option<String>,
pub booking_token: Option<String>,
}