use super::{ChannelSubType, ChannelType, PrivateType, SpeakPermission};
use crate::models::Snowflake;
use crate::models::serde_helpers::option_is_none_or_default;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Default)]
pub struct ChannelValueObject {
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub name: Option<String>,
#[serde(rename = "type", skip_serializing_if = "option_is_none_or_default")]
pub channel_type: Option<ChannelType>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub position: Option<i64>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub parent_id: Option<Snowflake>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub owner_id: Option<Snowflake>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub sub_type: Option<ChannelSubType>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub private_type: Option<PrivateType>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub private_user_ids: Option<Vec<String>>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub speak_permission: Option<SpeakPermission>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub application_id: Option<Snowflake>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub permissions: Option<String>,
#[serde(skip_serializing_if = "option_is_none_or_default")]
pub op_user_id: Option<Snowflake>,
}
impl ChannelValueObject {
pub fn new(
name: impl Into<String>,
channel_type: ChannelType,
sub_type: ChannelSubType,
) -> Self {
Self {
name: Some(name.into()),
channel_type: Some(channel_type),
sub_type: Some(sub_type),
..Default::default()
}
}
}