apisix_admin_client/models/
consumer_group_requests.rs

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