apisix_admin_client/models/
consumer_requests.rs

1use serde::{Deserialize, Serialize};
2use crate::{Result};
3use crate::models::Plugins;
4
5#[serde_with::skip_serializing_none]
6#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
7pub struct ConsumerBuilder {
8    pub plugins: Option<Plugins>,
9    pub username: Option<String>,
10    pub group_id: Option<String>,
11    pub desc: Option<String>,
12}
13
14impl ConsumerBuilder {
15
16    pub fn new() -> Self {
17        ConsumerRequest::default().into()
18    }
19
20    /// Name of the Consumer
21    pub fn with_username(mut self, username: String) -> Self {
22        self.username = Some(username);
23        self
24    }
25
26    /// Group of the Consumer
27    pub fn with_group_id(mut self, group_id: String) -> Self {
28        self.group_id = Some(group_id);
29        self
30    }
31
32    /// Description of usage scenarios
33    pub fn with_desc(mut self, desc: String) -> Self {
34        self.desc = Some(desc);
35        self
36    }
37
38    /// Plugins that are executed during the request/response cycle. See [Plugins] for more
39    pub fn with_plugins(mut self, plugins: Plugins) -> Self {
40        self.plugins = Some(plugins);
41        self
42    }
43    pub fn build(self) -> Result<ConsumerRequest> {
44        Ok(ConsumerRequest {
45            plugins: self.plugins,
46            username: self.username,
47            group_id: self.group_id,
48            desc: self.desc,
49        })
50    }
51}
52
53#[serde_with::skip_serializing_none]
54#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
55pub struct ConsumerRequest {
56    pub plugins: Option<Plugins>,
57    pub username: Option<String>,
58    pub group_id: Option<String>,
59    pub desc: Option<String>,
60}
61
62impl From<ConsumerRequest> for ConsumerBuilder {
63    fn from(consumer: ConsumerRequest) -> Self {
64        ConsumerBuilder {
65            plugins: consumer.plugins,
66            username: consumer.username,
67            group_id: consumer.group_id,
68            desc: consumer.desc,
69        }
70    }
71}