tap_ivms101/
error.rs

1//! Error types for IVMS 101 validation and processing
2
3use thiserror::Error;
4
5/// Result type alias for IVMS operations
6pub type Result<T> = std::result::Result<T, Error>;
7
8/// IVMS 101 error types
9#[derive(Debug, Error)]
10pub enum Error {
11    /// Name validation error
12    #[error("Invalid name: {0}")]
13    InvalidName(String),
14
15    /// Address validation error
16    #[error("Invalid address: {0}")]
17    InvalidAddress(String),
18
19    /// Identifier validation error
20    #[error("Invalid identifier: {0}")]
21    InvalidIdentifier(String),
22
23    /// Date validation error
24    #[error("Invalid date: {0}")]
25    InvalidDate(String),
26
27    /// National identification validation error
28    #[error("Invalid national identification: {0}")]
29    InvalidNationalId(String),
30
31    /// Customer identification validation error
32    #[error("Invalid customer identification: {0}")]
33    InvalidCustomerId(String),
34
35    /// Registration authority validation error
36    #[error("Invalid registration authority: {0}")]
37    InvalidRegistrationAuthority(String),
38
39    /// Country code validation error
40    #[error("Invalid country code: {0}")]
41    InvalidCountryCode(String),
42
43    /// Currency code validation error
44    #[error("Invalid currency code: {0}")]
45    InvalidCurrencyCode(String),
46
47    /// LEI validation error
48    #[error("Invalid LEI: {0}")]
49    InvalidLei(String),
50
51    /// BIC validation error
52    #[error("Invalid BIC: {0}")]
53    InvalidBic(String),
54
55    /// Missing required field
56    #[error("Missing required field: {0}")]
57    MissingRequiredField(String),
58
59    /// Invalid enum value
60    #[error("Invalid {field} value: {value}")]
61    InvalidEnumValue { field: String, value: String },
62
63    /// Validation error with multiple issues
64    #[error("Validation failed: {issues:?}")]
65    ValidationFailed { issues: Vec<String> },
66
67    /// Serialization error
68    #[error("Serialization error: {0}")]
69    Serialization(#[from] serde_json::Error),
70}