1use std::collections::HashMap;
2
3pub mod err;
4pub mod service_dto;
5pub mod service_vo;
6
7pub trait Dto {
9 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}