logisheets_controller/
errors.rs1use logisheets_base::errors::BasicError;
2use logisheets_parser::errors::ParseError;
3use logisheets_workbook::SerdeErr;
4use thiserror::Error;
5
6use crate::{file_saver::SaveError, style_manager::errors::StyleError};
7
8pub type Result<T> = std::result::Result<T, Error>;
9
10#[derive(Debug, Error)]
11pub enum Error {
12 #[error(transparent)]
13 Basic(#[from] BasicError),
14 #[error(transparent)]
15 Style(#[from] StyleError),
16 #[error(transparent)]
17 Serde(#[from] SerdeErr),
18 #[error(transparent)]
19 Save(#[from] SaveError),
20 #[error(transparent)]
21 Parse(#[from] ParseError),
22 #[error("unavailable sheet idx: {0}")]
23 UnavailableSheetIdx(usize),
24}
25
26#[cfg_attr(
29 feature = "gents",
30 gents_derives::gents_header(file_name = "error_message.ts")
31)]
32pub struct ErrorMessage {
33 pub msg: String,
34 pub ty: usize,
35}
36
37impl From<Error> for ErrorMessage {
38 fn from(value: Error) -> Self {
39 match value {
40 Error::Basic(e) => {
41 let msg = e.to_string();
42 ErrorMessage { msg, ty: 0 }
43 }
44 Error::Style(e) => {
45 let msg = e.to_string();
46 ErrorMessage { msg, ty: 1 }
47 }
48 Error::Serde(e) => {
49 let msg = e.to_string();
50 ErrorMessage { msg, ty: 2 }
51 }
52 Error::Save(e) => {
53 let msg = e.to_string();
54 ErrorMessage { msg, ty: 3 }
55 }
56 Error::Parse(e) => {
57 let msg = e.to_string();
58 ErrorMessage { msg, ty: 4 }
59 }
60 Error::UnavailableSheetIdx(e) => {
61 let msg = e.to_string();
62 ErrorMessage { msg, ty: 5 }
63 }
64 }
65 }
66}