selene-core 0.3.0

selene-core is the backend for Selene, a local-first music player
Documentation
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),
}