chimes_rust/entity/
chimes_data_source.rs

1use chimes_utils::{i32_from_str, i64_from_str};
2use rbatis::crud::{Skip, CRUD};
3use rbatis::crud_table;
4use rbatis::error::Error;
5use rbatis::rbatis::Rbatis;
6use rbatis::Page;
7use rbatis::PageRequest;
8use rbson::Bson;
9use serde_derive::{Deserialize, Serialize};
10/**
11 * Generate the file for chimes_dict_info.rs,
12 */
13use std::fmt::Debug;
14
15#[crud_table(table_name:"chimes_data_source"|table_columns:"id,name,code,database_type,server_address,port,db_name,username,password,connection_timeout,execution_timeout,properties,remark,status,create_time,update_time")]
16#[derive(Debug, Clone, Default, Deserialize, Serialize)]
17pub struct ChimesDataSourceInfo {
18    #[serde(default)]
19    #[serde(deserialize_with = "i64_from_str")]
20    pub id: Option<i64>,
21    pub name: Option<String>,
22    pub code: Option<String>,
23    pub database_type: Option<String>,
24    pub server_address: Option<String>,
25    pub port: Option<String>,
26    pub db_name: Option<String>,
27    pub username: Option<String>,
28    pub password: Option<String>,
29    #[serde(default)]
30    #[serde(deserialize_with = "i32_from_str")]
31    pub connection_timeout: Option<i32>,
32    #[serde(default)]
33    #[serde(deserialize_with = "i32_from_str")]
34    pub execution_timeout: Option<i32>,
35    pub properties: Option<String>,
36    pub remark: Option<String>,
37    pub status: Option<String>,
38    pub create_time: Option<rbatis::DateTimeNative>,
39    pub update_time: Option<rbatis::DateTimeNative>,
40}
41
42impl ChimesDataSourceInfo {
43    #[allow(dead_code)]
44    pub async fn from_id(rb: &Rbatis, dict_id: &i64) -> Result<Option<Self>, Error> {
45        let wp = rb.new_wrapper().eq("id", dict_id);
46        rb.fetch_by_wrapper::<Option<Self>>(wp).await
47    }
48
49    #[allow(dead_code)]
50    pub async fn save(&mut self, rb: &Rbatis) -> Result<u64, Error> {
51        match rb.save(self, &[Skip::Column("id")]).await {
52            Ok(ds) => {
53                self.id = ds.last_insert_id;
54                Ok(ds.rows_affected)
55            }
56            Err(err) => Err(err),
57        }
58    }
59
60    #[allow(dead_code)]
61    pub async fn update(&self, rb: &Rbatis) -> Result<u64, Error> {
62        let wp = rb.new_wrapper().eq("id", self.id);
63        rb.update_by_wrapper(self, wp, &[Skip::Column("id")]).await
64    }
65
66    #[allow(dead_code)]
67    pub async fn update_selective(&self, rb: &Rbatis) -> Result<u64, Error> {
68        let wp = rb.new_wrapper().eq("id", self.id);
69        rb.update_by_wrapper(self, wp, &[Skip::Value(Bson::Null)])
70            .await
71    }
72
73    #[allow(dead_code)]
74    pub async fn remove_batch(&self, rb: &Rbatis) -> Result<u64, Error> {
75        let wp = rb
76            .new_wrapper()
77            .r#if(self.id.clone().is_some(), |w| {
78                w.and().eq("id", self.id.unwrap())
79            })
80            .r#if(self.name.clone().is_some(), |w| {
81                w.and().eq("name", self.name.clone().unwrap())
82            })
83            .r#if(self.code.clone().is_some(), |w| {
84                w.and().eq("code", self.code.clone().unwrap())
85            })
86            .r#if(self.database_type.clone().is_some(), |w| {
87                w.and()
88                    .eq("database_type", self.database_type.clone().unwrap())
89            })
90            .r#if(self.db_name.clone().is_some(), |w| {
91                w.and().eq("db_name", self.db_name.clone().unwrap())
92            })
93            .r#if(self.status.clone().is_some(), |w| {
94                w.and().eq("status", self.status.clone().unwrap())
95            })
96            .r#if(self.remark.clone().is_some(), |w| {
97                w.and().eq("remark", self.remark.clone().unwrap())
98            })
99            .r#if(self.create_time.clone().is_some(), |w| {
100                w.and().eq("create_time", self.create_time.unwrap())
101            })
102            .r#if(self.update_time.clone().is_some(), |w| {
103                w.and().eq("update_time", self.update_time.unwrap())
104            });
105        rb.remove_by_wrapper::<Self>(wp).await
106    }
107
108    #[allow(dead_code)]
109    pub async fn remove(&mut self, rb: &Rbatis) -> Result<u64, Error> {
110        let wp = rb.new_wrapper().eq("id", self.id);
111        rb.remove_by_wrapper::<Self>(wp).await
112    }
113
114    #[allow(dead_code)]
115    pub async fn query_paged(&self, rb: &Rbatis, curr: u64, ps: u64) -> Result<Page<Self>, Error> {
116        let wp = rb
117            .new_wrapper()
118            .r#if(self.id.clone().is_some(), |w| {
119                w.and().eq("id", self.id.unwrap())
120            })
121            .r#if(self.name.clone().is_some(), |w| {
122                w.and().eq("name", self.name.clone().unwrap())
123            })
124            .r#if(self.code.clone().is_some(), |w| {
125                w.and().eq("code", self.code.clone().unwrap())
126            })
127            .r#if(self.database_type.clone().is_some(), |w| {
128                w.and()
129                    .eq("database_type", self.database_type.clone().unwrap())
130            })
131            .r#if(self.db_name.clone().is_some(), |w| {
132                w.and().eq("db_name", self.db_name.clone().unwrap())
133            })
134            .r#if(self.status.clone().is_some(), |w| {
135                w.and().eq("status", self.status.clone().unwrap())
136            })
137            .r#if(self.remark.clone().is_some(), |w| {
138                w.and().eq("remark", self.remark.clone().unwrap())
139            })
140            .r#if(self.create_time.clone().is_some(), |w| {
141                w.and().eq("create_time", self.create_time.unwrap())
142            })
143            .r#if(self.update_time.clone().is_some(), |w| {
144                w.and().eq("update_time", self.update_time.unwrap())
145            });
146        rb.fetch_page_by_wrapper::<Self>(wp, &PageRequest::new(curr, ps))
147            .await
148    }
149
150    #[allow(dead_code)]
151    pub async fn query_list(&self, rb: &Rbatis) -> Result<Vec<Self>, Error> {
152        let wp = rb
153            .new_wrapper()
154            .r#if(self.id.clone().is_some(), |w| {
155                w.and().eq("id", self.id.unwrap())
156            })
157            .r#if(self.name.clone().is_some(), |w| {
158                w.and().eq("name", self.name.clone().unwrap())
159            })
160            .r#if(self.code.clone().is_some(), |w| {
161                w.and().eq("code", self.code.clone().unwrap())
162            })
163            .r#if(self.database_type.clone().is_some(), |w| {
164                w.and()
165                    .eq("database_type", self.database_type.clone().unwrap())
166            })
167            .r#if(self.db_name.clone().is_some(), |w| {
168                w.and().eq("db_name", self.db_name.clone().unwrap())
169            })
170            .r#if(self.status.clone().is_some(), |w| {
171                w.and().eq("status", self.status.clone().unwrap())
172            })
173            .r#if(self.remark.clone().is_some(), |w| {
174                w.and().eq("remark", self.remark.clone().unwrap())
175            })
176            .r#if(self.create_time.clone().is_some(), |w| {
177                w.and().eq("create_time", self.create_time.unwrap())
178            })
179            .r#if(self.update_time.clone().is_some(), |w| {
180                w.and().eq("update_time", self.update_time.unwrap())
181            });
182        rb.fetch_list_by_wrapper::<Self>(wp).await
183    }
184
185    #[allow(dead_code)]
186    pub async fn remove_ids(rb: &Rbatis, ids: &[i64]) -> Result<u64, Error> {
187        let wp = rb.new_wrapper().r#in("id", ids);
188        rb.remove_by_wrapper::<Self>(wp).await
189    }
190}