mirror of
https://github.com/meilisearch/MeiliSearch
synced 2025-07-04 12:27:13 +02:00
restore settings updates
This commit is contained in:
parent
dfce44fa3b
commit
c32012c44a
8 changed files with 264 additions and 280 deletions
|
@ -170,7 +170,7 @@ pub async fn add_documents(
|
|||
format: DocumentAdditionFormat::Json,
|
||||
};
|
||||
let update_status = meilisearch
|
||||
.register_update(path.index_uid.as_str(), update)
|
||||
.register_update(path.into_inner().index_uid, update)
|
||||
.await?;
|
||||
|
||||
debug!("returns: {:?}", update_status);
|
||||
|
@ -193,7 +193,7 @@ pub async fn update_documents(
|
|||
format: DocumentAdditionFormat::Json,
|
||||
};
|
||||
let update_status = meilisearch
|
||||
.register_update(path.index_uid.as_str(), update)
|
||||
.register_update(path.into_inner().index_uid, update)
|
||||
.await?;
|
||||
|
||||
debug!("returns: {:?}", update_status);
|
||||
|
|
|
@ -32,7 +32,7 @@ pub fn configure(cfg: &mut web::ServiceConfig) {
|
|||
.service(web::scope("/documents").configure(documents::configure))
|
||||
.service(web::scope("/search").configure(search::configure))
|
||||
.service(web::scope("/updates").configure(updates::configure))
|
||||
//.service(web::scope("/settings").configure(settings::configure)),
|
||||
.service(web::scope("/settings").configure(settings::configure)),
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,184 +1,191 @@
|
|||
//use log::debug;
|
||||
use log::debug;
|
||||
|
||||
//use crate::extractors::authentication::{policies::*, GuardedData};
|
||||
//use crate::index::Settings;
|
||||
//use crate::Data;
|
||||
//use crate::error::ResponseError;
|
||||
use actix_web::{HttpResponse, web};
|
||||
use meilisearch_lib::MeiliSearch;
|
||||
use meilisearch_lib::index::{Settings, Unchecked};
|
||||
use meilisearch_lib::index_controller::Update;
|
||||
|
||||
//#[macro_export]
|
||||
//macro_rules! make_setting_route {
|
||||
//($route:literal, $type:ty, $attr:ident, $camelcase_attr:literal) => {
|
||||
//pub mod $attr {
|
||||
//use log::debug;
|
||||
//use actix_web::{web, HttpResponse, Resource};
|
||||
use crate::extractors::authentication::{policies::*, GuardedData};
|
||||
use crate::error::ResponseError;
|
||||
|
||||
//use milli::update::Setting;
|
||||
#[macro_export]
|
||||
macro_rules! make_setting_route {
|
||||
($route:literal, $type:ty, $attr:ident, $camelcase_attr:literal) => {
|
||||
pub mod $attr {
|
||||
use log::debug;
|
||||
use actix_web::{web, HttpResponse, Resource};
|
||||
|
||||
//use crate::data;
|
||||
//use crate::error::ResponseError;
|
||||
//use crate::index::Settings;
|
||||
//use crate::extractors::authentication::{GuardedData, policies::*};
|
||||
use milli::update::Setting;
|
||||
use meilisearch_lib::{MeiliSearch, index::Settings, index_controller::Update};
|
||||
|
||||
//pub async fn delete(
|
||||
//data: GuardedData<Private, data::Data>,
|
||||
//index_uid: web::Path<String>,
|
||||
//) -> Result<HttpResponse, ResponseError> {
|
||||
//use crate::index::Settings;
|
||||
//let settings = Settings {
|
||||
//$attr: Setting::Reset,
|
||||
//..Default::default()
|
||||
//};
|
||||
//let update_status = data.update_settings(index_uid.into_inner(), settings, false).await?;
|
||||
//debug!("returns: {:?}", update_status);
|
||||
//Ok(HttpResponse::Accepted().json(serde_json::json!({ "updateId": update_status.id() })))
|
||||
//}
|
||||
use crate::error::ResponseError;
|
||||
use crate::extractors::authentication::{GuardedData, policies::*};
|
||||
|
||||
//pub async fn update(
|
||||
//data: GuardedData<Private, data::Data>,
|
||||
//index_uid: actix_web::web::Path<String>,
|
||||
//body: actix_web::web::Json<Option<$type>>,
|
||||
//) -> std::result::Result<HttpResponse, ResponseError> {
|
||||
//let settings = Settings {
|
||||
//$attr: match body.into_inner() {
|
||||
//Some(inner_body) => Setting::Set(inner_body),
|
||||
//None => Setting::Reset
|
||||
//},
|
||||
//..Default::default()
|
||||
//};
|
||||
pub async fn delete(
|
||||
meilisearch: GuardedData<Private, MeiliSearch>,
|
||||
index_uid: web::Path<String>,
|
||||
) -> Result<HttpResponse, ResponseError> {
|
||||
let settings = Settings {
|
||||
$attr: Setting::Reset,
|
||||
..Default::default()
|
||||
};
|
||||
let update = Update::Settings(settings);
|
||||
let update_status = meilisearch.register_update(index_uid.into_inner(), update).await?;
|
||||
debug!("returns: {:?}", update_status);
|
||||
Ok(HttpResponse::Accepted().json(serde_json::json!({ "updateId": update_status.id() })))
|
||||
}
|
||||
|
||||
//let update_status = data.update_settings(index_uid.into_inner(), settings, true).await?;
|
||||
//debug!("returns: {:?}", update_status);
|
||||
//Ok(HttpResponse::Accepted().json(serde_json::json!({ "updateId": update_status.id() })))
|
||||
//}
|
||||
pub async fn update(
|
||||
meilisearch: GuardedData<Private, MeiliSearch>,
|
||||
index_uid: actix_web::web::Path<String>,
|
||||
body: actix_web::web::Json<Option<$type>>,
|
||||
) -> std::result::Result<HttpResponse, ResponseError> {
|
||||
let settings = Settings {
|
||||
$attr: match body.into_inner() {
|
||||
Some(inner_body) => Setting::Set(inner_body),
|
||||
None => Setting::Reset
|
||||
},
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
//pub async fn get(
|
||||
//data: GuardedData<Private, data::Data>,
|
||||
//index_uid: actix_web::web::Path<String>,
|
||||
//) -> std::result::Result<HttpResponse, ResponseError> {
|
||||
//let settings = data.settings(index_uid.into_inner()).await?;
|
||||
//debug!("returns: {:?}", settings);
|
||||
//let mut json = serde_json::json!(&settings);
|
||||
//let val = json[$camelcase_attr].take();
|
||||
//Ok(HttpResponse::Ok().json(val))
|
||||
//}
|
||||
let update = Update::Settings(settings);
|
||||
let update_status = meilisearch.register_update(index_uid.into_inner(), update).await?;
|
||||
debug!("returns: {:?}", update_status);
|
||||
Ok(HttpResponse::Accepted().json(serde_json::json!({ "updateId": update_status.id() })))
|
||||
}
|
||||
|
||||
//pub fn resources() -> Resource {
|
||||
//Resource::new($route)
|
||||
//.route(web::get().to(get))
|
||||
//.route(web::post().to(update))
|
||||
//.route(web::delete().to(delete))
|
||||
//}
|
||||
//}
|
||||
//};
|
||||
//}
|
||||
pub async fn get(
|
||||
meilisearch: GuardedData<Private, MeiliSearch>,
|
||||
index_uid: actix_web::web::Path<String>,
|
||||
) -> std::result::Result<HttpResponse, ResponseError> {
|
||||
let settings = meilisearch.settings(index_uid.into_inner()).await?;
|
||||
debug!("returns: {:?}", settings);
|
||||
let mut json = serde_json::json!(&settings);
|
||||
let val = json[$camelcase_attr].take();
|
||||
Ok(HttpResponse::Ok().json(val))
|
||||
}
|
||||
|
||||
//make_setting_route!(
|
||||
//"/filterable-attributes",
|
||||
//std::collections::BTreeSet<String>,
|
||||
//filterable_attributes,
|
||||
//"filterableAttributes"
|
||||
//);
|
||||
pub fn resources() -> Resource {
|
||||
Resource::new($route)
|
||||
.route(web::get().to(get))
|
||||
.route(web::post().to(update))
|
||||
.route(web::delete().to(delete))
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
//make_setting_route!(
|
||||
//"/sortable-attributes",
|
||||
//std::collections::BTreeSet<String>,
|
||||
//sortable_attributes,
|
||||
//"sortableAttributes"
|
||||
//);
|
||||
make_setting_route!(
|
||||
"/filterable-attributes",
|
||||
std::collections::BTreeSet<String>,
|
||||
filterable_attributes,
|
||||
"filterableAttributes"
|
||||
);
|
||||
|
||||
//make_setting_route!(
|
||||
//"/displayed-attributes",
|
||||
//Vec<String>,
|
||||
//displayed_attributes,
|
||||
//"displayedAttributes"
|
||||
//);
|
||||
make_setting_route!(
|
||||
"/sortable-attributes",
|
||||
std::collections::BTreeSet<String>,
|
||||
sortable_attributes,
|
||||
"sortableAttributes"
|
||||
);
|
||||
|
||||
//make_setting_route!(
|
||||
//"/searchable-attributes",
|
||||
//Vec<String>,
|
||||
//searchable_attributes,
|
||||
//"searchableAttributes"
|
||||
//);
|
||||
make_setting_route!(
|
||||
"/displayed-attributes",
|
||||
Vec<String>,
|
||||
displayed_attributes,
|
||||
"displayedAttributes"
|
||||
);
|
||||
|
||||
//make_setting_route!(
|
||||
//"/stop-words",
|
||||
//std::collections::BTreeSet<String>,
|
||||
//stop_words,
|
||||
//"stopWords"
|
||||
//);
|
||||
make_setting_route!(
|
||||
"/searchable-attributes",
|
||||
Vec<String>,
|
||||
searchable_attributes,
|
||||
"searchableAttributes"
|
||||
);
|
||||
|
||||
//make_setting_route!(
|
||||
//"/synonyms",
|
||||
//std::collections::BTreeMap<String, Vec<String>>,
|
||||
//synonyms,
|
||||
//"synonyms"
|
||||
//);
|
||||
make_setting_route!(
|
||||
"/stop-words",
|
||||
std::collections::BTreeSet<String>,
|
||||
stop_words,
|
||||
"stopWords"
|
||||
);
|
||||
|
||||
//make_setting_route!(
|
||||
//"/distinct-attribute",
|
||||
//String,
|
||||
//distinct_attribute,
|
||||
//"distinctAttribute"
|
||||
//);
|
||||
make_setting_route!(
|
||||
"/synonyms",
|
||||
std::collections::BTreeMap<String, Vec<String>>,
|
||||
synonyms,
|
||||
"synonyms"
|
||||
);
|
||||
|
||||
//make_setting_route!("/ranking-rules", Vec<String>, ranking_rules, "rankingRules");
|
||||
make_setting_route!(
|
||||
"/distinct-attribute",
|
||||
String,
|
||||
distinct_attribute,
|
||||
"distinctAttribute"
|
||||
);
|
||||
|
||||
//macro_rules! generate_configure {
|
||||
//($($mod:ident),*) => {
|
||||
//pub fn configure(cfg: &mut web::ServiceConfig) {
|
||||
//cfg.service(
|
||||
//web::resource("")
|
||||
////.route(web::post().to(update_all))
|
||||
//.route(web::get().to(get_all))
|
||||
////.route(web::delete().to(delete_all)))
|
||||
//$(.service($mod::resources()))*;
|
||||
//}
|
||||
//};
|
||||
//}
|
||||
make_setting_route!("/ranking-rules", Vec<String>, ranking_rules, "rankingRules");
|
||||
|
||||
//generate_configure!(
|
||||
//filterable_attributes,
|
||||
//sortable_attributes,
|
||||
//displayed_attributes,
|
||||
//searchable_attributes,
|
||||
//distinct_attribute,
|
||||
//stop_words,
|
||||
//synonyms,
|
||||
//ranking_rules
|
||||
//);
|
||||
macro_rules! generate_configure {
|
||||
($($mod:ident),*) => {
|
||||
pub fn configure(cfg: &mut web::ServiceConfig) {
|
||||
cfg.service(
|
||||
web::resource("")
|
||||
.route(web::post().to(update_all))
|
||||
.route(web::get().to(get_all))
|
||||
.route(web::delete().to(delete_all)))
|
||||
$(.service($mod::resources()))*;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
//pub async fn update_all(
|
||||
//data: GuardedData<Private, MeiliSearch>,
|
||||
//index_uid: web::Path<String>,
|
||||
//body: web::Json<Settings<Unchecked>>,
|
||||
//) -> Result<HttpResponse, ResponseError> {
|
||||
//let settings = body.into_inner().check();
|
||||
//let update_result = data
|
||||
//.update_settings(index_uid.into_inner(), settings, true)
|
||||
//.await?;
|
||||
//let json = serde_json::json!({ "updateId": update_result.id() });
|
||||
//debug!("returns: {:?}", json);
|
||||
//Ok(HttpResponse::Accepted().json(json))
|
||||
//}
|
||||
generate_configure!(
|
||||
filterable_attributes,
|
||||
sortable_attributes,
|
||||
displayed_attributes,
|
||||
searchable_attributes,
|
||||
distinct_attribute,
|
||||
stop_words,
|
||||
synonyms,
|
||||
ranking_rules
|
||||
);
|
||||
|
||||
//pub async fn get_all(
|
||||
//data: GuardedData<Private, MeiliSearch>,
|
||||
//index_uid: web::Path<String>,
|
||||
//) -> Result<HttpResponse, ResponseError> {
|
||||
//let settings = data.settings(index_uid.into_inner()).await?;
|
||||
//debug!("returns: {:?}", settings);
|
||||
//Ok(HttpResponse::Ok().json(settings))
|
||||
//}
|
||||
pub async fn update_all(
|
||||
meilisearch: GuardedData<Private, MeiliSearch>,
|
||||
index_uid: web::Path<String>,
|
||||
body: web::Json<Settings<Unchecked>>,
|
||||
) -> Result<HttpResponse, ResponseError> {
|
||||
let settings = body.into_inner();
|
||||
|
||||
//pub async fn delete_all(
|
||||
//data: GuardedData<Private, MeiliSearch>,
|
||||
//index_uid: web::Path<String>,
|
||||
//) -> Result<HttpResponse, ResponseError> {
|
||||
//let settings = Settings::cleared();
|
||||
//let update_result = data
|
||||
//.update_settings(index_uid.into_inner(), settings, false)
|
||||
//.await?;
|
||||
//let json = serde_json::json!({ "updateId": update_result.id() });
|
||||
//debug!("returns: {:?}", json);
|
||||
//Ok(HttpResponse::Accepted().json(json))
|
||||
//}
|
||||
let update = Update::Settings(settings);
|
||||
let update_result = meilisearch
|
||||
.register_update(index_uid.into_inner(), update)
|
||||
.await?;
|
||||
let json = serde_json::json!({ "updateId": update_result.id() });
|
||||
debug!("returns: {:?}", json);
|
||||
Ok(HttpResponse::Accepted().json(json))
|
||||
}
|
||||
|
||||
pub async fn get_all(
|
||||
data: GuardedData<Private, MeiliSearch>,
|
||||
index_uid: web::Path<String>,
|
||||
) -> Result<HttpResponse, ResponseError> {
|
||||
let settings = data.settings(index_uid.into_inner()).await?;
|
||||
debug!("returns: {:?}", settings);
|
||||
Ok(HttpResponse::Ok().json(settings))
|
||||
}
|
||||
|
||||
pub async fn delete_all(
|
||||
data: GuardedData<Private, MeiliSearch>,
|
||||
index_uid: web::Path<String>,
|
||||
) -> Result<HttpResponse, ResponseError> {
|
||||
let settings = Settings::cleared();
|
||||
|
||||
let update = Update::Settings(settings.into_unchecked());
|
||||
let update_result = data
|
||||
.register_update(index_uid.into_inner(), update)
|
||||
.await?;
|
||||
let json = serde_json::json!({ "updateId": update_result.id() });
|
||||
debug!("returns: {:?}", json);
|
||||
Ok(HttpResponse::Accepted().json(json))
|
||||
}
|
||||
|
|
|
@ -69,13 +69,13 @@ impl From<&UpdateStatus> for UpdateType {
|
|||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
RegisterUpdate::Settings(settings) => UpdateType::Settings {
|
||||
settings: settings.clone(),
|
||||
},
|
||||
//UpdateMeta::ClearDocuments => UpdateType::ClearAll,
|
||||
//UpdateMeta::DeleteDocuments { ids } => UpdateType::DocumentsDeletion {
|
||||
//number: Some(ids.len()),
|
||||
//},
|
||||
//UpdateMeta::Settings(settings) => UpdateType::Settings {
|
||||
//settings: settings.clone(),
|
||||
//},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue