revolt_models/v0/
emojis.rs1use once_cell::sync::Lazy;
2use regex::Regex;
3
4#[cfg(feature = "validator")]
5use validator::Validate;
6
7pub static RE_EMOJI: Lazy<Regex> = Lazy::new(|| Regex::new(r"^[a-z0-9_]+$").unwrap());
11
12auto_derived!(
13 pub struct Emoji {
15 #[cfg_attr(feature = "serde", serde(rename = "_id"))]
17 pub id: String,
18 pub parent: EmojiParent,
20 pub creator_id: String,
22 pub name: String,
24 #[cfg_attr(
26 feature = "serde",
27 serde(skip_serializing_if = "crate::if_false", default)
28 )]
29 pub animated: bool,
30 #[cfg_attr(
32 feature = "serde",
33 serde(skip_serializing_if = "crate::if_false", default)
34 )]
35 pub nsfw: bool,
36 }
37
38 #[serde(tag = "type")]
40 pub enum EmojiParent {
41 Server { id: String },
42 Detached,
43 }
44
45 #[cfg_attr(feature = "validator", derive(Validate))]
47 pub struct DataCreateEmoji {
48 #[validate(length(min = 1, max = 32), regex = "RE_EMOJI")]
50 pub name: String,
51 pub parent: EmojiParent,
53 #[serde(default)]
55 pub nsfw: bool,
56 }
57);