p2panda_rs/schema/validate/
error.rs1use thiserror::Error;
5
6use crate::operation::error::PlainValueError;
7
8#[derive(Error, Debug)]
10pub enum ValidationError {
11 #[error("missing required field: '{0}' of type {1}")]
13 MissingField(String, String),
14
15 #[error("unexpected fields found: {0}")]
17 UnexpectedFields(String),
18
19 #[error("field '{0}' does not match schema: {1}")]
21 InvalidField(String, String),
22
23 #[error("expected field name '{1}'")]
25 InvalidName(String, String),
26
27 #[error("invalid field type '{0}', expected '{1}'")]
29 InvalidType(String, String),
30
31 #[error("{0}")]
33 InvalidValue(String),
34
35 #[error("non-canonic document view id, {0}")]
37 InvalidDocumentViewId(String),
38
39 #[error("invalid 'schema_definition_v1' operation: {0}")]
41 InvalidSchemaDefinition(#[from] SchemaDefinitionError),
42
43 #[error("invalid 'schema_field_definition_v1' operation: {0}")]
45 InvalidSchemaFieldDefinition(#[from] SchemaFieldDefinitionError),
46
47 #[error(transparent)]
49 NotStringValue(#[from] PlainValueError),
50
51 #[error("invalid 'blob_v1' operation: {0}")]
53 InvalidBlob(#[from] BlobError),
54
55 #[error("invalid 'blob_piece_v1' operation: {0}")]
57 InvalidBlobPiece(#[from] BlobPieceError),
58}
59
60#[derive(Error, Debug)]
62#[allow(missing_copy_implementations)]
63pub enum SchemaFieldDefinitionError {
64 #[error("'name' field in schema field definitions is wrongly formatted")]
66 NameInvalid,
67
68 #[error("'type' field in schema field definitions is wrongly formatted")]
70 TypeInvalid,
71
72 #[error(transparent)]
74 NotStringValue(#[from] PlainValueError),
75}
76
77#[derive(Error, Debug)]
79#[allow(missing_copy_implementations)]
80pub enum SchemaDefinitionError {
81 #[error("'name' field in schema field definitions is wrongly formatted")]
83 NameInvalid,
84
85 #[error("'description' field in schema field definitions is wrongly formatted")]
87 DescriptionInvalid,
88
89 #[error("'fields' field in schema field definitions is wrongly formatted")]
91 FieldsInvalid,
92
93 #[error(transparent)]
95 NotStringValue(#[from] PlainValueError),
96}
97
98#[derive(Error, Debug)]
100#[allow(missing_copy_implementations)]
101pub enum BlobError {
102 #[error("'mime_type' field in blob is wrongly formatted")]
104 MimeTypeInvalid,
105
106 #[error("'pieces' field can not be empty")]
108 PiecesEmpty,
109}
110
111#[derive(Error, Debug)]
113#[allow(missing_copy_implementations)]
114pub enum BlobPieceError {
115 #[error("'data' field in blob is over maximum allowed length")]
117 DataInvalid,
118}