ledger_models/fintekkers/wrappers/models/utils/
errors.rs1use 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}