use crate::{Identifier, exchange::bitmex::trade::BitmexTrade};
use barter_integration::subscription::SubscriptionId;
use serde::{Deserialize, Serialize};
use smol_str::format_smolstr;
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Debug, Deserialize, Serialize)]
pub struct BitmexMessage<T> {
pub table: String,
pub data: Vec<T>,
}
impl Identifier<Option<SubscriptionId>> for BitmexTrade {
fn id(&self) -> Option<SubscriptionId> {
self.data
.first()
.map(|trade| SubscriptionId(format_smolstr!("{}|{}", self.table, trade.symbol)))
.or(None)
}
}