mirror of
https://github.com/meilisearch/MeiliSearch
synced 2025-07-04 20:37:15 +02:00
Merge #3334
3334: Add specific error codes `immutable_...` r=irevoire a=loiclec Add the following error codes: When an immutable field of API key is sent to the `PATCH /keys` route: - `ImmutableApiKeyUid` - `ImmutableApiKeyKey` - `ImmutableApiKeyActions` - `ImmutableApiKeyIndexes` - `ImmutableApiKeyExpiresAt` - `ImmutableApiKeyCreatedAt` - `ImmutableApiKeyUpdatedAt` When an immutable field of Index is sent to the `PATCH /indexes/{uid}` route: - `ImmutableIndexUid` - `ImmutableIndexCreatedAt` - `ImmutableIndexUpdatedAt` Co-authored-by: Loïc Lecrenier <loic.lecrenier@me.com> Co-authored-by: Tamo <tamo@meilisearch.com>
This commit is contained in:
commit
a5c4fbbcea
5 changed files with 51 additions and 18 deletions
|
@ -1,10 +1,12 @@
|
|||
use std::convert::Infallible;
|
||||
|
||||
use actix_web::web::Data;
|
||||
use actix_web::{web, HttpRequest, HttpResponse};
|
||||
use deserr::DeserializeFromValue;
|
||||
use deserr::{DeserializeError, DeserializeFromValue, ValuePointerRef};
|
||||
use index_scheduler::IndexScheduler;
|
||||
use log::debug;
|
||||
use meilisearch_types::error::deserr_codes::*;
|
||||
use meilisearch_types::error::{DeserrError, ResponseError, TakeErrorMessage};
|
||||
use meilisearch_types::error::{unwrap_any, Code, DeserrError, ResponseError, TakeErrorMessage};
|
||||
use meilisearch_types::index_uid::IndexUid;
|
||||
use meilisearch_types::milli::{self, FieldDistribution, Index};
|
||||
use meilisearch_types::tasks::KindWithContent;
|
||||
|
@ -140,8 +142,27 @@ pub async fn create_index(
|
|||
}
|
||||
}
|
||||
|
||||
fn deny_immutable_fields_index(
|
||||
field: &str,
|
||||
accepted: &[&str],
|
||||
location: ValuePointerRef,
|
||||
) -> DeserrError {
|
||||
let mut error = unwrap_any(DeserrError::<BadRequest>::error::<Infallible>(
|
||||
None,
|
||||
deserr::ErrorKind::UnknownKey { key: field, accepted },
|
||||
location,
|
||||
));
|
||||
|
||||
error.code = match field {
|
||||
"uid" => Code::ImmutableIndexUid,
|
||||
"createdAt" => Code::ImmutableIndexCreatedAt,
|
||||
"updatedAt" => Code::ImmutableIndexUpdatedAt,
|
||||
_ => Code::BadRequest,
|
||||
};
|
||||
error
|
||||
}
|
||||
#[derive(DeserializeFromValue, Debug)]
|
||||
#[deserr(error = DeserrError, rename_all = camelCase, deny_unknown_fields)]
|
||||
#[deserr(error = DeserrError, rename_all = camelCase, deny_unknown_fields = deny_immutable_fields_index)]
|
||||
pub struct UpdateIndexRequest {
|
||||
#[deserr(error = DeserrError<InvalidIndexPrimaryKey>)]
|
||||
primary_key: Option<String>,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue