e034b46
use thiserror::Error;
pub type SearchResult<T> = Result<T, SearchError>;
#[derive(Debug, Error)]
pub enum SearchError {
#[error("meilisearch error: {0}")]
Meilisearch(#[from] meilisearch_sdk::errors::Error),
#[error("serialization error: {0}")]
Serde(#[from] serde_json::Error),
#[error("search is disabled")]
Disabled,
#[error("config invalid: {0}")]
Config(String),
#[error("index not found: {0}")]
IndexNotFound(String),
#[error("meilisearch task failed: {0}")]
TaskFailed(String),
#[error("invalid search query: {0}")]
InvalidQuery(String),
#[error("sync error: {0}")]
Sync(String),
#[error("queue error: {0}")]
Queue(#[from] queue::QueueError),
}
impl SearchError {
pub fn error_kind(&self) -> &'static str {
match self {
SearchError::Meilisearch(_) => "meilisearch",
SearchError::Serde(_) => "serde",
SearchError::Disabled => "disabled",
SearchError::Config(_) => "config",
SearchError::IndexNotFound(_) => "index_not_found",
SearchError::TaskFailed(_) => "task_failed",
SearchError::InvalidQuery(_) => "invalid_query",
SearchError::Sync(_) => "sync",
SearchError::Queue(_) => "queue",
}
}
}