mydb_sqlx/
base_service.rs1use crate::BaseEntity;
2use crate::BaseMapper;
3use serde::Serialize;
4use sqlx::mysql::MySqlRow;
5use sqlx::{ FromRow, Error };
6use sqlx_core::mysql::MySqlQueryResult;
7use core::fmt::Debug;
8use sqlx::MySqlPool;
9use crate::PageData;
10
11pub fn service<T> (db: MySqlPool) -> BaseService<T>
12where
13T: for<'a> FromRow<'a, MySqlRow> + Send + Unpin + Debug + Serialize + BaseEntity
14{
15 BaseService {
16 mapper: BaseMapper::<T>::new(db)
17 }
18}
19
20#[derive(Debug, Clone)]
21pub struct BaseService<T: BaseEntity> {
22 pub mapper: BaseMapper<T>,
23}
24
25impl<T: for<'a> FromRow<'a, MySqlRow> + Send + Unpin + Debug + Serialize + BaseEntity>
26BaseService<T>
27{
28
29 pub async fn get_by_id(self, id: u64) -> Result<Option<T>, Error>
30 {
31 match self.mapper.select_by_id(id).await {
32 Ok(res) => Ok(res),
33 Err(err) => Err(err),
34 }
35 }
36
37 pub async fn get_one(self, wrapper: String) -> Result<Option<T>, Error> {
38 match self.mapper.select_one(wrapper).await {
39 Ok(res) => Ok(res),
40 Err(err) => Err(err),
41 }
42 }
43
44 pub async fn all(self) -> Result<Vec<T>, Error> {
45 match self.mapper.select_list(format!("")).await {
46 Ok(res) => Ok(res),
47 Err(err) => Err(err),
48 }
49 }
50
51 pub async fn list(self, wrapper: String) -> Result<Vec<T>, Error> {
52 match self.mapper.select_list(wrapper).await {
53 Ok(res) => Ok(res),
54 Err(err) => Err(err),
55 }
56 }
57
58 pub async fn list_by_ids(self, ids: Vec<u64>) -> Result<Vec<T>, Error> {
59 match self.mapper.select_batch_ids(ids).await {
60 Ok(res) => Ok(res),
61 Err(err) => Err(err),
62 }
63 }
64
65 pub async fn list_by_map(self, wrapper: String) -> Result<Option<T>, Error> {
66 match self.mapper.select_by_map(wrapper).await {
67 Ok(res) => Ok(res),
68 Err(err) => Err(err),
69 }
70 }
71
72 pub async fn page(self, page: String, wrapper: String) -> Result<PageData<T>, Error> {
73 match self.mapper.select_page(page, wrapper).await {
74 Ok(res) => Ok(res),
75 Err(err) => Err(err),
76 }
77 }
78
79 pub async fn count(self, wrapper: String) -> Result<i64, Error> {
80 match self.mapper.total(wrapper).await {
81 Ok(res) => Ok(res),
82 Err(err) => Err(err),
83 }
84 }
85
86 pub async fn save(self, entity: T) -> Result<MySqlQueryResult, Error> {
87 match self.mapper.insert(entity).await {
88 Ok(res) => Ok(res),
89 Err(err) => Err(err),
90 }
91 }
92
93 pub async fn save_batch(self, entity_vec: Vec<T>) -> Result<MySqlQueryResult, Error> {
94 match self.mapper.insert_batch_some_column(entity_vec).await {
95 Ok(res) => Ok(res),
96 Err(err) => Err(err),
97 }
98 }
99
100 pub async fn update(self, entity: T, wrapper: String) -> Result<MySqlQueryResult, Error> {
101 match self.mapper.update(entity, wrapper).await {
102 Ok(res) => Ok(res),
103 Err(err) => Err(err),
104 }
105 }
106
107 pub async fn update_by_id(self, entity: T) -> Result<MySqlQueryResult, Error> {
108 match self.mapper.update_by_id(entity).await {
109 Ok(res) => Ok(res),
110 Err(err) => Err(err),
111 }
112 }
113
114 pub async fn remove(self, wrapper: String) -> Result<MySqlQueryResult, Error> {
115 match self.mapper.delete(wrapper).await {
116 Ok(res) => Ok(res),
117 Err(err) => Err(err),
118 }
119 }
120
121 pub async fn remove_by_id(self, id: u64) -> Result<MySqlQueryResult, Error> {
122 match self.mapper.delete_by_id(id).await {
123 Ok(res) => Ok(res),
124 Err(err) => Err(err),
125 }
126 }
127
128 pub async fn remove_by_ids(self, ids: Vec<u64>) -> Result<MySqlQueryResult, Error> {
129 match self.mapper.delete_batch_ids(ids).await {
130 Ok(res) => Ok(res),
131 Err(err) => Err(err),
132 }
133 }
134
135}