1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#[macro_use]
mod macros;

mod datetime;
mod limit_pack;
mod more_error;

#[cfg(feature = "use_sql")]
mod sql_date;

#[cfg(feature = "use_sql")]
mod sql_op;

pub mod textsearcher;

/// common basic functions.
///
/// # Usage
///
/// ```
/// use python_comm::use_basic::*;
/// ```
///
pub mod use_basic {
    pub use {
        crate::{
            crate_version,
            datetime::{
                bj_date, bj_dates, bj_time, bj_times, bj_timestamp, bj_timestamp_millis, bjtc_df, bjtc_dn, bjtc_ds,
                bjtc_dt, bjtc_fd, bjtc_from_duration, bjtc_fs, bjtc_ft, bjtc_nd, bjtc_ns, bjtc_nt, bjtc_sd, bjtc_st,
                bjtc_td, bjtc_tf, bjtc_tn, bjtc_to_duration, bjtc_ts,
            },
            ok_or_return, some_or_return,
            textsearcher::TextSearcher,
        },
        python_comm_macros::build_time,
        rust_decimal::{prelude::FromPrimitive, Decimal},
    };
}

/// ## Usage
///
/// ```
/// use python_comm::use_m::*;
/// use std::fs::File;
///
/// #[auto_func_name]
/// #[auto_func_name]
/// fn has_error(n: i32) -> Result<(), MoreError> {
///     File::open("not exist").m(m!(__func__))?;
///
///    Ok(())
/// }
///
/// fn main() {
///    if let Err(err) = has_error(0) {
///        println!("{}", err);
///    }
/// }
/// ```
///
pub mod use_m {
    pub use {
        crate::{
            m,
            more_error::{AddMore, MoreError},
        },
        python_comm_macros::auto_func_name,
    };
}

/// ## Usage
///
/// ```
/// use python_comm::use_limit_pack::*;
///
/// #[derive(LimitPack)]
/// struct Abc {
///     a: i32,
///     b: &'static str,
/// }
///
/// assert_eq!(Abc{a:1, b:"abcdefghijk"}.limit_pack(15), "(a:1,b:abcdef~)");
/// ```
///
pub mod use_limit_pack {
    pub use {
        crate::limit_pack::{LimitObj, LimitPackAble},
        python_comm_macros::LimitPack,
    };
}

/// ## Usage
///
/// ```
/// use python_comm::use_quick_assign::*;
///
/// #[derive(Default, QuickAssign)]
/// struct Abc {
///     a: i32,
///     b: &'static str,
/// }
///
/// let _ = Abc::default().a(1).b("2");
/// ```
///
pub mod use_quick_assign {
    pub use python_comm_macros::QuickAssign;
}

#[cfg(feature = "use_sql")]
/// to use AsSqlModel
pub mod use_sql {
    pub use {
        crate::{
            sql_date::{SqlDate, SqlTime},
            sql_op::{CreateDbPool, DbPool, DbPoolArgs, SqlModel},
        },
        mysql::{
            params,
            prelude::{ConvIr, FromValue},
        },
        python_comm_macros::AsSqlModel,
    };
}