use serde::Deserialize;
#[derive(Deserialize, Debug, Clone)]
pub struct CoinbaseTradeResponse {
pub channel: String,
pub timestamp: String,
pub sequence_num: u64,
pub events: Vec<CoinbaseTradeEvent>,
}
#[derive(Deserialize, Debug, Clone)]
pub struct CoinbaseTradeEvent {
#[serde(rename = "type")]
pub ty: String,
pub trades: Vec<CoinbaseTradeData>,
}
#[derive(Deserialize, Debug, Clone)]
pub struct CoinbaseTradeData {
pub trade_id: String,
pub product_id: String,
pub price: String,
pub size: String,
pub side: String,
pub time: String,
}
impl CoinbaseTradeData {
pub fn timestamp_ms(&self) -> u64 {
chrono::DateTime::parse_from_rfc3339(&self.time)
.map(|dt| dt.timestamp_millis() as u64)
.unwrap_or(0)
}
}