1use rbatis::crud::{Skip, CRUD};
2use rbatis::crud_table;
3use rbatis::error::Error;
4use rbatis::rbatis::Rbatis;
5use rbatis::Page;
6use rbatis::PageRequest;
7use rbson::Bson;
8use serde_derive::{Deserialize, Serialize};
9use std::fmt::Debug;
13
14#[crud_table(table_name:"chimes_role"|table_columns:"role_id,name,role_code,level,description,data_scope,create_by,update_by,create_time,update_time")]
15#[derive(Debug, Clone, Default, Deserialize, Serialize)]
16pub struct ChimesRoleInfo {
17 pub role_id: Option<i64>,
18 pub name: Option<String>,
19 pub role_code: Option<String>,
20 pub level: Option<i32>,
21 pub description: Option<String>,
22 pub data_scope: Option<String>,
23 pub create_by: Option<String>,
24 pub update_by: Option<String>,
25 pub create_time: Option<rbatis::DateTimeNative>,
26 pub update_time: Option<rbatis::DateTimeNative>,
27}
28
29impl ChimesRoleInfo {
30 #[allow(dead_code)]
31 pub async fn from_id(rb: &Rbatis, role_id: &i64) -> Result<Option<Self>, Error> {
32 let wp = rb.new_wrapper().eq("role_id", role_id);
33 rb.fetch_by_wrapper::<Option<Self>>(wp).await
34 }
35
36 #[allow(dead_code)]
37 pub async fn from_code(rb: &Rbatis, role_code: &String) -> Result<Option<Self>, Error> {
38 let wp = rb.new_wrapper().eq("role_code", role_code);
39 rb.fetch_by_wrapper::<Option<Self>>(wp).await
40 }
41
42 #[allow(dead_code)]
43 pub async fn save(&mut self, rb: &Rbatis) -> Result<u64, Error> {
44 match rb.save(self, &[Skip::Column("role_id")]).await {
45 Ok(ds) => {
46 self.role_id = ds.last_insert_id;
47 Ok(ds.rows_affected)
48 }
49 Err(err) => Err(err),
50 }
51 }
52
53 #[allow(dead_code)]
54 pub async fn update(&self, rb: &Rbatis) -> Result<u64, Error> {
55 let wp = rb.new_wrapper().eq("role_id", self.role_id);
56 rb.update_by_wrapper(self, wp, &[Skip::Column("role_id")])
57 .await
58 }
59
60 #[allow(dead_code)]
61 pub async fn update_selective(&self, rb: &Rbatis) -> Result<u64, Error> {
62 let wp = rb.new_wrapper().eq("role_id", self.role_id);
63 rb.update_by_wrapper(self, wp, &[Skip::Value(Bson::Null)])
64 .await
65 }
66
67 #[allow(dead_code)]
68 pub async fn remove_batch(&self, rb: &Rbatis) -> Result<u64, Error> {
69 let wp = rb
70 .new_wrapper()
71 .r#if(self.role_id.clone().is_some(), |w| {
72 w.and().eq("role_id", self.role_id.unwrap())
73 })
74 .r#if(self.name.clone().is_some(), |w| {
75 w.and().eq("name", self.name.clone().unwrap())
76 })
77 .r#if(self.role_code.clone().is_some(), |w| {
78 w.and().eq("role_code", self.role_code.clone().unwrap())
79 })
80 .r#if(self.level.clone().is_some(), |w| {
81 w.and().eq("level", self.level.unwrap())
82 })
83 .r#if(self.description.clone().is_some(), |w| {
84 w.and().eq("description", self.description.clone().unwrap())
85 })
86 .r#if(self.data_scope.clone().is_some(), |w| {
87 w.and().eq("data_scope", self.data_scope.clone().unwrap())
88 })
89 .r#if(self.create_by.clone().is_some(), |w| {
90 w.and().eq("create_by", self.create_by.clone().unwrap())
91 })
92 .r#if(self.update_by.clone().is_some(), |w| {
93 w.and().eq("update_by", self.update_by.clone().unwrap())
94 })
95 .r#if(self.create_time.clone().is_some(), |w| {
96 w.and().eq("create_time", self.create_time.unwrap())
97 })
98 .r#if(self.create_time.clone().is_some(), |w| {
99 w.and().eq("create_time", self.create_time.unwrap())
100 })
101 .r#if(self.update_time.clone().is_some(), |w| {
102 w.and().eq("update_time", self.update_time.unwrap())
103 });
104 rb.remove_by_wrapper::<Self>(wp).await
105 }
106
107 #[allow(dead_code)]
108 pub async fn remove(&mut self, rb: &Rbatis) -> Result<u64, Error> {
109 let wp = rb.new_wrapper().eq("role_id", self.role_id);
110 rb.remove_by_wrapper::<Self>(wp).await
111 }
112
113 #[allow(dead_code)]
114 pub async fn remove_ids(rb: &Rbatis, ids: &[i64]) -> Result<u64, Error> {
115 let wp = rb.new_wrapper().r#in("role_id", ids);
116 rb.remove_by_wrapper::<Self>(wp).await
117 }
118
119 #[allow(dead_code)]
120 pub async fn query_paged(&self, rb: &Rbatis, curr: u64, ps: u64) -> Result<Page<Self>, Error> {
121 let wp = rb
122 .new_wrapper()
123 .r#if(self.role_id.clone().is_some(), |w| {
124 w.and().eq("role_id", self.role_id.unwrap())
125 })
126 .r#if(self.name.clone().is_some(), |w| {
127 w.and().eq("name", self.name.clone().unwrap())
128 })
129 .r#if(self.role_code.clone().is_some(), |w| {
130 w.and().eq("role_code", self.role_code.clone().unwrap())
131 })
132 .r#if(self.level.clone().is_some(), |w| {
133 w.and().eq("level", self.level.unwrap())
134 })
135 .r#if(self.description.clone().is_some(), |w| {
136 w.and().eq("description", self.description.clone().unwrap())
137 })
138 .r#if(self.data_scope.clone().is_some(), |w| {
139 w.and().eq("data_scope", self.data_scope.clone().unwrap())
140 })
141 .r#if(self.create_by.clone().is_some(), |w| {
142 w.and().eq("create_by", self.create_by.clone().unwrap())
143 })
144 .r#if(self.update_by.clone().is_some(), |w| {
145 w.and().eq("update_by", self.update_by.clone().unwrap())
146 })
147 .r#if(self.create_time.clone().is_some(), |w| {
148 w.and().eq("create_time", self.create_time.unwrap())
149 })
150 .r#if(self.update_time.clone().is_some(), |w| {
151 w.and().eq("update_time", self.update_time.unwrap())
152 });
153 rb.fetch_page_by_wrapper::<Self>(wp, &PageRequest::new(curr, ps))
154 .await
155 }
156
157 #[allow(dead_code)]
158 pub async fn query_list(&self, rb: &Rbatis) -> Result<Vec<Self>, Error> {
159 let wp = rb
160 .new_wrapper()
161 .r#if(self.role_id.clone().is_some(), |w| {
162 w.and().eq("role_id", self.role_id.unwrap())
163 })
164 .r#if(self.name.clone().is_some(), |w| {
165 w.and().eq("name", self.name.clone().unwrap())
166 })
167 .r#if(self.role_code.clone().is_some(), |w| {
168 w.and().eq("role_code", self.role_code.clone().unwrap())
169 })
170 .r#if(self.level.clone().is_some(), |w| {
171 w.and().eq("level", self.level.unwrap())
172 })
173 .r#if(self.description.clone().is_some(), |w| {
174 w.and().eq("description", self.description.clone().unwrap())
175 })
176 .r#if(self.data_scope.clone().is_some(), |w| {
177 w.and().eq("data_scope", self.data_scope.clone().unwrap())
178 })
179 .r#if(self.create_by.clone().is_some(), |w| {
180 w.and().eq("create_by", self.create_by.clone().unwrap())
181 })
182 .r#if(self.update_by.clone().is_some(), |w| {
183 w.and().eq("update_by", self.update_by.clone().unwrap())
184 })
185 .r#if(self.create_time.clone().is_some(), |w| {
186 w.and().eq("create_time", self.create_time.unwrap())
187 })
188 .r#if(self.update_time.clone().is_some(), |w| {
189 w.and().eq("update_time", self.update_time.unwrap())
190 });
191 rb.fetch_list_by_wrapper::<Self>(wp).await
192 }
193
194 #[allow(dead_code)]
195 pub async fn query_rolecode(&self, rb: &Rbatis) -> Result<Vec<Self>, Error> {
196 let wp = rb
197 .new_wrapper()
198 .r#if(self.role_code.clone().is_some(), |w| {
199 w.and()
200 .like_right("role_code", self.role_code.clone().unwrap())
201 })
202 .order_by(true, &["create_time"]);
203 rb.fetch_list_by_wrapper::<Self>(wp).await
204 }
205
206 #[allow(dead_code)]
207 pub async fn query_multicode(rb: &Rbatis, codes: &Vec<String>) -> Result<Vec<Self>, Error> {
208 let wp = rb
209 .new_wrapper()
210 .r#in("role_code", codes.as_slice())
211 .order_by(true, &["create_time"]);
212 rb.fetch_list_by_wrapper::<Self>(wp).await
213 }
214
215 #[allow(dead_code)]
216 pub async fn query_all(rb: &Rbatis) -> Result<Vec<Self>, Error> {
217 let wp = rb.new_wrapper();
218 rb.fetch_list_by_wrapper::<Self>(wp).await
219 }
220}