use crate::types::{Channel, Embed, User};
use serde::ser::SerializeStruct;
use serde::{Serialize, Serializer};
#[derive(Deserialize, Clone)]
pub struct Message {
pub id: u128,
pub content: Option<String>,
pub channel: Channel,
pub channel_id: u128,
pub author_id: u128,
pub author: Option<User>,
pub edited_at: Option<time::PrimitiveDateTime>,
pub embeds: Vec<Embed>,
pub nonce: Option<String>,
}
impl Serialize for Message {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
let mut self_ser = serializer.serialize_struct("Message", 9)?;
self_ser.serialize_field("id", &self.id)?;
self_ser.serialize_field("id_string", &self.id.to_string())?;
self_ser.serialize_field("content", &self.content)?;
self_ser.serialize_field("channel", &self.channel)?;
self_ser.serialize_field("channel_id", &self.channel_id)?;
self_ser.serialize_field("channel_id_string", &self.channel_id.to_string())?;
self_ser.serialize_field("author_id", &self.author_id)?;
self_ser.serialize_field("author_id_string", &self.author_id.to_string())?;
self_ser.serialize_field("author", &self.author)?;
self_ser.serialize_field("edited_at", &self.edited_at)?;
self_ser.serialize_field("embeds", &self.embeds)?;
self_ser.serialize_field("nonce", &self.nonce)?;
self_ser.end()
}
}
#[derive(Serialize, Deserialize)]
pub struct MessageHistory {
pub messages: Vec<Message>,
}