use crate::{client::Client, errors::Error, request::*, task_info::TaskInfo};
impl<Http: HttpClient> Client<Http> {
pub async fn create_snapshot(&self) -> Result<TaskInfo, Error> {
self.http_client
.request::<(), (), TaskInfo>(
&format!("{}/snapshots", self.host),
Method::Post {
query: (),
body: (),
},
202,
)
.await
}
}
pub async fn create_snapshot<Http: HttpClient>(client: &Client<Http>) -> Result<TaskInfo, Error> {
client.create_snapshot().await
}
#[cfg(test)]
mod tests {
use super::*;
use crate::{client::*, tasks::*};
use meilisearch_test_macro::meilisearch_test;
#[meilisearch_test]
async fn test_snapshot_success_creation(client: Client) -> Result<(), Error> {
let task = client
.create_snapshot()
.await?
.wait_for_completion(&client, None, None)
.await?;
assert!(matches!(task, Task::Succeeded { .. }));
Ok(())
}
#[meilisearch_test]
async fn test_snapshot_correct_update_type(client: Client) -> Result<(), Error> {
let task_info = client.create_snapshot().await.unwrap();
assert!(matches!(
task_info,
TaskInfo {
update_type: TaskType::SnapshotCreation { .. },
..
}
));
Ok(())
}
}