apisix_admin_client/models/
consumer_requests.rs1use 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 pub fn with_username(mut self, username: String) -> Self {
22 self.username = Some(username);
23 self
24 }
25
26 pub fn with_group_id(mut self, group_id: String) -> Self {
28 self.group_id = Some(group_id);
29 self
30 }
31
32 pub fn with_desc(mut self, desc: String) -> Self {
34 self.desc = Some(desc);
35 self
36 }
37
38 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}