From e33fbcf7b230f1c08f7d95e87ede9ce8dea0da47 Mon Sep 17 00:00:00 2001 From: Louis Dureuil Date: Tue, 29 Jul 2025 13:59:22 +0200 Subject: [PATCH] Move `meilisearch_types::Network` to its own module --- crates/meilisearch-types/src/features.rs | 19 ---------- crates/meilisearch-types/src/lib.rs | 1 + crates/meilisearch-types/src/network.rs | 47 ++++++++++++++++++++++++ 3 files changed, 48 insertions(+), 19 deletions(-) create mode 100644 crates/meilisearch-types/src/network.rs diff --git a/crates/meilisearch-types/src/features.rs b/crates/meilisearch-types/src/features.rs index ddffb107c..cf66422b2 100644 --- a/crates/meilisearch-types/src/features.rs +++ b/crates/meilisearch-types/src/features.rs @@ -1,5 +1,3 @@ -use std::collections::BTreeMap; - use serde::{Deserialize, Serialize}; use crate::error::{Code, ResponseError}; @@ -32,23 +30,6 @@ pub struct InstanceTogglableFeatures { pub contains_filter: bool, } -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] -#[serde(rename_all = "camelCase")] -pub struct Remote { - pub url: String, - #[serde(default)] - pub search_api_key: Option, -} - -#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default)] -#[serde(rename_all = "camelCase")] -pub struct Network { - #[serde(default, rename = "self")] - pub local: Option, - #[serde(default)] - pub remotes: BTreeMap, -} - #[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default)] #[serde(rename_all = "camelCase")] pub struct ChatCompletionSettings { diff --git a/crates/meilisearch-types/src/lib.rs b/crates/meilisearch-types/src/lib.rs index 9857bfb29..0cb647b0a 100644 --- a/crates/meilisearch-types/src/lib.rs +++ b/crates/meilisearch-types/src/lib.rs @@ -10,6 +10,7 @@ pub mod index_uid; pub mod index_uid_pattern; pub mod keys; pub mod locales; +pub mod network; pub mod settings; pub mod star_or; pub mod task_view; diff --git a/crates/meilisearch-types/src/network.rs b/crates/meilisearch-types/src/network.rs new file mode 100644 index 000000000..79b3b3808 --- /dev/null +++ b/crates/meilisearch-types/src/network.rs @@ -0,0 +1,47 @@ +// Copyright © 2025 Meilisearch Some Rights Reserved +// This file is part of Meilisearch Enterprise Edition (EE). +// Use of this source code is governed by the Business Source License 1.1, +// as found in the LICENSE-EE file or at + +use std::collections::BTreeMap; + +use milli::update::new::indexer::sharding::Shards; +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default)] +#[serde(rename_all = "camelCase")] +pub struct Network { + #[serde(default, rename = "self")] + pub local: Option, + #[serde(default)] + pub remotes: BTreeMap, + #[serde(default)] + pub sharding: bool, +} + +impl Network { + pub fn shards(&self) -> Option { + if self.sharding { + let this = self.local.as_deref().expect("Inconsistent `sharding` and `self`"); + let others = self + .remotes + .keys() + .filter(|name| name.as_str() != this) + .map(|name| name.to_owned()) + .collect(); + Some(Shards { own: vec![this.to_owned()], others }) + } else { + None + } + } +} + +#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq)] +#[serde(rename_all = "camelCase")] +pub struct Remote { + pub url: String, + #[serde(default)] + pub search_api_key: Option, + #[serde(default)] + pub write_api_key: Option, +}