1manual_braid! {
2 pub struct UserId;
4 pub struct UserIdRef;
5}
6impl_extra!(numeric, UserId, UserIdRef);
7
8manual_braid! {
9 pub struct DisplayName;
11 pub struct DisplayNameRef;
12}
13impl_extra!(DisplayName, DisplayNameRef);
14
15manual_braid! {
16 pub struct Nickname;
18 pub struct NicknameRef;
19}
20impl_extra!(ascii, Nickname, NicknameRef);
21
22pub type UserName = Nickname;
24
25pub type UserNameRef = NicknameRef;
27
28manual_braid! {
29 pub struct MsgId;
31 pub struct MsgIdRef;
32}
33impl_extra!(MsgId, MsgIdRef);
34
35#[derive(Copy, Clone, Default, Debug, PartialEq, PartialOrd, Eq, Ord, Hash)]
37#[cfg_attr(feature = "serde", derive(serde_derive::Deserialize))]
38pub enum BroadcasterType {
39 #[cfg_attr(feature = "serde", serde(rename = "partner"))]
41 Partner,
42 #[cfg_attr(feature = "serde", serde(rename = "affiliate"))]
44 Affiliate,
45 #[cfg_attr(feature = "serde", serde(other))]
47 #[default]
48 None,
49}
50
51#[cfg(feature = "serde")]
52impl serde::Serialize for BroadcasterType {
53 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
54 where S: serde::Serializer {
55 serializer.serialize_str(match self {
56 BroadcasterType::Partner => "partner",
57 BroadcasterType::Affiliate => "affiliate",
58 BroadcasterType::None => "",
59 })
60 }
61}
62
63#[derive(Copy, Clone, Default, Debug, PartialEq, PartialOrd, Eq, Ord, Hash)]
65#[cfg_attr(feature = "serde", derive(serde_derive::Deserialize))]
66
67pub enum UserType {
68 #[cfg_attr(feature = "serde", serde(rename = "staff"))]
70 Staff,
71 #[cfg_attr(feature = "serde", serde(rename = "admin"))]
73 Admin,
74 #[cfg_attr(feature = "serde", serde(rename = "global_mod"))]
76 GlobalMod,
77 #[cfg_attr(feature = "serde", serde(other))]
79 #[default]
80 None,
81}
82
83impl UserType {
84 pub fn parse(input: &str) -> Self {
86 match input {
87 "admin" => Self::Admin,
88 "global_mod" => Self::GlobalMod,
89 "staff" => Self::Staff,
90 _ => Self::None,
91 }
92 }
93}
94
95#[cfg(feature = "serde")]
96impl serde::Serialize for UserType {
97 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
98 where S: serde::Serializer {
99 serializer.serialize_str(match self {
100 UserType::Staff => "staff",
101 UserType::Admin => "admin",
102 UserType::GlobalMod => "global_mod",
103 UserType::None => "",
104 })
105 }
106}