sz_rust_orm_facade/data_scope/
error.rs1use thiserror::Error;
4
5#[derive(Debug, Clone, Error)]
7pub enum DataScopeError {
8 #[error("missing user context in request extension")]
10 MissingUserContext,
11
12 #[error("dept tree unavailable: {0}")]
14 DeptTreeUnavailable(String),
15
16 #[error("invalid data scope rule: {0}")]
18 InvalidRule(String),
19
20 #[error("unsafe custom condition: {0}")]
22 UnsafeCustomCondition(String),
23
24 #[error("custom generator not found: {0}")]
26 GeneratorNotFound(String),
27}
28
29impl DataScopeError {
30 pub fn error_code(&self) -> &'static str {
32 match self {
33 Self::MissingUserContext => "DATA_SCOPE_NO_USER_CONTEXT",
34 Self::DeptTreeUnavailable(_) => "DATA_SCOPE_DEPT_TREE_UNAVAILABLE",
35 Self::InvalidRule(_) => "DATA_SCOPE_INVALID_RULE",
36 Self::UnsafeCustomCondition(_) => "DATA_SCOPE_UNSAFE_CUSTOM",
37 Self::GeneratorNotFound(_) => "DATA_SCOPE_GENERATOR_NOT_FOUND",
38 }
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn test_error_codes() {
48 assert_eq!(
49 DataScopeError::MissingUserContext.error_code(),
50 "DATA_SCOPE_NO_USER_CONTEXT"
51 );
52 assert_eq!(
53 DataScopeError::DeptTreeUnavailable("x".into()).error_code(),
54 "DATA_SCOPE_DEPT_TREE_UNAVAILABLE"
55 );
56 assert_eq!(
57 DataScopeError::InvalidRule("x".into()).error_code(),
58 "DATA_SCOPE_INVALID_RULE"
59 );
60 assert_eq!(
61 DataScopeError::UnsafeCustomCondition("x".into()).error_code(),
62 "DATA_SCOPE_UNSAFE_CUSTOM"
63 );
64 assert_eq!(
65 DataScopeError::GeneratorNotFound("x".into()).error_code(),
66 "DATA_SCOPE_GENERATOR_NOT_FOUND"
67 );
68 }
69}