use std::collections::HashMap;
use crate::model::id::MessageId;
#[derive(Clone, Debug, Default)]
pub struct GetMessages(pub HashMap<&'static str, u64>);
impl GetMessages {
#[inline]
pub fn after<M: Into<MessageId>>(&mut self, message_id: M) -> &mut Self {
self._after(message_id.into());
self
}
fn _after(&mut self, message_id: MessageId) {
self.0.insert("after", message_id.0);
}
#[inline]
pub fn around<M: Into<MessageId>>(&mut self, message_id: M) -> &mut Self {
self._around(message_id.into());
self
}
fn _around(&mut self, message_id: MessageId) {
self.0.insert("around", message_id.0);
}
#[inline]
pub fn before<M: Into<MessageId>>(&mut self, message_id: M) -> &mut Self {
self._before(message_id.into());
self
}
fn _before(&mut self, message_id: MessageId) {
self.0.insert("before", message_id.0);
}
pub fn limit(&mut self, limit: u64) -> &mut Self {
self.0.insert("limit", if limit > 100 { 100 } else { limit });
self
}
}