Skip to main content

selene_core/
errors.rs

1use std::num::ParseIntError;
2
3use thiserror::Error;
4
5use crate::database::DatabaseError;
6
7#[derive(Debug, Error)]
8pub enum ExportError {
9    #[error("IoError: {0}")]
10    Io(#[from] std::io::Error),
11
12    #[error("FfmpegError: {0}")]
13    Ffmpeg(#[from] FfmpegError),
14
15    #[error("DatabaseError: {0}")]
16    Database(#[from] DatabaseError),
17}
18
19#[derive(Debug, Error)]
20pub enum FfmpegError {
21    #[error("IoError: {0}")]
22    Io(#[from] std::io::Error),
23
24    #[error("Invalid UTF-8: {0}")]
25    Utf8(#[from] std::string::FromUtf8Error),
26
27    #[error("JsonError: {0}")]
28    Json(#[from] serde_json::Error),
29
30    #[error("Image does not exist")]
31    ImageDoesNotExist,
32
33    #[error("Error running ffmpeg: {0}")]
34    FfmpegWrapperError(String),
35
36    #[error("Error running Ffprobe: {0}")]
37    FfprobeWrapperError(String),
38
39    #[error("Generic FfmpegError: {0}")]
40    Other(String),
41
42    #[error("Codec Error: {0}")]
43    Codec(#[from] CodecError),
44
45    #[error("Container Error: {0}")]
46    Container(#[from] ContainerError),
47}
48
49#[derive(Debug, Error)]
50pub enum CodecError {
51    #[error("Unknown or unsupported codec: {0}")]
52    Unknown(String),
53}
54
55#[derive(Debug, Error)]
56pub enum ContainerError {
57    #[error("Unknown or unsupported codec: {0}")]
58    Unknown(String),
59}
60
61#[derive(Error, Debug)]
62pub enum LibraryError {
63    #[error(
64        "Failed to update library because no library directory set (Try 'musicmanager library set --help)"
65    )]
66    NoLibrary,
67}
68
69#[derive(Debug, Error)]
70pub enum ExtractError {
71    #[error("IoError: {0}")]
72    Io(#[from] std::io::Error),
73
74    #[error("DatabaseError: {0}")]
75    Database(#[from] DatabaseError),
76
77    #[error("Ffmpeg Error: {0}")]
78    Ffmpeg(#[from] FfmpegError),
79
80    #[error("Format Error: {0}")]
81    Format(#[from] lunar_lib::formatter::FormatError),
82
83    #[error("InvalidContainer Error")]
84    InvalidContainer,
85}
86
87#[derive(Debug, Error)]
88pub enum ImportError {
89    #[error("IoError: {0}")]
90    Io(#[from] std::io::Error),
91
92    #[error("Ffmpeg Error: {0}")]
93    Ffmpeg(#[from] FfmpegError),
94
95    #[error("Database Error: {0}")]
96    Database(#[from] DatabaseError),
97
98    #[error("Library Error: {0}")]
99    Library(#[from] LibraryError),
100}
101
102#[derive(Debug, Error)]
103pub enum MetadataError {
104    #[error("ParseInt Error: {0}")]
105    ParseInt(#[from] ParseIntError),
106
107    #[error("Database Error: {0}")]
108    Database(#[from] DatabaseError),
109
110    #[error("Too many results: {0}")]
111    TooManyResults(String),
112
113    #[error("Missing album: {0}")]
114    MissingAlbum(String),
115
116    #[error("Key not allowed: {0}")]
117    KeyNotAllowed(String),
118
119    #[error("Invalid key: {0}")]
120    InvalidKey(String),
121
122    #[error("Invalid value for key: {0}={1}")]
123    InvalidValue(String, String),
124
125    #[error("Missing album: {0}")]
126    MissingArtist(String),
127}