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_log"|table_columns:"log_id,description,log_type,method,params,request_ip,time,username,address,browser,exception_detail,create_time")]
15#[derive(Debug, Clone, Default, Deserialize, Serialize)]
16pub struct ChimesLogInfo {
17 pub log_id: Option<i64>,
18 pub description: Option<String>,
19 pub log_type: Option<String>,
20 pub method: Option<String>,
21 pub params: Option<String>,
22 pub request_ip: Option<String>,
23 pub time: Option<i64>,
24 pub username: Option<String>,
25 pub address: Option<String>,
26 pub browser: Option<String>,
27 pub exception_detail: Option<String>,
28 pub create_time: Option<rbatis::DateTimeNative>,
29}
30
31impl ChimesLogInfo {
32 #[allow(dead_code)]
33 pub async fn from_id(rb: &Rbatis, log_id: &i64) -> Result<Option<Self>, Error> {
34 let wp = rb.new_wrapper().eq("log_id", log_id);
35 rb.fetch_by_wrapper::<Option<Self>>(wp).await
36 }
37
38 #[allow(dead_code)]
39 pub async fn save(&mut self, rb: &Rbatis) -> Result<u64, Error> {
40 match rb.save(self, &[Skip::Column("log_id")]).await {
41 Ok(ds) => {
42 self.log_id = ds.last_insert_id;
43 Ok(ds.rows_affected)
44 }
45 Err(err) => Err(err),
46 }
47 }
48
49 #[allow(dead_code)]
50 pub async fn update(&self, rb: &Rbatis) -> Result<u64, Error> {
51 let wp = rb.new_wrapper().eq("log_id", self.log_id);
52 rb.update_by_wrapper(self, wp, &[Skip::Column("log_id")])
53 .await
54 }
55
56 #[allow(dead_code)]
57 pub async fn update_selective(&self, rb: &Rbatis) -> Result<u64, Error> {
58 let wp = rb.new_wrapper().eq("log_id", self.log_id);
59 rb.update_by_wrapper(self, wp, &[Skip::Value(Bson::Null)])
60 .await
61 }
62
63 #[allow(dead_code)]
64 pub async fn remove_batch(&self, rb: &Rbatis) -> Result<u64, Error> {
65 let wp = rb
66 .new_wrapper()
67 .r#if(self.log_id.clone().is_some(), |w| {
68 w.and().eq("log_id", self.log_id.unwrap())
69 })
70 .r#if(self.description.clone().is_some(), |w| {
71 w.and().eq("description", self.description.clone().unwrap())
72 })
73 .r#if(self.log_type.clone().is_some(), |w| {
74 w.and().eq("log_type", self.log_type.clone().unwrap())
75 })
76 .r#if(self.method.clone().is_some(), |w| {
77 w.and().eq("method", self.method.clone().unwrap())
78 })
79 .r#if(self.params.clone().is_some(), |w| {
80 w.and().eq("params", self.params.clone().unwrap())
81 })
82 .r#if(self.request_ip.clone().is_some(), |w| {
83 w.and().eq("request_ip", self.request_ip.clone().unwrap())
84 })
85 .r#if(self.time.clone().is_some(), |w| {
86 w.and().eq("time", self.time.unwrap())
87 })
88 .r#if(self.username.clone().is_some(), |w| {
89 w.and().eq("username", self.username.clone().unwrap())
90 })
91 .r#if(self.address.clone().is_some(), |w| {
92 w.and().eq("address", self.address.clone().unwrap())
93 })
94 .r#if(self.browser.clone().is_some(), |w| {
95 w.and().eq("browser", self.browser.clone().unwrap())
96 })
97 .r#if(self.exception_detail.clone().is_some(), |w| {
98 w.and()
99 .eq("exception_detail", self.exception_detail.clone().unwrap())
100 })
101 .r#if(self.create_time.clone().is_some(), |w| {
102 w.and().eq("create_time", self.create_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("log_id", self.log_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("log_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.log_id.clone().is_some(), |w| {
124 w.and().eq("log_id", self.log_id.unwrap())
125 })
126 .r#if(self.description.clone().is_some(), |w| {
127 w.and().eq("description", self.description.clone().unwrap())
128 })
129 .r#if(self.log_type.clone().is_some(), |w| {
130 w.and().eq("log_type", self.log_type.clone().unwrap())
131 })
132 .r#if(self.method.clone().is_some(), |w| {
133 w.and().eq("method", self.method.clone().unwrap())
134 })
135 .r#if(self.params.clone().is_some(), |w| {
136 w.and().eq("params", self.params.clone().unwrap())
137 })
138 .r#if(self.request_ip.clone().is_some(), |w| {
139 w.and().eq("request_ip", self.request_ip.clone().unwrap())
140 })
141 .r#if(self.time.clone().is_some(), |w| {
142 w.and().eq("time", self.time.unwrap())
143 })
144 .r#if(self.username.clone().is_some(), |w| {
145 w.and().eq("username", self.username.clone().unwrap())
146 })
147 .r#if(self.address.clone().is_some(), |w| {
148 w.and().eq("address", self.address.clone().unwrap())
149 })
150 .r#if(self.browser.clone().is_some(), |w| {
151 w.and().eq("browser", self.browser.clone().unwrap())
152 })
153 .r#if(self.exception_detail.clone().is_some(), |w| {
154 w.and()
155 .eq("exception_detail", self.exception_detail.clone().unwrap())
156 })
157 .r#if(self.create_time.clone().is_some(), |w| {
158 w.and().eq("create_time", self.create_time.unwrap())
159 });
160 rb.fetch_page_by_wrapper::<Self>(wp, &PageRequest::new(curr, ps))
161 .await
162 }
163
164 #[allow(dead_code)]
165 pub async fn query_list(&self, rb: &Rbatis) -> Result<Vec<Self>, Error> {
166 let wp = rb
167 .new_wrapper()
168 .r#if(self.log_id.clone().is_some(), |w| {
169 w.and().eq("log_id", self.log_id.unwrap())
170 })
171 .r#if(self.description.clone().is_some(), |w| {
172 w.and().eq("description", self.description.clone().unwrap())
173 })
174 .r#if(self.log_type.clone().is_some(), |w| {
175 w.and().eq("log_type", self.log_type.clone().unwrap())
176 })
177 .r#if(self.method.clone().is_some(), |w| {
178 w.and().eq("method", self.method.clone().unwrap())
179 })
180 .r#if(self.params.clone().is_some(), |w| {
181 w.and().eq("params", self.params.clone().unwrap())
182 })
183 .r#if(self.request_ip.clone().is_some(), |w| {
184 w.and().eq("request_ip", self.request_ip.clone().unwrap())
185 })
186 .r#if(self.time.clone().is_some(), |w| {
187 w.and().eq("time", self.time.unwrap())
188 })
189 .r#if(self.username.clone().is_some(), |w| {
190 w.and().eq("username", self.username.clone().unwrap())
191 })
192 .r#if(self.address.clone().is_some(), |w| {
193 w.and().eq("address", self.address.clone().unwrap())
194 })
195 .r#if(self.browser.clone().is_some(), |w| {
196 w.and().eq("browser", self.browser.clone().unwrap())
197 })
198 .r#if(self.exception_detail.clone().is_some(), |w| {
199 w.and()
200 .eq("exception_detail", self.exception_detail.clone().unwrap())
201 })
202 .r#if(self.create_time.clone().is_some(), |w| {
203 w.and().eq("create_time", self.create_time.unwrap())
204 });
205 rb.fetch_list_by_wrapper::<Self>(wp).await
206 }
207}