Skip to main content

uptrakit_web_api_types/
validation.rs

1use std::fmt;
2
3/// Error returned when request field validation fails.
4#[derive(Debug, Clone, PartialEq, Eq)]
5pub struct ValidationError {
6    pub field: &'static str,
7    pub message: String,
8}
9
10impl fmt::Display for ValidationError {
11    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
12        write!(f, "{}: {}", self.field, self.message)
13    }
14}
15
16impl std::error::Error for ValidationError {}
17
18/// Trait for validating request types before processing.
19pub trait Validate {
20    fn validate(&self) -> Result<(), ValidationError>;
21}
22
23#[cfg(test)]
24mod tests {
25    use super::*;
26
27    #[test]
28    fn validation_error_display() {
29        let err = ValidationError {
30            field: "email",
31            message: "must contain @".to_string(),
32        };
33        assert_eq!(err.to_string(), "email: must contain @");
34    }
35}