pub mod events;
pub mod update;
mod message;
mod user;
pub use message::MessageCache;
pub use user::UserCache;
use crate::cache::update::CacheUpdate;
use crate::client::models::{
Message,
User,
};
use crate::gateway::events::Event;
#[derive(Debug)]
pub struct Cache {
user: UserCache,
messages: MessageCache,
}
impl Cache {
pub fn new() -> Self {
Self {
user: UserCache::new(None),
messages: MessageCache::new(),
}
}
pub fn user(&self) -> Option<User> {
self.user.get()
}
pub fn set_user(&self, user: User) {
self.user.set(user);
}
pub fn messages(&self) -> Vec<Message> {
self.messages.messages()
}
pub fn update(&self, event: &mut Event) {
let _ = event.update(self);
}
pub fn push_message(&self, message: Message) {
self.messages.push_message(message);
}
}
impl Default for Cache {
fn default() -> Self {
Self::new()
}
}