use std::num::ParseIntError;
use thiserror::Error;
use crate::database::DatabaseError;
#[derive(Debug, Error)]
pub enum ExportError {
#[error("IoError: {0}")]
Io(#[from] std::io::Error),
#[error("FfmpegError: {0}")]
Ffmpeg(#[from] FfmpegError),
#[error("DatabaseError: {0}")]
Database(#[from] DatabaseError),
}
#[derive(Debug, Error)]
pub enum FfmpegError {
#[error("IoError: {0}")]
Io(#[from] std::io::Error),
#[error("Invalid UTF-8: {0}")]
Utf8(#[from] std::string::FromUtf8Error),
#[error("JsonError: {0}")]
Json(#[from] serde_json::Error),
#[error("Image does not exist")]
ImageDoesNotExist,
#[error("Error running ffmpeg: {0}")]
FfmpegWrapperError(String),
#[error("Error running Ffprobe: {0}")]
FfprobeWrapperError(String),
#[error("Generic FfmpegError: {0}")]
Other(String),
#[error("Codec Error: {0}")]
Codec(#[from] CodecError),
#[error("Container Error: {0}")]
Container(#[from] ContainerError),
}
#[derive(Debug, Error)]
pub enum CodecError {
#[error("Unknown or unsupported codec: {0}")]
Unknown(String),
}
#[derive(Debug, Error)]
pub enum ContainerError {
#[error("Unknown or unsupported codec: {0}")]
Unknown(String),
}
#[derive(Error, Debug)]
pub enum LibraryError {
#[error(
"Failed to update library because no library directory set (Try 'musicmanager library set --help)"
)]
NoLibrary,
}
#[derive(Debug, Error)]
pub enum ExtractError {
#[error("IoError: {0}")]
Io(#[from] std::io::Error),
#[error("DatabaseError: {0}")]
Database(#[from] DatabaseError),
#[error("Ffmpeg Error: {0}")]
Ffmpeg(#[from] FfmpegError),
#[error("Format Error: {0}")]
Format(#[from] lunar_lib::formatter::FormatError),
#[error("InvalidContainer Error")]
InvalidContainer,
}
#[derive(Debug, Error)]
pub enum ImportError {
#[error("IoError: {0}")]
Io(#[from] std::io::Error),
#[error("Ffmpeg Error: {0}")]
Ffmpeg(#[from] FfmpegError),
#[error("Database Error: {0}")]
Database(#[from] DatabaseError),
#[error("Library Error: {0}")]
Library(#[from] LibraryError),
}
#[derive(Debug, Error)]
pub enum MetadataError {
#[error("ParseInt Error: {0}")]
ParseInt(#[from] ParseIntError),
#[error("Database Error: {0}")]
Database(#[from] DatabaseError),
#[error("Too many results: {0}")]
TooManyResults(String),
#[error("Missing album: {0}")]
MissingAlbum(String),
#[error("Key not allowed: {0}")]
KeyNotAllowed(String),
#[error("Invalid key: {0}")]
InvalidKey(String),
#[error("Invalid value for key: {0}={1}")]
InvalidValue(String, String),
#[error("Missing album: {0}")]
MissingArtist(String),
}