1use std::fmt::{self, Display, Formatter};
4
5use thiserror::Error;
6
7#[derive(Clone, Copy, Debug, Eq, PartialEq)]
9pub enum TypeParseError {
10 InvalidDate,
12 InvalidDecimal,
14 InvalidDuration,
16 InvalidIntBig,
18 InvalidTimestamp,
20}
21
22impl Display for TypeParseError {
23 fn fmt(&self, formatter: &mut Formatter<'_>) -> fmt::Result {
24 formatter.write_str(match self {
25 Self::InvalidDate => "invalid date",
26 Self::InvalidDecimal => "invalid decimal",
27 Self::InvalidDuration => "invalid duration",
28 Self::InvalidIntBig => "invalid signed big integer",
29 Self::InvalidTimestamp => "invalid timestamp",
30 })
31 }
32}
33
34#[derive(Clone, Debug, Eq, Error, PartialEq)]
36pub enum SchemaContractError {
37 #[error("schema contract identity is empty")]
39 EmptyIdentity,
40
41 #[error("schema contract identity exceeds its byte limit")]
43 IdentityTooLong {
44 len: usize,
46 max: usize,
48 },
49
50 #[error("schema source key contains a non-canonical byte")]
52 InvalidSourceKey,
53
54 #[error("schema contract collection exceeds its item limit")]
56 TooManyItems {
57 kind: &'static str,
59 len: usize,
61 max: usize,
63 },
64
65 #[error("schema contract contains a duplicate source key")]
67 DuplicateSourceKey,
68
69 #[error("schema contract defines and removes the same source key")]
71 DefinitionRemovalConflict,
72
73 #[error("schema contract contains a duplicate current name")]
75 DuplicateName,
76
77 #[error("schema contract contains an unresolved local reference")]
79 InvalidLocalReference,
80
81 #[error("schema field type exceeds its inline depth bound")]
83 FieldTypeDepthExceeded,
84
85 #[error("schema contract contains an invalid enum literal reference")]
87 InvalidEnumLiteral,
88
89 #[error("schema relation source and target field types differ")]
91 RelationTypeMismatch,
92
93 #[error("schema contract removes a referenced definition")]
95 RemovedReference,
96
97 #[error("schema proposal entity routing is incomplete")]
99 MissingEntityStoreAssignment,
100
101 #[error("schema field policy is invalid")]
103 InvalidFieldPolicy,
104
105 #[error("schema field type is invalid")]
107 InvalidFieldType,
108
109 #[error("schema field default does not match its exact field type")]
111 LiteralTypeMismatch,
112
113 #[error("schema contract contains an invalid ordered reference list")]
115 InvalidReferenceList,
116
117 #[error("schema proposal literal is malformed")]
119 InvalidLiteral,
120
121 #[error("schema source check expression is malformed")]
123 InvalidExpression,
124
125 #[error("schema targeted durable-rule operation is invalid")]
127 InvalidRuleOperation,
128
129 #[error("schema targeted durable-rule target is invalid")]
131 InvalidRuleTarget,
132
133 #[error("schema proposal contract version is unsupported")]
135 UnsupportedVersion {
136 found: u16,
138 supported: u16,
140 },
141
142 #[error("schema proposal requires an unsupported capability")]
144 UnsupportedCapability,
145
146 #[error("schema proposal is not canonically ordered")]
148 NonCanonical,
149
150 #[error("encoded schema contract exceeds its byte limit")]
152 EncodedTooLarge {
153 len: usize,
155 max: usize,
157 },
158
159 #[error("schema contract encoding failed")]
161 Encode,
162
163 #[error("schema contract decoding failed")]
165 Decode,
166}