apisix_admin_client/models/
consumer_group_requests.rs1use 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 pub fn with_desc(mut self, desc: String) -> Self {
25 self.desc = Some(desc);
26 self
27 }
28
29 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}