Skip to main content

db_cores/common/
enums.rs

1use db_proc_macro::SqlxEnum;
2use serde::{Deserialize, Serialize};
3use std::str::FromStr;
4use strum_macros:: Display;
5
6
7
8
9// 1.SqlxEnum是 sqlx表中要用的 枚举,都自定义的反序化
10#[derive(Debug, SqlxEnum, Clone, PartialEq, Eq, Display, Serialize)]
11#[serde(rename_all = "lowercase")]
12pub enum RoleKind {
13    Std,
14    System,
15    Admin,
16    Guest,
17}
18#[allow(clippy::derivable_impls)]
19impl Default for RoleKind {
20    fn default() -> Self {
21        RoleKind::Std
22    }
23}
24
25#[derive(Debug, SqlxEnum, Clone, PartialEq, Eq, Display, Serialize)]
26#[serde(rename_all = "lowercase")]
27pub enum OwnerKind {
28    Private,
29    System,
30    Group,
31    Pubilc,
32}
33
34#[derive(Debug, SqlxEnum, Clone, PartialEq, Eq, Display, Serialize)]
35#[serde(rename_all = "lowercase")]
36pub enum APICategory {
37    Ai,
38    Storage,     // 对象存储(如 AWS S3, 阿里云 OSS)
39    Translation, // 翻译服务
40    Captcha,     // 验证码服务(图形/行为验证)
41    Auth,        // 身份认证(OAuth, JWT)
42    Biometric,   // 生物识别(人脸、指纹)
43}
44
45#[derive(Debug, SqlxEnum, Clone, PartialEq, Eq, Display, Serialize)]
46#[serde(rename_all = "lowercase")]
47pub enum FileRouterScope {
48    #[strum(serialize = "/public/file_temp")]
49    Temp,
50    #[strum(serialize = "/public/file_public")]
51    Public,
52    #[strum(serialize = "/api/file_get")]
53    Api,
54}
55
56#[derive(Debug, SqlxEnum, Clone, PartialEq, Eq, Display, Serialize)]
57#[serde(rename_all = "lowercase")]
58pub enum PermtKind {
59    View,
60    Edit,
61    Super,
62}
63
64#[derive(Debug, SqlxEnum, PartialEq, Eq, Serialize, Clone, Display)]
65#[serde(rename_all = "lowercase")]
66pub enum AccessBucket {
67    Public,
68    Group,
69    Temp,
70    Private,
71    Sign,
72    Avatar,
73    System,
74    Null,
75}
76
77#[derive(Debug, SqlxEnum, Clone, PartialEq, Eq, Display, Serialize)]
78pub enum DatabaseKind {
79    Sqlite,
80    MySql,
81    Postgres,
82    Access,
83    Api,
84    SqlServer,
85}
86
87
88// 2. 非表格数据的枚举
89// 虽然属性前缀写的是 #[strum(...)],
90// 但实际处理它的是 strum_macros crate 中的宏逻辑。
91#[derive(Debug, PartialEq, Eq, Clone, Serialize, Deserialize, Display)]
92pub enum Operator {
93    #[serde(rename = "=")]
94    #[strum(serialize = "=")]
95    Eq,
96
97    #[serde(rename = ">")]
98    #[strum(serialize = ">")]
99    Gt,
100
101    #[serde(rename = ">=")]
102    #[strum(serialize = ">=")]
103    Gte,
104
105    #[serde(rename = "<")]
106    #[strum(serialize = "<")]
107    Lt,
108
109    #[serde(rename = "<=")]
110    #[strum(serialize = "<=")]
111    Lte,
112
113    #[serde(rename = "!=")]
114    #[strum(serialize = "!=")]
115    Ne,
116
117    #[serde(rename = "LIKE")]
118    #[strum(serialize = "LIKE")]
119    Like,
120
121    #[serde(rename = "LIKE_ANY")]
122    #[strum(serialize = "LIKE_ANY")]
123    LikeAny,
124
125    #[serde(rename = "BETWEEN")]
126    #[strum(serialize = "BETWEEN")]
127    Between,
128
129    #[serde(rename = "NOT_BETWEEN")]
130    #[strum(serialize = "NOT_BETWEEN")]
131    NotBetween,
132
133    #[serde(rename = "IN_QUERY")]
134    #[strum(serialize = "IN_QUERY")]
135    InQuery,
136
137    #[serde(rename = "NOT_IN_QUERY")]
138    #[strum(serialize = "NOT_IN_QUERY")]
139    NotInQuery,
140
141    #[serde(rename = "NOT_NULL")]
142    #[strum(serialize = "NOT_NULL")]
143    NotNull,
144
145    #[serde(rename = "IS_NULL")]
146    #[strum(serialize = "IS_NULL")]
147    IsNull,
148
149    #[serde(rename = "IN")]
150    #[strum(serialize = "IN")]
151    In,
152
153    #[serde(rename = "NOT_IN")]
154    #[strum(serialize = "NOT_IN")]
155    NotIn,
156
157    #[serde(rename = "REGEXP")]
158    #[strum(serialize = "REGEXP")]
159    Regexp,
160}
161
162#[derive(Debug, PartialEq, Eq, Clone, Serialize,Deserialize)]
163pub enum Logical {
164    #[serde(rename = "AND")]
165    And,
166    #[serde(rename = "OR")]
167    Or,
168}
169
170
171
172
173#[test]
174fn dev(){
175    println!("{}",AccessBucket::Private.to_lower())
176}