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}