mirror of
https://github.com/meilisearch/meilisearch.git
synced 2025-09-26 14:56:29 +00:00
Add settings route
This commit is contained in:
@ -520,6 +520,17 @@ make_setting_routes!(
|
||||
camelcase_attr: "chat",
|
||||
analytics: ChatAnalytics
|
||||
},
|
||||
{
|
||||
route: "/vector-store",
|
||||
update_verb: patch,
|
||||
value_type: meilisearch_types::milli::vector::VectorStoreBackend,
|
||||
err_type: meilisearch_types::deserr::DeserrJsonError<
|
||||
meilisearch_types::error::deserr_codes::InvalidSettingsVectorStore,
|
||||
>,
|
||||
attr: vector_store,
|
||||
camelcase_attr: "vectorStore",
|
||||
analytics: VectorStoreAnalytics
|
||||
},
|
||||
);
|
||||
|
||||
#[utoipa::path(
|
||||
@ -610,6 +621,7 @@ pub async fn update_all(
|
||||
facet_search: FacetSearchAnalytics::new(new_settings.facet_search.as_ref().set()),
|
||||
prefix_search: PrefixSearchAnalytics::new(new_settings.prefix_search.as_ref().set()),
|
||||
chat: ChatAnalytics::new(new_settings.chat.as_ref().set()),
|
||||
vector_store: VectorStoreAnalytics::new(new_settings.vector_store.as_ref().set()),
|
||||
},
|
||||
&req,
|
||||
);
|
||||
@ -665,10 +677,17 @@ pub async fn get_all(
|
||||
let index = index_scheduler.index(&index_uid)?;
|
||||
let rtxn = index.read_txn()?;
|
||||
let mut new_settings = settings(&index, &rtxn, SecretPolicy::HideSecrets)?;
|
||||
if index_scheduler.features().check_chat_completions("showing index `chat` settings").is_err() {
|
||||
|
||||
let features = index_scheduler.features();
|
||||
|
||||
if features.check_chat_completions("showing index `chat` settings").is_err() {
|
||||
new_settings.chat = Setting::NotSet;
|
||||
}
|
||||
|
||||
if features.check_vector_store_setting("showing index `vectorStore` settings").is_err() {
|
||||
new_settings.vector_store = Setting::NotSet;
|
||||
}
|
||||
|
||||
debug!(returns = ?new_settings, "Get all settings");
|
||||
Ok(HttpResponse::Ok().json(new_settings))
|
||||
}
|
||||
@ -770,5 +789,9 @@ fn validate_settings(
|
||||
features.check_chat_completions("setting `chat` in the index settings")?;
|
||||
}
|
||||
|
||||
if let Setting::Set(_) = &settings.vector_store {
|
||||
features.check_vector_store_setting("setting `vectorStore` in the index settings")?;
|
||||
}
|
||||
|
||||
Ok(settings.validate()?)
|
||||
}
|
||||
|
@ -8,6 +8,7 @@ use std::collections::{BTreeMap, BTreeSet, HashSet};
|
||||
use meilisearch_types::facet_values_sort::FacetValuesSort;
|
||||
use meilisearch_types::locales::{Locale, LocalizedAttributesRuleView};
|
||||
use meilisearch_types::milli::update::Setting;
|
||||
use meilisearch_types::milli::vector::VectorStoreBackend;
|
||||
use meilisearch_types::milli::FilterableAttributesRule;
|
||||
use meilisearch_types::settings::{
|
||||
ChatSettings, FacetingSettings, PaginationSettings, PrefixSearchSettings,
|
||||
@ -40,6 +41,7 @@ pub struct SettingsAnalytics {
|
||||
pub facet_search: FacetSearchAnalytics,
|
||||
pub prefix_search: PrefixSearchAnalytics,
|
||||
pub chat: ChatAnalytics,
|
||||
pub vector_store: VectorStoreAnalytics,
|
||||
}
|
||||
|
||||
impl Aggregate for SettingsAnalytics {
|
||||
@ -200,6 +202,10 @@ impl Aggregate for SettingsAnalytics {
|
||||
value: new.prefix_search.value.or(self.prefix_search.value),
|
||||
},
|
||||
chat: ChatAnalytics { set: new.chat.set | self.chat.set },
|
||||
vector_store: VectorStoreAnalytics {
|
||||
set: new.vector_store.set | self.vector_store.set,
|
||||
value: new.vector_store.value.or(self.vector_store.value),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@ -693,3 +699,19 @@ impl ChatAnalytics {
|
||||
SettingsAnalytics { chat: self, ..Default::default() }
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Default)]
|
||||
pub struct VectorStoreAnalytics {
|
||||
pub set: bool,
|
||||
pub value: Option<VectorStoreBackend>,
|
||||
}
|
||||
|
||||
impl VectorStoreAnalytics {
|
||||
pub fn new(settings: Option<&VectorStoreBackend>) -> Self {
|
||||
Self { set: settings.is_some(), value: settings.copied() }
|
||||
}
|
||||
|
||||
pub fn into_settings(self) -> SettingsAnalytics {
|
||||
SettingsAnalytics { vector_store: self, ..Default::default() }
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user