mirror of
https://github.com/meilisearch/MeiliSearch
synced 2025-07-03 20:07:09 +02:00
START THE REWRITE OF THE INDEX SCHEDULER: index & register has been implemented
This commit is contained in:
parent
f2279f4615
commit
5a9ac4ceb3
7 changed files with 423 additions and 5 deletions
141
index-scheduler/src/task.rs
Normal file
141
index-scheduler/src/task.rs
Normal file
|
@ -0,0 +1,141 @@
|
|||
use anyhow::Result;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::path::PathBuf;
|
||||
use time::OffsetDateTime;
|
||||
|
||||
use crate::TaskId;
|
||||
|
||||
#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub enum Status {
|
||||
Enqueued,
|
||||
Processing,
|
||||
Succeeded,
|
||||
Failed,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub struct Task {
|
||||
#[serde(with = "time::serde::rfc3339::option")]
|
||||
pub enqueued_at: Option<OffsetDateTime>,
|
||||
#[serde(with = "time::serde::rfc3339::option")]
|
||||
pub started_at: Option<OffsetDateTime>,
|
||||
#[serde(with = "time::serde::rfc3339::option")]
|
||||
pub finished_at: Option<OffsetDateTime>,
|
||||
|
||||
pub status: Status,
|
||||
pub kind: Kind,
|
||||
}
|
||||
|
||||
impl Task {
|
||||
pub fn persist(&self) -> Result<()> {
|
||||
self.kind.persist()
|
||||
}
|
||||
|
||||
pub fn remove_data(&self) -> Result<()> {
|
||||
self.kind.remove_data()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize)]
|
||||
#[serde(rename_all = "camelCase")]
|
||||
pub enum Kind {
|
||||
DumpExport {
|
||||
output: PathBuf,
|
||||
},
|
||||
DocumentAddition {
|
||||
index_name: String,
|
||||
content_file: String,
|
||||
},
|
||||
DocumentDeletion {
|
||||
index_name: String,
|
||||
documents_ids: Vec<String>,
|
||||
},
|
||||
ClearAllDocuments {
|
||||
index_name: String,
|
||||
},
|
||||
// TODO: TAMO: uncomment the settings
|
||||
// Settings {
|
||||
// index_name: String,
|
||||
// new_settings: Settings,
|
||||
// },
|
||||
RenameIndex {
|
||||
index_name: String,
|
||||
new_name: String,
|
||||
},
|
||||
CreateIndex {
|
||||
index_name: String,
|
||||
primary_key: Option<String>,
|
||||
},
|
||||
DeleteIndex {
|
||||
index_name: String,
|
||||
},
|
||||
SwapIndex {
|
||||
lhs: String,
|
||||
rhs: String,
|
||||
},
|
||||
CancelTask {
|
||||
tasks: Vec<TaskId>,
|
||||
},
|
||||
}
|
||||
|
||||
impl Kind {
|
||||
pub fn persist(&self) -> Result<()> {
|
||||
match self {
|
||||
Kind::DocumentAddition {
|
||||
index_name,
|
||||
content_file,
|
||||
} => {
|
||||
// TODO: TAMO: persist the file
|
||||
// content_file.persist();
|
||||
Ok(())
|
||||
}
|
||||
// There is nothing to persist for all these tasks
|
||||
Kind::DumpExport { .. }
|
||||
| Kind::DocumentDeletion { .. }
|
||||
| Kind::ClearAllDocuments { .. }
|
||||
| Kind::RenameIndex { .. }
|
||||
| Kind::CreateIndex { .. }
|
||||
| Kind::DeleteIndex { .. }
|
||||
| Kind::SwapIndex { .. }
|
||||
| Kind::CancelTask { .. } => Ok(()),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn remove_data(&self) -> Result<()> {
|
||||
match self {
|
||||
Kind::DocumentAddition {
|
||||
index_name,
|
||||
content_file,
|
||||
} => {
|
||||
// TODO: TAMO: delete the file
|
||||
// content_file.delete();
|
||||
Ok(())
|
||||
}
|
||||
// There is no data associated with all these tasks
|
||||
Kind::DumpExport { .. }
|
||||
| Kind::DocumentDeletion { .. }
|
||||
| Kind::ClearAllDocuments { .. }
|
||||
| Kind::RenameIndex { .. }
|
||||
| Kind::CreateIndex { .. }
|
||||
| Kind::DeleteIndex { .. }
|
||||
| Kind::SwapIndex { .. }
|
||||
| Kind::CancelTask { .. } => Ok(()),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn to_u32(&self) -> u32 {
|
||||
match self {
|
||||
Kind::DumpExport { .. } => 0,
|
||||
Kind::DocumentAddition { .. } => 1,
|
||||
Kind::DocumentDeletion { .. } => 2,
|
||||
Kind::ClearAllDocuments { .. } => 3,
|
||||
Kind::RenameIndex { .. } => 4,
|
||||
Kind::CreateIndex { .. } => 5,
|
||||
Kind::DeleteIndex { .. } => 6,
|
||||
Kind::SwapIndex { .. } => 7,
|
||||
Kind::CancelTask { .. } => 8,
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue