spectacles_model/
invite.rs1use std::time::Duration;
3
4use chrono::{DateTime, FixedOffset};
5
6use crate::channel::Channel;
7use crate::guild::Guild;
8use crate::User;
9
10#[derive(Deserialize, Serialize, Clone, Debug)]
12pub struct Invite {
13 pub code: String,
15 #[serde(default)]
17 pub guild: Option<Guild>,
18 pub channel: Channel,
20 #[serde(default)]
22 pub approximate_presence_count: Option<i32>,
23 #[serde(default)]
25 pub approximate_member_count: Option<i32>
26}
27
28#[derive(Deserialize, Serialize, Clone, Debug)]
30pub struct PartialInvite {
31 pub code: String
33}
34
35
36#[derive(Deserialize, Serialize, Clone, Debug)]
38pub struct InviteMetadata {
39 pub inviter: User,
41 pub uses: i32,
43 pub max_uses: i32,
45 pub max_age: i32,
47 pub temporary: bool,
49 pub created_at: DateTime<FixedOffset>,
51 pub revoked: bool
53}
54
55#[derive(Deserialize, Serialize, Clone, Debug)]
57pub struct CreateInviteOptions {
58 max_age: u64,
59 max_uses: i32,
60 temporary: bool,
61 unique: bool,
62}
63
64impl CreateInviteOptions {
65 pub fn new() -> Self {
66 CreateInviteOptions {
67 max_age: 86400,
68 max_uses: 0,
69 temporary: false,
70 unique: false,
71 }
72 }
73
74 pub fn set_max_age(mut self, age: Duration) -> Self {
76 self.max_age = age.as_secs();
77 self
78 }
79
80 pub fn set_max_uses(mut self, uses: i32) -> Self {
82 self.max_uses = uses;
83 self
84 }
85
86 pub fn set_temporary(mut self, temp: bool) -> Self {
88 self.temporary = temp;
89 self
90 }
91
92 pub fn set_unique(mut self, unique: bool) -> Self {
94 self.unique = unique;
95 self
96 }
97}