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