use thiserror::Error;
#[derive(Error, Debug)]
pub enum ValidationError {
#[error("missing required field: '{0}' of type {1}")]
MissingField(String, String),
#[error("unexpected fields found: {0}")]
UnexpectedFields(String),
#[error("field '{0}' does not match schema: {1}")]
InvalidField(String, String),
#[error("expected field name '{1}'")]
InvalidName(String, String),
#[error("invalid field type '{0}', expected '{1}'")]
InvalidType(String, String),
#[error("{0}")]
InvalidValue(String),
#[error("non-canonic document view id, {0}")]
InvalidDocumentViewId(String),
#[error("invalid 'schema_definition_v1' operation: {0}")]
InvalidSchemaDefinition(#[from] SchemaDefinitionError),
#[error("invalid 'schema_field_definition_v1' operation: {0}")]
InvalidSchemaFieldDefinition(#[from] SchemaFieldDefinitionError),
}
#[derive(Error, Debug)]
#[allow(missing_copy_implementations)]
pub enum SchemaFieldDefinitionError {
#[error("'name' field in schema field definitions is wrongly formatted")]
NameInvalid,
#[error("'type' field in schema field definitions is wrongly formatted")]
TypeInvalid,
}
#[derive(Error, Debug)]
#[allow(missing_copy_implementations)]
pub enum SchemaDefinitionError {
#[error("'name' field in schema field definitions is wrongly formatted")]
NameInvalid,
#[error("'description' field in schema field definitions is wrongly formatted")]
DescriptionInvalid,
#[error("'fields' field in schema field definitions is wrongly formatted")]
FieldsInvalid,
}