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
use crate::errors::Result;
use crate::types::*;
use uuid::Uuid;

/// Closes the TDLib instance, destroying all local data without a proper logout. The current user session will remain in the list of all active sessions. All local data will be destroyed. After the destruction completes updateAuthorizationState with authorizationStateClosed will be sent. Can be called before authorization
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Destroy {
    #[doc(hidden)]
    #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
    extra: Option<String>,
    #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
    client_id: Option<i32>,

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

impl RObject for Destroy {
    #[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 Destroy {}

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

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

        DestroyBuilder { inner }
    }
}

#[doc(hidden)]
pub struct DestroyBuilder {
    inner: Destroy,
}

#[deprecated]
pub type RTDDestroyBuilder = DestroyBuilder;

impl DestroyBuilder {
    pub fn build(&self) -> Destroy {
        self.inner.clone()
    }
}

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

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