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 MissingSecurityInput,
13 MissingBaseCpi,
14 MissingCurrentCpi,
15 MissingMeasure(MeasureProto),
16 DecimalConversion,
17 DateConversion,
18 UuidError,
19 DeserializationError,
20}
21
22impl From<ParseError> for Error {
23 fn from(_: ParseError) -> Self {
24 Error::DateConversion
25 }
26}
27
28impl From<Error> for Status {
29 fn from(value: Error) -> Self {
30 match value {
31 Error::DateConversion => Status::new(Code::Internal, "Failed to convert date"),
32 Error::DecimalConversion => Status::new(Code::Internal, "Failed to convert decimal"),
33 Error::DeserializationError => Status::new(Code::Internal, "Failed to deserialize protobuf message"),
34 Error::MissingMeasure(m) => Status::new(
35 Code::Internal,
36 format!("Missing measure {}", m.as_str_name()),
37 ),
38 _ => Status::new(Code::InvalidArgument, format!("{:?}", value)),
39 }
40 }
41}