daml_json/
error.rs

1use crate::util::{NotSingleError, RequiredError};
2use thiserror::Error;
3
4/// Daml JSON Result.
5pub type DamlJsonResult<T> = Result<T, DamlJsonError>;
6
7/// Daml JSON Error.
8#[derive(Error, Debug)]
9pub enum DamlJsonError {
10    #[error("DamlJsonError: codec error: {0}")]
11    CodecError(#[from] DamlJsonCodecError),
12    #[error("DamlJsonError: GRPC error: {0}")]
13    ReqwestError(#[from] reqwest::Error),
14    #[error(transparent)]
15    MissingRequiredField(#[from] RequiredError),
16    #[error("DamlJsonError: error response: {0}, {1}")]
17    ErrorResponse(u16, String),
18    #[error("DamlJsonError: url parse error: {0}")]
19    UrlParseError(#[from] url::ParseError),
20    #[error("DamlJsonError: unhandled http response code: {0}")]
21    UnhandledHttpResponse(String),
22    #[error("DamlJsonError: unexpected GRPC event")]
23    UnexpectedGrpcEvent,
24
25    // TODO move to bridge crate
26    #[error("DamlJsonError: Transaction tree did not contain an exercised event")]
27    MissingExercisedEvent,
28}
29
30/// Daml JSON Request/Response Converter Result.
31pub type DamlJsonReqConResult<T> = Result<T, DamlJsonReqConError>;
32
33/// Daml JSON Request/Response Converter Error.
34#[derive(Error, Debug)]
35pub enum DamlJsonReqConError {
36    #[error("DamlJsonError: codec error: {0}")]
37    CodecError(#[from] DamlJsonCodecError),
38    #[error("DamlJsonError: GRPC error: {0}")]
39    DamlGrpcError(#[from] daml_grpc::data::DamlError),
40    #[error("DamlJsonError: invalid template id format: {0}")]
41    TemplateIdFormatError(String),
42    #[error("DamlJsonError: unknown template id: {0}")]
43    UnknownTemplateId(String),
44    #[error("DamlJsonError: template {0} exists in multiple packages: {1:#?}")]
45    MultipleMatchingTemplates(String, Vec<String>),
46    #[error("DamlJsonError: Expected a template for: {0}")]
47    ExpectedTemplateError(String),
48    #[error("DamlJsonError: template does not have a contract key: {0}")]
49    TemplateNoKeyError(String),
50    #[error("DamlJsonError: expected exactly 1 GRPC event")]
51    UnexpectedGrpcEvent,
52    #[error("DamlJsonError: Transaction tree did not contain an exercised event")]
53    MissingExercisedEvent,
54}
55
56/// Daml JSON Codec Result.
57pub type DamlJsonCodecResult<T> = Result<T, DamlJsonCodecError>;
58
59/// Daml JSON Codec Error.
60#[derive(Error, Debug)]
61pub enum DamlJsonCodecError {
62    #[error("failed to process Daml LF: {0}")]
63    DamlLfError(#[from] daml_lf::DamlLfError),
64    #[error("failed to parse numeric from string: {0}")]
65    NumericParseError(#[from] bigdecimal::ParseBigDecimalError),
66    #[error("failed to parse int64 from string: {0}")]
67    Int64ParseError(#[from] std::num::ParseIntError),
68    #[error("failed to parse date or datetime from string: {0}")]
69    DateParseError(#[from] chrono::format::ParseError),
70    #[error(transparent)]
71    MissingRequiredField(#[from] RequiredError),
72    #[error(transparent)]
73    UnexpectedListEntries(#[from] NotSingleError),
74    #[error("expected JSON type {0} but found type {1}")]
75    UnexpectedJsonType(String, String),
76    #[error("record object did not contain expected field {0}")]
77    MissingJsonRecordObjectField(String),
78    #[error("record array did not contain expected field {1} at index {0}")]
79    MissingJsonRecordArrayField(usize, String),
80    #[error("unknown variant constructor {0}")]
81    UnknownVariantConstructor(String),
82    #[error("unknown enum constructor {0}")]
83    UnknownEnumConstructor(String),
84    #[error("expected empty record for Unit type")]
85    UnexpectedUnitData,
86    #[error("expected an array with either zero or one entry")]
87    UnexpectedOptionalArrayLength,
88    #[error("duplicate genmap keys")]
89    DuplicateGenMapKeys,
90    #[error("expected exactly two types for genmap")]
91    UnexpectedGenMapTypes,
92    #[error("unsupported Daml type {0}")]
93    UnsupportedDamlType(String),
94    #[error("Data item {0} not found in archive")]
95    DataNotFound(String),
96}
97
98/// Daml JSON Schema Codec Result.
99pub type DamlJsonSchemaCodecResult<T> = Result<T, DamlJsonSchemaCodecError>;
100
101/// Daml JSON Schema Codec Error.
102#[derive(Error, Debug)]
103pub enum DamlJsonSchemaCodecError {
104    #[error("failed to process Daml LF: {0}")]
105    DamlLfError(#[from] daml_lf::DamlLfError),
106    #[error(transparent)]
107    MissingRequiredField(#[from] RequiredError),
108    #[error(transparent)]
109    UnexpectedListEntries(#[from] NotSingleError),
110    #[error(transparent)]
111    JsonError(#[from] serde_json::Error),
112    #[error("Data item {0} not found in archive")]
113    DataNotFound(String),
114    #[error("unsupported Daml type {0} in JSON Schema")]
115    UnsupportedDamlType(String),
116    #[error("Daml type {0} in is not serializable")]
117    NotSerializableDamlType(String),
118    #[error("Daml type variable '{0}' not found in type arguments")]
119    TypeVarNotFoundInArgs(String),
120    #[error("Daml type variable '{0}' not found in type parameters")]
121    TypeVarNotFoundInParams(String),
122}