titanium_model/builder/
invite.rs

1/// Payload for creating an invite.
2#[derive(Debug, Clone, serde::Serialize, Default)]
3pub struct CreateInvite {
4    #[serde(skip_serializing_if = "Option::is_none")]
5    pub max_age: Option<u32>,
6    #[serde(skip_serializing_if = "Option::is_none")]
7    pub max_uses: Option<u32>,
8    #[serde(skip_serializing_if = "Option::is_none")]
9    pub temporary: Option<bool>,
10    #[serde(skip_serializing_if = "Option::is_none")]
11    pub unique: Option<bool>,
12    #[serde(skip_serializing_if = "Option::is_none")]
13    pub target_type: Option<u8>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    pub target_user_id: Option<crate::Snowflake>,
16    #[serde(skip_serializing_if = "Option::is_none")]
17    pub target_application_id: Option<crate::Snowflake>,
18}
19
20/// Builder for creating an Invite.
21#[derive(Debug, Clone, Default)]
22pub struct CreateInviteBuilder {
23    params: CreateInvite,
24}
25
26impl CreateInviteBuilder {
27    /// Create a new `CreateInviteBuilder`.
28    #[must_use]
29    pub fn new() -> Self {
30        Self::default()
31    }
32
33    /// Set max age in seconds (0 = never expire).
34    #[must_use]
35    pub fn max_age(mut self, seconds: u32) -> Self {
36        self.params.max_age = Some(seconds);
37        self
38    }
39
40    /// Set max uses (0 = unlimited).
41    #[must_use]
42    pub fn max_uses(mut self, uses: u32) -> Self {
43        self.params.max_uses = Some(uses);
44        self
45    }
46
47    /// Set temporary (kick after disconnect).
48    #[must_use]
49    pub fn temporary(mut self, temp: bool) -> Self {
50        self.params.temporary = Some(temp);
51        self
52    }
53
54    /// Set unique (don't reuse similar invite).
55    #[must_use]
56    pub fn unique(mut self, unique: bool) -> Self {
57        self.params.unique = Some(unique);
58        self
59    }
60
61    /// Build the `CreateInvite` payload.
62    #[must_use]
63    pub fn build(self) -> CreateInvite {
64        self.params
65    }
66}