use thiserror::Error;
#[derive(Error, Debug)]
pub enum ComparisonError {
#[error("Unsupported comparison mode: '{mode}'. Valid modes are: 'shacl', 'shex', 'dctap', 'service'")]
UnsupportedComparisonMode { mode: String },
#[error(
"Unsupported input format for comparison: '{format}'. Valid formats are: 'shexc', 'shexj', 'turtle', 'rdfxml', 'ntriples'"
)]
UnsupportedComparisonFormat { format: String },
#[error("Unsupported result format for comparison: '{format}'. Valid formats are: 'internal', 'json'")]
UnsupportedResultComparisonFormat { format: String },
#[error("Cannot convert format '{format}' to SHACL. SHACL only supports RDF formats (turtle, ntriples, rdfxml)")]
UnsupportedConversionToShacl { format: String },
#[error(
"Cannot convert format '{format}' to DC-TAP. DC-TAP uses tabular formats (CSV, Excel), not RDF or ShEx formats"
)]
UnsupportedConversionToDCTap { format: String },
#[error("Data source specification error: {message}")]
DataSourceSpec { message: String },
#[error(
"Error during schema comparison: {error}. Schema 1 format: '{format1}', mode: '{mode1}'. Schema 2 format: '{format2}', mode: '{mode2}'"
)]
FailedComparison {
error: String,
format1: String,
format2: String,
mode1: String,
mode2: String,
},
#[error("Error converting ShEx to CoShaMo for source '{source_name}': {error}")]
CoShaMoFromShExError { error: String, source_name: String },
#[error("Error getting the current directory: {error}")]
CurrentDirError { error: String },
}