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