use thiserror::Error; pub type SearchResult = Result; #[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", } } }