2022-09-22 12:14:51 +02:00
|
|
|
|
use meilisearch_types::error::{Code, ErrorCode};
|
2022-10-20 18:00:07 +02:00
|
|
|
|
use meilisearch_types::{heed, milli};
|
2022-09-06 16:43:59 +02:00
|
|
|
|
use thiserror::Error;
|
|
|
|
|
|
2022-09-21 17:13:09 +02:00
|
|
|
|
use crate::TaskId;
|
|
|
|
|
|
2022-10-22 16:35:42 +02:00
|
|
|
|
#[allow(clippy::large_enum_variant)]
|
2022-09-06 16:43:59 +02:00
|
|
|
|
#[derive(Error, Debug)]
|
|
|
|
|
pub enum Error {
|
2022-10-21 14:12:25 +02:00
|
|
|
|
#[error("Index `{0}` not found.")]
|
2022-09-07 20:08:07 +02:00
|
|
|
|
IndexNotFound(String),
|
2022-10-21 14:12:25 +02:00
|
|
|
|
#[error("Index `{0}` already exists.")]
|
2022-09-07 20:08:07 +02:00
|
|
|
|
IndexAlreadyExists(String),
|
2022-09-06 23:49:19 +02:00
|
|
|
|
#[error("Corrupted task queue.")]
|
|
|
|
|
CorruptedTaskQueue,
|
2022-10-16 01:39:01 +02:00
|
|
|
|
#[error("Corrupted dump.")]
|
|
|
|
|
CorruptedDump,
|
2022-10-21 14:12:25 +02:00
|
|
|
|
#[error("Task `{0}` not found.")]
|
2022-09-21 17:13:09 +02:00
|
|
|
|
TaskNotFound(TaskId),
|
2022-10-21 14:12:25 +02:00
|
|
|
|
#[error("Query parameters to filter the tasks to delete are missing. Available query parameters are: `uid`, `indexUid`, `status`, `type`.")]
|
2022-10-15 11:17:06 +02:00
|
|
|
|
TaskDeletionWithEmptyQuery,
|
2022-10-21 14:12:25 +02:00
|
|
|
|
#[error("Query parameters to filter the tasks to cancel are missing. Available query parameters are: `uid`, `indexUid`, `status`, `type`.")]
|
2022-10-18 14:48:40 +02:00
|
|
|
|
TaskCancelationWithEmptyQuery,
|
2022-09-22 12:14:51 +02:00
|
|
|
|
|
2022-10-13 15:02:59 +02:00
|
|
|
|
#[error(transparent)]
|
|
|
|
|
Dump(#[from] dump::Error),
|
2022-09-06 23:49:19 +02:00
|
|
|
|
#[error(transparent)]
|
|
|
|
|
Heed(#[from] heed::Error),
|
|
|
|
|
#[error(transparent)]
|
|
|
|
|
Milli(#[from] milli::Error),
|
2022-10-20 17:11:44 +02:00
|
|
|
|
#[error("An unexpected crash occurred when processing the task")]
|
|
|
|
|
MilliPanic,
|
2022-09-14 16:16:53 +02:00
|
|
|
|
#[error(transparent)]
|
|
|
|
|
FileStore(#[from] file_store::Error),
|
|
|
|
|
#[error(transparent)]
|
2022-09-07 21:27:06 +02:00
|
|
|
|
IoError(#[from] std::io::Error),
|
2022-09-06 23:49:19 +02:00
|
|
|
|
|
|
|
|
|
#[error(transparent)]
|
|
|
|
|
Anyhow(#[from] anyhow::Error),
|
2022-09-06 16:43:59 +02:00
|
|
|
|
}
|
2022-09-22 12:14:51 +02:00
|
|
|
|
|
|
|
|
|
impl ErrorCode for Error {
|
|
|
|
|
fn error_code(&self) -> Code {
|
|
|
|
|
match self {
|
|
|
|
|
Error::IndexNotFound(_) => Code::IndexNotFound,
|
|
|
|
|
Error::IndexAlreadyExists(_) => Code::IndexAlreadyExists,
|
|
|
|
|
Error::TaskNotFound(_) => Code::TaskNotFound,
|
2022-10-15 11:17:06 +02:00
|
|
|
|
Error::TaskDeletionWithEmptyQuery => Code::TaskDeletionWithEmptyQuery,
|
2022-10-18 14:48:40 +02:00
|
|
|
|
Error::TaskCancelationWithEmptyQuery => Code::TaskCancelationWithEmptyQuery,
|
2022-09-22 12:47:09 +02:00
|
|
|
|
|
2022-10-13 15:02:59 +02:00
|
|
|
|
Error::Dump(e) => e.error_code(),
|
|
|
|
|
Error::Milli(e) => e.error_code(),
|
2022-10-20 17:11:44 +02:00
|
|
|
|
Error::MilliPanic => Code::Internal,
|
2022-10-16 01:39:01 +02:00
|
|
|
|
// TODO: TAMO: are all these errors really internal?
|
2022-09-22 12:47:09 +02:00
|
|
|
|
Error::Heed(_) => Code::Internal,
|
|
|
|
|
Error::FileStore(_) => Code::Internal,
|
|
|
|
|
Error::IoError(_) => Code::Internal,
|
2022-09-22 12:14:51 +02:00
|
|
|
|
Error::Anyhow(_) => Code::Internal,
|
|
|
|
|
Error::CorruptedTaskQueue => Code::Internal,
|
2022-10-16 01:39:01 +02:00
|
|
|
|
Error::CorruptedDump => Code::Internal,
|
2022-09-22 12:14:51 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|