diff --git a/crates/meilisearch-types/src/task_view.rs b/crates/meilisearch-types/src/task_view.rs index df12d56c6..cbc29a11b 100644 --- a/crates/meilisearch-types/src/task_view.rs +++ b/crates/meilisearch-types/src/task_view.rs @@ -11,6 +11,7 @@ use crate::error::ResponseError; use crate::settings::{Settings, Unchecked}; use crate::tasks::{ serialize_duration, Details, DetailsExportIndexSettings, IndexSwap, Kind, Status, Task, TaskId, + TaskNetwork, }; #[derive(Debug, Clone, PartialEq, Serialize, ToSchema)] @@ -51,6 +52,9 @@ pub struct TaskView { #[schema(value_type = String, example = json!("2024-08-08_14:12:09.393Z"))] #[serde(with = "time::serde::rfc3339::option", default)] pub finished_at: Option, + + #[serde(default, skip_serializing_if = "Option::is_none")] + pub network: Option, } impl TaskView { @@ -68,6 +72,7 @@ impl TaskView { enqueued_at: task.enqueued_at, started_at: task.started_at, finished_at: task.finished_at, + network: task.network.clone(), } } } diff --git a/crates/meilisearch-types/src/tasks.rs b/crates/meilisearch-types/src/tasks.rs index eb1f61c58..2eb389eb9 100644 --- a/crates/meilisearch-types/src/tasks.rs +++ b/crates/meilisearch-types/src/tasks.rs @@ -42,6 +42,9 @@ pub struct Task { pub status: Status, pub kind: KindWithContent, + + #[serde(default, skip_serializing_if = "Option::is_none")] + pub network: Option, } impl Task { @@ -737,6 +740,35 @@ pub enum Details { }, } +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, ToSchema)] +#[serde(untagged, rename_all = "camelCase")] +pub enum TaskNetwork { + Origin { origin: Origin }, + Remotes { remote_tasks: BTreeMap }, +} +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, ToSchema)] +pub struct Origin { + pub remote_name: String, + pub task_uid: usize, +} + +#[derive(Debug, PartialEq, Clone, Serialize, Deserialize, ToSchema)] +#[serde(rename_all = "camelCase")] +pub struct RemoteTask { + #[serde(skip_serializing_if = "Option::is_none")] + task_uid: Option, + error: Option, +} + +impl From> for RemoteTask { + fn from(res: Result) -> RemoteTask { + match res { + Ok(task_uid) => RemoteTask { task_uid: Some(task_uid), error: None }, + Err(err) => RemoteTask { task_uid: None, error: Some(err) }, + } + } +} + #[derive(Debug, PartialEq, Clone, Serialize, Deserialize, ToSchema)] #[schema(rename_all = "camelCase")] pub struct DetailsExportIndexSettings {