Skip to main content

rsiot/components/cmp_tsdb_writer/
error.rs

1use crate::executor::ComponentError;
2
3use super::COMPONENT_NAME;
4
5#[allow(missing_docs)]
6#[derive(thiserror::Error, Debug)]
7pub enum Error {
8    #[error("{COMPONENT_NAME} | DatabaseCloseConnection: {0}")]
9    DatabaseCloseConnection(sqlx::Error),
10
11    #[error("{COMPONENT_NAME} | DatabaseConnect: {0}")]
12    DatabaseConnect(sqlx::Error),
13
14    #[error("{COMPONENT_NAME} | DatabaseExecute: {0}")]
15    DatabaseExecute(sqlx::Error),
16
17    #[error("{COMPONENT_NAME} | TimeFormat: {0}")]
18    TimeFormat(#[from] time::error::Format),
19
20    #[error("{COMPONENT_NAME} | TimeIndeterminatedOffset: {0}")]
21    TimeIndeterminatedOffset(#[from] time::error::IndeterminateOffset),
22
23    #[error("{COMPONENT_NAME} | Internal buffer too large: {0}")]
24    LargeInternalBuffer(usize),
25
26    #[error(transparent)]
27    ParseError(#[from] url::ParseError),
28
29    #[error("{COMPONENT_NAME} | RowIncorrect: {0}")]
30    RowIncorrect(String),
31
32    #[error(transparent)]
33    SqlxError(#[from] sqlx::Error),
34
35    #[error("{COMPONENT_NAME} | Error spawning task")]
36    Spawn(std::io::Error),
37
38    #[error("{COMPONENT_NAME} | TaskCollectResults")]
39    TaskCollectResults,
40
41    #[error("{COMPONENT_NAME} | TaskInputEnd")]
42    TaskInputEnd,
43
44    #[error("{COMPONENT_NAME} | TaskSendToDatabase")]
45    TaskSendToDatabase,
46
47    #[error("{COMPONENT_NAME} | TokioJoin")]
48    TokioJoin(#[from] tokio::task::JoinError),
49
50    #[error("{COMPONENT_NAME} | TokioMpsc in task: {task_name}")]
51    TokioMpsc { task_name: &'static str },
52}
53
54impl From<Error> for ComponentError {
55    fn from(value: Error) -> Self {
56        ComponentError::Execution(value.to_string())
57    }
58}