paft_domain/
error.rs

1//! Domain-specific error types for `paft-domain`.
2
3use thiserror::Error;
4
5/// Errors produced by domain models.
6#[derive(Debug, Error, Clone, PartialEq, Eq)]
7#[non_exhaustive]
8pub enum DomainError {
9    /// Invalid period format provided for parsing.
10    #[error(
11        "Invalid period format: '{format}' - expected formats like '2023Q4', '2023', 'FY2023', '2023-12-31', or '12/31/2023'"
12    )]
13    InvalidPeriodFormat {
14        /// The invalid format string that could not be parsed.
15        format: String,
16    },
17
18    /// Invalid exchange token encountered while parsing.
19    #[error("Invalid exchange value: '{value}'")]
20    InvalidExchangeValue {
21        /// The invalid exchange token.
22        value: String,
23    },
24
25    /// Invalid ISIN encountered while parsing or validating.
26    #[error("Invalid ISIN: '{value}'")]
27    InvalidIsin {
28        /// The original invalid ISIN input.
29        value: String,
30    },
31
32    /// Invalid FIGI encountered while parsing or validating.
33    #[error("Invalid FIGI: '{value}'")]
34    InvalidFigi {
35        /// The original invalid FIGI input.
36        value: String,
37    },
38
39    /// Invalid symbol encountered while parsing or validating.
40    #[error("Invalid symbol: '{value}'")]
41    InvalidSymbol {
42        /// The original invalid symbol input.
43        value: String,
44    },
45}