xapi_rs/error.rs
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
// SPDX-License-Identifier: GPL-3.0-or-later
use crate::data::DataError;
use std::{borrow::Cow, io};
use thiserror::Error;
use tracing::error;
/// Enumeration of different error types raised by this crate.
#[derive(Debug, Error)]
pub enum MyError {
/// xAPI format violation error.
#[error("Failed matching '{input:?}' to {name:?} format pattern")]
Format {
#[doc(hidden)]
input: Cow<'static, str>,
#[doc(hidden)]
name: Cow<'static, str>,
},
/// Data serialization/deserialization, parsing and validation errors.
#[error("General data error: {0}")]
Data(
#[doc(hidden)]
#[from]
DataError,
),
/// Base64 decoding error.
#[error("Base64 decode error: {0}")]
Base64(
#[doc(hidden)]
#[from]
base64::DecodeError,
),
/// UTF-8 string conversion error.
#[error("UTF8 conversion error: {0}")]
UTF8(
#[doc(hidden)]
#[from]
std::str::Utf8Error,
),
/// Rocket Multipart error.
#[error("Multipart/mixed parse error: {0}")]
MULTIPART(
#[doc(hidden)]
#[from]
rocket_multipart::Error,
),
/// DB pool/connection error.
#[error("DB error: {0}")]
DB(
#[doc(hidden)]
#[from]
sqlx::Error,
),
/// DB migration error.
#[error("DB migration error: {0}")]
DBMigrate(
#[doc(hidden)]
#[from]
sqlx::migrate::MigrateError,
),
/// Unexpected runtime error.
#[error("{0}")]
Runtime(#[doc(hidden)] Cow<'static, str>),
/// I/O error.
#[error("I/O error: {0}")]
IO(
#[doc(hidden)]
#[from]
io::Error,
),
}