use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
pub struct Event {
pub ticker: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub numeric_id: Option<String>,
pub title: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub category: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub series_ticker: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(default)]
pub market_tickers: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub start_ts: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub end_ts: Option<DateTime<Utc>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub volume: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub open_interest: Option<f64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mutually_exclusive: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub last_updated_ts: Option<DateTime<Utc>>,
}