1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use std::io;

use talk_loco_client::RequestError;
use thiserror::Error;

use crate::{database::PoolTaskError, ClientError};

#[derive(Debug, Error)]
#[error(transparent)]
pub enum HandlerError {
    Client(#[from] ClientError),

    Deserialize(#[from] bson::de::Error),

    Io(#[from] io::Error),
}

impl From<PoolTaskError> for HandlerError {
    fn from(value: PoolTaskError) -> Self {
        Self::Client(ClientError::Database(value))
    }
}

impl From<RequestError> for HandlerError {
    fn from(value: RequestError) -> Self {
        Self::Client(ClientError::Request(value))
    }
}