1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
use crate::errors::Result;
use crate::types::*;
use uuid::Uuid;

/// Returns information about the next messages of the specified type in the chat split by days. Returns the results in reverse chronological order. Can return partial result for the last returned day. Behavior of this method depends on the value of the option "utc_time_offset"
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct GetChatMessageCalendar {
    #[doc(hidden)]
    #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
    extra: Option<String>,
    #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
    client_id: Option<i32>,
    /// Identifier of the chat in which to return information about messages

    #[serde(default)]
    chat_id: i64,
    /// Filter for message content. Filters searchMessagesFilterEmpty, searchMessagesFilterMention and searchMessagesFilterUnreadMention are unsupported in this function

    #[serde(skip_serializing_if = "SearchMessagesFilter::_is_default")]
    filter: SearchMessagesFilter,
    /// The message identifier from which to return information about messages; use 0 to get results from the last message

    #[serde(default)]
    from_message_id: i64,

    #[serde(rename(serialize = "@type"))]
    td_type: String,
}

impl RObject for GetChatMessageCalendar {
    #[doc(hidden)]
    fn extra(&self) -> Option<&str> {
        self.extra.as_deref()
    }
    #[doc(hidden)]
    fn client_id(&self) -> Option<i32> {
        self.client_id
    }
}

impl RFunction for GetChatMessageCalendar {}

impl GetChatMessageCalendar {
    pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
        Ok(serde_json::from_str(json.as_ref())?)
    }
    pub fn builder() -> GetChatMessageCalendarBuilder {
        let mut inner = GetChatMessageCalendar::default();
        inner.extra = Some(Uuid::new_v4().to_string());

        inner.td_type = "getChatMessageCalendar".to_string();

        GetChatMessageCalendarBuilder { inner }
    }

    pub fn chat_id(&self) -> i64 {
        self.chat_id
    }

    pub fn filter(&self) -> &SearchMessagesFilter {
        &self.filter
    }

    pub fn from_message_id(&self) -> i64 {
        self.from_message_id
    }
}

#[doc(hidden)]
pub struct GetChatMessageCalendarBuilder {
    inner: GetChatMessageCalendar,
}

#[deprecated]
pub type RTDGetChatMessageCalendarBuilder = GetChatMessageCalendarBuilder;

impl GetChatMessageCalendarBuilder {
    pub fn build(&self) -> GetChatMessageCalendar {
        self.inner.clone()
    }

    pub fn chat_id(&mut self, chat_id: i64) -> &mut Self {
        self.inner.chat_id = chat_id;
        self
    }

    pub fn filter<T: AsRef<SearchMessagesFilter>>(&mut self, filter: T) -> &mut Self {
        self.inner.filter = filter.as_ref().clone();
        self
    }

    pub fn from_message_id(&mut self, from_message_id: i64) -> &mut Self {
        self.inner.from_message_id = from_message_id;
        self
    }
}

impl AsRef<GetChatMessageCalendar> for GetChatMessageCalendar {
    fn as_ref(&self) -> &GetChatMessageCalendar {
        self
    }
}

impl AsRef<GetChatMessageCalendar> for GetChatMessageCalendarBuilder {
    fn as_ref(&self) -> &GetChatMessageCalendar {
        &self.inner
    }
}