use once_cell::sync::Lazy;
use regex::Regex;
#[cfg(feature = "validator")]
use validator::Validate;
pub static RE_EMOJI: Lazy<Regex> = Lazy::new(|| Regex::new(r"^[a-z0-9_]+$").unwrap());
auto_derived!(
pub struct Emoji {
#[cfg_attr(feature = "serde", serde(rename = "_id"))]
pub id: String,
pub parent: EmojiParent,
pub creator_id: String,
pub name: String,
#[cfg_attr(
feature = "serde",
serde(skip_serializing_if = "crate::if_false", default)
)]
pub animated: bool,
#[cfg_attr(
feature = "serde",
serde(skip_serializing_if = "crate::if_false", default)
)]
pub nsfw: bool,
}
#[serde(tag = "type")]
pub enum EmojiParent {
Server { id: String },
Detached,
}
#[cfg_attr(feature = "validator", derive(Validate))]
pub struct DataCreateEmoji {
#[validate(length(min = 1, max = 32), regex = "RE_EMOJI")]
pub name: String,
pub parent: EmojiParent,
#[serde(default)]
pub nsfw: bool,
}
);