ledger_models/fintekkers/wrappers/models/utils/
errors.rs

1use crate::fintekkers::models::position::MeasureProto;
2use tonic::{Code, Status};
3
4#[derive(Debug)]
5pub enum Error {
6    MissingPositionInput,
7    MissingPriceInput,
8    MissingFaceValue,
9    MissingCouponRate,
10    MissingMaturityDate,
11    MissingSecurityInput,
12    MissingMeasure(MeasureProto),
13    DecimalConversion,
14    DateConversion,
15    UuidError,
16    DeserializationError,
17}
18
19impl From<Error> for Status {
20    fn from(value: Error) -> Self {
21        match value {
22            Error::DateConversion => Status::new(Code::Internal, "Failed to convert date"),
23            Error::DecimalConversion => Status::new(Code::Internal, "Failed to convert decimal"),
24            Error::DeserializationError => Status::new(Code::Internal, "Failed to deserialize protobuf message"),
25            Error::MissingMeasure(m) => Status::new(
26                Code::Internal,
27                format!("Missing measure {}", m.as_str_name()),
28            ),
29            _ => Status::new(Code::InvalidArgument, format!("{:?}", value)),
30        }
31    }
32}