nacos_api/model/
mod.rs

1use std::collections::HashMap;
2
3pub mod err;
4pub mod service_dto;
5pub mod service_vo;
6
7/// Dto接口 请求参数结构体实现该特征
8pub trait Dto {
9    /// 该方法用于将 dto中的属性装填入map中 也就是定义名称与值映射
10    fn mapping(&self, map: &mut HashMap<String, String>);
11}
12
13pub(crate) fn catch_mapping<T: Dto>(map: &mut HashMap<String, String>, option: &Option<T>) {
14    if let Some(s) = option { s.mapping(map); }
15}
16
17#[derive(Clone)]
18pub struct NacosConfig {
19    scheme: String,
20    nacos_ip: String,
21    nacos_port: u32,
22}
23
24impl Default for NacosConfig {
25    fn default() -> Self {
26        Self {
27            scheme: "http".to_string(),
28            nacos_ip: "127.0.0.1".to_string(),
29            nacos_port: 8848,
30        }
31    }
32}
33
34impl NacosConfig {
35    pub fn new(scheme: &str, nacos_ip: &str, nacos_port: u32) -> Self {
36        Self {
37            scheme: scheme.to_string(),
38            nacos_ip: nacos_ip.to_string(),
39            nacos_port,
40        }
41    }
42
43    pub fn exchange(&mut self, ex: Self) -> Self {
44        let prev = self.clone();
45        self.scheme = ex.scheme;
46        self.nacos_ip = ex.nacos_ip;
47        self.nacos_port = ex.nacos_port;
48        prev
49    }
50
51    pub fn addr(&self, target: &str) -> String {
52        let sub_path = if target.starts_with('/')
53        { target.to_string() } else { format!("/{}", target) };
54        format!(
55            "{}://{}:{}/nacos{}",
56            self.scheme, self.nacos_ip, self.nacos_port, sub_path
57        )
58    }
59}
60
61#[derive(Default, Debug, Clone)]
62pub struct ServerConfig {
63    server_ip: String,
64    server_port: u16,
65    server_name: String,
66    ephemeral: bool,
67    group_name: Option<String>,
68}
69
70impl ServerConfig {
71    pub fn set_server_ip(&mut self, server_ip: String) {
72        self.server_ip = server_ip;
73    }
74    pub fn set_server_port(&mut self, server_port: u16) {
75        self.server_port = server_port;
76    }
77    pub fn set_server_name(&mut self, server_name: String) {
78        self.server_name = server_name;
79    }
80    pub fn set_ephemeral(&mut self, ephemeral: bool) {
81        self.ephemeral = ephemeral;
82    }
83    pub fn set_group_name(&mut self, group_name: Option<String>) {
84        self.group_name = group_name;
85    }
86}
87
88impl ServerConfig {
89    pub fn server_ip(&self) -> &str { &self.server_ip }
90    pub fn server_port(&self) -> u16 {
91        self.server_port
92    }
93    pub fn server_name(&self) -> &str {
94        &self.server_name
95    }
96    pub fn ephemeral(&self) -> bool {
97        self.ephemeral
98    }
99    pub fn group_name(&self) -> &Option<String> {
100        &self.group_name
101    }
102}
103
104impl ServerConfig {
105    pub fn new(server_ip: &str, server_port: u16, server_name: &str) -> Self {
106        Self {
107            server_ip: server_ip.to_string(),
108            server_port,
109            server_name: server_name.to_string(),
110            ephemeral: false,
111            group_name: None,
112        }
113    }
114
115    pub(crate) fn init_map(&self) -> HashMap<String, String> {
116        let mut map = HashMap::<String, String>::new();
117        map.insert("ip".to_string(), self.server_ip().to_string());
118        map.insert("port".to_string(), self.server_port().to_string());
119        map.insert("serviceName".to_string(), self.server_name().to_string());
120        if self.ephemeral {
121            map.insert("ephemeral".to_string(), true.to_string());
122        }
123        if let Some(s) = &self.group_name {
124            map.insert("groupName".to_string(), s.to_string());
125        }
126        map
127    }
128}
129
130#[derive(Default, Debug, Clone)]
131pub struct DeployConfig {
132    data_id: String,
133    group: String,
134    tenant: Option<String>,
135}
136
137impl DeployConfig {
138    pub fn new(data_id: &str, group: &str, tenant: Option<String>) -> Self {
139        Self {
140            data_id: data_id.to_string(),
141            group: group.to_string(),
142            tenant,
143        }
144    }
145
146    pub fn init_map(&self) -> HashMap<String, String> {
147        let mut map = HashMap::<String, String>::new();
148        map.insert("dataId".to_string(), self.data_id.clone());
149        map.insert("group".to_string(), self.group.clone());
150        if let Some(tenant) = &self.tenant {
151            map.insert("tenant".to_string(), tenant.clone());
152        };
153        map
154    }
155
156    pub fn data_id(&self) -> &str {
157        &self.data_id
158    }
159    pub fn group(&self) -> &str {
160        &self.group
161    }
162    pub fn tenant(&self) -> &Option<String> {
163        &self.tenant
164    }
165}