tulpje_cache/models/
user.rs

1use twilight_model::{
2    id::{Id, marker::GuildMarker},
3    user::CurrentUser,
4};
5
6use crate::{Cache, Error};
7
8pub use twilight_model::user::CurrentUser as CachedCurrentUser;
9pub use twilight_model::user::User as CachedUser;
10
11impl Cache {
12    pub(crate) async fn cache_user(
13        &self,
14        user: &CachedUser,
15        guild_id: Option<Id<GuildMarker>>,
16    ) -> Result<(), Error> {
17        if let Some(cached_user) = self.users.get(&user.id).await?
18            && cached_user == *user
19        {
20            if let Some(guild_id) = guild_id {
21                self.user_guilds.insert(&user.id, &guild_id).await?;
22            }
23
24            return Ok(());
25        }
26
27        self.users.insert(&user.id, user).await?;
28        if let Some(guild_id) = guild_id {
29            self.user_guilds.insert(&user.id, &guild_id).await?;
30        }
31
32        Ok(())
33    }
34
35    pub(crate) async fn cache_current_user(&self, user: &CurrentUser) -> Result<(), Error> {
36        self.current_user.set(user.clone()).await?;
37        Ok(())
38    }
39}