use thiserror::Error;

#[derive(Clone, Debug, PartialEq, Eq, Error)]
pub enum MappingError {
    #[error("invalid JSONPath: {path}")]
    InvalidJsonPath { path: String },
    #[error("unsupported source root {root} for {context} mapping")]
    UnsupportedSourceRoot { root: String, context: &'static str },
    #[error("unsupported target root {root} for {context} mapping")]
    UnsupportedTargetRoot { root: String, context: &'static str },
    #[error("mixed mapping target contexts are not allowed")]
    MixedTargetContext,
    #[error("missing required value at {path}")]
    MissingRequiredValue { path: String },
    #[error("transform {transform} cannot be applied to {actual}")]
    InvalidTransformInput {
        transform: &'static str,
        actual: &'static str,
    },
}
