chimes_rust/entity/
chimes_user_role_info.rs1use rbatis::crud::{Skip, CRUD};
2use rbatis::crud_table;
3use rbatis::error::Error;
4use rbatis::rbatis::Rbatis;
5use serde_derive::{Deserialize, Serialize};
6use std::fmt::Debug;
10
11#[crud_table(table_name:"chimes_users_roles"|table_columns:"user_id,role_id")]
12#[derive(Debug, Clone, Default, Deserialize, Serialize)]
13pub struct ChimesUserRoleInfo {
14 pub user_id: Option<i64>,
15 pub role_id: Option<i64>,
16}
17
18impl ChimesUserRoleInfo {
19 #[allow(dead_code)]
20 pub async fn from_id(rb: &Rbatis, role_id: &i64, user_id: &i64) -> Result<Option<Self>, Error> {
21 let wp = rb
22 .new_wrapper()
23 .eq("role_id", role_id)
24 .and()
25 .eq("user_id", user_id);
26 rb.fetch_by_wrapper::<Option<Self>>(wp).await
27 }
28
29 #[allow(dead_code)]
30 pub async fn save(&mut self, rb: &Rbatis) -> Result<u64, Error> {
31 match rb.save(self, &[]).await {
32 Ok(ds) => Ok(ds.rows_affected),
33 Err(err) => Err(err),
34 }
35 }
36
37 #[allow(dead_code)]
38 pub async fn update(&self, rb: &Rbatis) -> Result<u64, Error> {
39 let wp = rb
40 .new_wrapper()
41 .eq("role_id", self.role_id)
42 .and()
43 .eq("user_id", self.user_id);
44 rb.update_by_wrapper(
45 self,
46 wp,
47 &[Skip::Column("role_id"), Skip::Column("user_id")],
48 )
49 .await
50 }
51
52 #[allow(dead_code)]
53 pub async fn remove_role_ids(rb: &Rbatis, ids: &[i64]) -> Result<u64, Error> {
54 let wp = rb.new_wrapper().r#in("role_id", ids);
55 rb.remove_by_wrapper::<Self>(wp).await
56 }
57
58 #[allow(dead_code)]
59 pub async fn remove_batch(&self, rb: &Rbatis) -> Result<u64, Error> {
60 assert!(self.role_id.is_some() || self.user_id.is_some());
61 let wp = rb
62 .new_wrapper()
63 .r#if(self.user_id.clone().is_some(), |w| {
64 w.and().eq("user_id", self.user_id.unwrap())
65 })
66 .r#if(self.role_id.clone().is_some(), |w| {
67 w.and().eq("role_id", self.role_id.unwrap())
68 });
69 rb.remove_by_wrapper::<Self>(wp).await
70 }
71
72 #[allow(dead_code)]
73 pub async fn remove(&mut self, rb: &Rbatis) -> Result<u64, Error> {
74 let wp = rb
75 .new_wrapper()
76 .eq("role_id", self.role_id)
77 .and()
78 .eq("user_id", self.user_id);
79 rb.remove_by_wrapper::<Self>(wp).await
80 }
81
82 #[allow(dead_code)]
83 pub async fn query_list(&self, rb: &Rbatis) -> Result<Vec<Self>, Error> {
84 let wp = rb
85 .new_wrapper()
86 .r#if(self.user_id.clone().is_some(), |w| {
87 w.and().eq("user_id", self.user_id.unwrap())
88 })
89 .r#if(self.role_id.clone().is_some(), |w| {
90 w.and().eq("role_id", self.role_id.unwrap())
91 });
92 rb.fetch_list_by_wrapper::<Self>(wp).await
93 }
94
95 #[allow(dead_code)]
96 pub async fn query_all(rb: &Rbatis) -> Result<Vec<Self>, Error> {
97 let wp = rb.new_wrapper();
98 rb.fetch_list_by_wrapper::<Self>(wp).await
99 }
100}