ydb_unofficial/
error.rs

1//! Some error types that may appear when interacting with Ydb
2use std::fmt::Display;
3
4use thiserror::Error;
5
6use crate::generated::ydb::operations::Operation;
7pub use crate::payload::ExtractResultError;
8
9#[derive(Error, Debug)]
10#[error(transparent)]
11pub enum YdbError {
12    Grpc(#[from] tonic::Status),
13    ExtractResultError(#[from] ExtractResultError),
14    #[error("Error from ydb: {0}")]
15    Ydb(ErrWithOperation),
16    #[error("Empty response")]
17    EmptyResponse,
18    #[cfg(feature = "sqlx")]
19    #[error("Error on decode ast")]
20    DecodeAst,
21    #[cfg(feature = "sqlx")]
22    #[error("No session, try to reconnect")]
23    NoSession,
24}
25
26#[derive(Error, Debug)]
27pub struct ErrWithOperation(pub Operation);
28
29impl Display for ErrWithOperation {
30    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
31        let status = self.0.status();
32        write!(f, "Operation status: {status:?}")
33    }
34}