sparkle-cache-postgres 0.14.1

Discord cache implementation using PostgresSQL for the Twilight ecosystem
Documentation
use twilight_model::{
    id::Id,
    user::{CurrentUser, UserFlags},
    util::ImageHash,
};

use crate::model::premium_type_from_i16;

#[derive(Clone, Debug)]
pub struct QueriedCurrentUser {
    pub accent_color: Option<i64>,
    pub avatar: Option<String>,
    pub banner: Option<String>,
    pub bot: bool,
    pub discriminator: i32,
    pub email: Option<String>,
    pub flags: Option<i64>,
    pub id: i64,
    pub locale: Option<String>,
    pub mfa_enabled: bool,
    pub name: String,
    pub premium_type: Option<i16>,
    pub public_flags: Option<i64>,
    pub verified: Option<bool>,
}

impl From<QueriedCurrentUser> for CurrentUser {
    fn from(user: QueriedCurrentUser) -> Self {
        Self {
            accent_color: user.accent_color.map(|color| color as u32),
            avatar: user
                .avatar
                .map(|avatar| ImageHash::parse(avatar.as_bytes()).unwrap()),
            banner: user
                .banner
                .map(|banner| ImageHash::parse(banner.as_bytes()).unwrap()),
            bot: user.bot,
            discriminator: user.discriminator as u16,
            email: user.email,
            flags: user
                .flags
                .map(|flags| UserFlags::from_bits_truncate(flags as u64)),
            id: Id::new(user.id as u64),
            locale: user.locale,
            mfa_enabled: user.mfa_enabled,
            name: user.name,
            premium_type: user.premium_type.map(premium_type_from_i16),
            public_flags: user
                .public_flags
                .map(|flags| UserFlags::from_bits_truncate(flags as u64)),
            verified: user.verified,
        }
    }
}