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