dzgt_utils/
lib.rs

1use cyfs_base::{BuckyError, BuckyErrorCode};
2use sfo_sql::ErrorMap;
3
4#[cfg(feature = "stack")]
5pub mod shared_object_stack_ex;
6
7pub mod json_object;
8pub mod error_util;
9pub mod http_util;
10
11
12#[derive(Clone)]
13pub struct SqlErrorToBuckyError;
14
15impl ErrorMap for SqlErrorToBuckyError {
16    type OutError = BuckyError;
17    type InError = sfo_sql::SqlError;
18
19    fn map(e: sfo_sql::SqlError, msg: &str) -> BuckyError {
20        match e {
21            sfo_sql::SqlError::RowNotFound => {
22                // let msg = format!("not found, {}", msg);
23                BuckyError::new(BuckyErrorCode::NotFound, "not found")
24            },
25            sfo_sql::SqlError::Database(ref err) => {
26                let msg = format!("sql error: {:?} info:{}", e, msg);
27                if cfg!(test) {
28                    println!("{}", msg);
29                } else {
30                    log::error!("SqlErrorToBuckyError:{}", msg);
31                }
32
33                if let Some(code) = err.code() {
34                    if code.to_string().as_str() == "23000" {
35                        return BuckyError::new(BuckyErrorCode::AlreadyExists, "already exists");
36                    }
37                }
38                BuckyError::new(BuckyErrorCode::SqliteError, msg)
39            }
40            _ => {
41                let msg = format!("sql error: {:?} info:{}", e, msg);
42                if cfg!(test) {
43                    println!("{}", msg);
44                } else {
45                    log::error!("SqlErrorToBuckyError:{}", msg);
46                }
47                BuckyError::new(BuckyErrorCode::SqliteError, "")
48            }
49        }
50    }
51}