use twilight_model::{
channel::{
permission_overwrite::PermissionOverwrite,
thread::{AutoArchiveDuration, ThreadMetadata},
Channel, ChannelType, VideoQualityMode,
},
id::{
marker::{ApplicationMarker, ChannelMarker, GuildMarker, UserMarker},
Id,
},
util::ImageHash,
};
#[derive(Clone, Debug)]
pub struct CachedChannel {
pub application_id: Option<Id<ApplicationMarker>>,
pub bitrate: Option<u32>,
pub default_auto_archive_duration: Option<AutoArchiveDuration>,
pub guild_id: Option<Id<GuildMarker>>,
pub icon: Option<ImageHash>,
pub id: Id<ChannelMarker>,
pub invitable: Option<bool>,
pub kind: ChannelType,
pub name: Option<String>,
pub nsfw: Option<bool>,
pub owner_id: Option<Id<UserMarker>>,
pub parent_id: Option<Id<ChannelMarker>>,
pub permission_overwrites: Option<Vec<PermissionOverwrite>>,
pub position: Option<i32>,
pub rate_limit_per_user: Option<u16>,
pub rtc_region: Option<String>,
pub thread_metadata: Option<ThreadMetadata>,
pub topic: Option<String>,
pub user_limit: Option<u32>,
pub video_quality_mode: Option<VideoQualityMode>,
}
impl From<&Channel> for CachedChannel {
fn from(channel: &Channel) -> Self {
Self {
application_id: channel.application_id,
bitrate: channel.bitrate,
default_auto_archive_duration: channel.default_auto_archive_duration,
guild_id: channel.guild_id,
icon: channel.icon,
id: channel.id,
invitable: channel.invitable,
kind: channel.kind,
name: channel.name.clone(),
nsfw: channel.nsfw,
owner_id: channel.owner_id,
parent_id: channel.parent_id,
permission_overwrites: channel.permission_overwrites.clone(),
position: channel.position,
rate_limit_per_user: channel.rate_limit_per_user,
rtc_region: channel.rtc_region.clone(),
thread_metadata: channel.thread_metadata.clone(),
topic: channel.topic.clone(),
user_limit: channel.user_limit,
video_quality_mode: channel.video_quality_mode,
}
}
}