use thiserror::Error;
#[derive(Error, Debug)]
pub enum ConversionError {
#[error("Unsupported conversion input mode: '{mode}'. Valid modes are: 'shacl', 'shex', 'dctap'")]
UnsupportedConversionMode { mode: String },
#[error("Unsupported conversion result mode: '{mode}'. Valid modes are: 'sparql', 'shex', 'uml', 'html', 'shacl'")]
UnsupportedResultConversionMode { mode: String },
#[error(
"Unsupported conversion input format: '{format}'. Valid formats are: 'csv', 'xlsx', 'shexc', 'shexj', 'turtle'"
)]
UnsupportedConversionFormat { format: String },
#[error(
"Unsupported result conversion format: '{format}'. Valid formats are: 'default', 'internal', 'json', 'shexc', 'shexj', 'turtle', 'uml', 'html', 'svg', 'png'"
)]
UnsupportedResultConversionFormat { format: String },
#[error("Cannot convert format '{format}' to ShEx. Supported formats for ShEx: 'shexc', 'shexj', 'turtle'")]
UnsupportedConversionToShEx { format: String },
#[error("Cannot convert format '{format}' to SHACL. Supported formats for SHACL: 'turtle'")]
UnsupportedConversionToShacl { format: String },
#[error("Cannot convert format '{format}' to DC-TAP. Supported formats for DC-TAP: 'csv', 'xlsx'")]
UnsupportedConversionToDCTap { format: String },
#[error("Cannot use output format '{format}' for ShEx conversion. Supported formats: 'shexc', 'shexj', 'turtle'")]
UnsupportedResultConversionFormatToShEx { format: String },
#[error("Cannot use output format '{format}' for SHACL conversion. Supported formats: 'default', 'turtle'")]
UnsupportedResultConversionFormatToShacl { format: String },
#[error("Unsupported conversion from '{input_mode}' to '{output_mode}'.")]
UnsupportedConversion { input_mode: String, output_mode: String },
#[error("Data source specification error: {message}")]
DataSourceSpec { message: String },
#[error("Cannot convert format '{format}' to RDF. Supported formats for RDF: 'turtle'")]
UnsupportedConversionToRDFFormat { format: String },
#[error(
"Conversion error from '{input_mode}' to '{output_mode}' with input format '{input_format}' and output format '{output_format}': {error}"
)]
FailedConversion {
input_mode: String,
output_mode: String,
input_format: String,
output_format: String,
error: String,
},
}