Skip to content

Commit 53a950c

Browse files
committed
merge with main
1 parent befd6e7 commit 53a950c

File tree

9 files changed

+158
-118
lines changed

9 files changed

+158
-118
lines changed

src/client.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@ use std::{collections::HashMap, time::Duration};
44
use time::OffsetDateTime;
55

66
use crate::{
7-
errors::*, indexes::*, request::*, search::*, utils::async_sleep, Key, KeyBuilder, KeyUpdater,
8-
KeysQuery, KeysResults, Task, TaskInfo, TasksCancelQuery, TasksDeleteQuery, TasksResults,
9-
TasksSearchQuery,
7+
errors::*,
8+
indexes::*,
9+
key::{Key, KeyBuilder, KeyUpdater, KeysQuery, KeysResults},
10+
request::*,
11+
search::*,
12+
task_info::TaskInfo,
13+
tasks::{Task, TasksCancelQuery, TasksDeleteQuery, TasksResults, TasksSearchQuery},
14+
utils::async_sleep,
1015
};
1116

1217
/// The top-level struct of the SDK, representing a client containing [indexes](../indexes/struct.Index.html).
1318
#[derive(Debug, Clone)]
14-
pub struct Client<Http: HttpClient> {
19+
pub struct Client<Http: HttpClient = IsahcClient> {
1520
pub(crate) host: String,
1621
pub(crate) api_key: Option<String>,
1722
pub http_client: Http,
@@ -44,7 +49,8 @@ impl Client<IsahcClient> {
4449
pub fn new(host: impl Into<String>, api_key: Option<impl Into<String>>) -> Client<IsahcClient> {
4550
Client {
4651
host: host.into(),
47-
52+
api_key: api_key.map(|api_key| api_key.into()),
53+
http_client: IsahcClient,
4854
}
4955
}
5056
}
@@ -1197,7 +1203,7 @@ mod tests {
11971203

11981204
use meilisearch_test_macro::meilisearch_test;
11991205

1200-
use crate::{client::*, Action, KeyBuilder, TasksSearchQuery};
1206+
use crate::{client::*, key::Action};
12011207

12021208
#[derive(Debug, Serialize, Deserialize, PartialEq)]
12031209
struct Document {

src/documents.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use crate::TaskInfo;
21
use async_trait::async_trait;
32
use serde::{de::DeserializeOwned, Deserialize, Serialize};
43

@@ -52,6 +51,7 @@ pub use meilisearch_index_setting_macro::IndexConfig;
5251
use crate::client::Client;
5352
use crate::request::HttpClient;
5453
use crate::settings::Settings;
54+
use crate::task_info::TaskInfo;
5555
use crate::tasks::Task;
5656
use crate::{errors::Error, indexes::Index};
5757

src/dumps.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
//! # });
3939
//! ```
4040
41-
use crate::{request::*, Client, Error, TaskInfo};
41+
use crate::{client::Client, errors::Error, request::*, task_info::TaskInfo};
4242

4343
/// Dump related methods.
4444
/// See the [dumps](crate::dumps) module.

src/features.rs

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::{
2-
request::{request, Method},
3-
Client, Error,
2+
client::Client,
3+
errors::Error,
4+
request::{HttpClient, Method},
45
};
56
use serde::{Deserialize, Serialize};
67

@@ -27,16 +28,16 @@ pub struct ExperimentalFeaturesResult {
2728
/// ```
2829
#[derive(Debug, Serialize)]
2930
#[serde(rename_all = "camelCase")]
30-
pub struct ExperimentalFeatures<'a> {
31+
pub struct ExperimentalFeatures<'a, Http: HttpClient> {
3132
#[serde(skip_serializing)]
32-
client: &'a Client,
33+
client: &'a Client<Http>,
3334
#[serde(skip_serializing_if = "Option::is_none")]
3435
pub vector_store: Option<bool>,
3536
}
3637

37-
impl<'a> ExperimentalFeatures<'a> {
38+
impl<'a, Http: HttpClient> ExperimentalFeatures<'a, Http> {
3839
#[must_use]
39-
pub fn new(client: &'a Client) -> Self {
40+
pub fn new(client: &'a Client<Http>) -> Self {
4041
ExperimentalFeatures {
4142
client,
4243
vector_store: None,
@@ -63,13 +64,16 @@ impl<'a> ExperimentalFeatures<'a> {
6364
/// });
6465
/// ```
6566
pub async fn get(&self) -> Result<ExperimentalFeaturesResult, Error> {
66-
request::<(), (), ExperimentalFeaturesResult>(
67-
&format!("{}/experimental-features", self.client.host),
68-
self.client.get_api_key(),
69-
Method::Get { query: () },
70-
200,
71-
)
72-
.await
67+
self.client
68+
.http_client
69+
.clone()
70+
.request::<(), (), ExperimentalFeaturesResult>(
71+
&format!("{}/experimental-features", self.client.host),
72+
self.client.get_api_key(),
73+
Method::Get { query: () },
74+
200,
75+
)
76+
.await
7377
}
7478

7579
/// Update the experimental features
@@ -88,16 +92,19 @@ impl<'a> ExperimentalFeatures<'a> {
8892
/// });
8993
/// ```
9094
pub async fn update(&self) -> Result<ExperimentalFeaturesResult, Error> {
91-
request::<(), &Self, ExperimentalFeaturesResult>(
92-
&format!("{}/experimental-features", self.client.host),
93-
self.client.get_api_key(),
94-
Method::Patch {
95-
query: (),
96-
body: self,
97-
},
98-
200,
99-
)
100-
.await
95+
self.client
96+
.http_client
97+
.clone()
98+
.request::<(), &Self, ExperimentalFeaturesResult>(
99+
&format!("{}/experimental-features", self.client.host),
100+
self.client.get_api_key(),
101+
Method::Patch {
102+
query: (),
103+
body: self,
104+
},
105+
200,
106+
)
107+
.await
101108
}
102109
}
103110

src/indexes.rs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
use crate::{
2-
request::*, search::*, tasks::*, Client, DocumentDeletionQuery, DocumentQuery, DocumentsQuery,
3-
DocumentsResults, Error, MeilisearchCommunicationError, MeilisearchError, TaskInfo,
4-
MEILISEARCH_VERSION_HINT,
2+
client::Client,
3+
documents::{DocumentDeletionQuery, DocumentQuery, DocumentsQuery, DocumentsResults},
4+
errors::{Error, MeilisearchCommunicationError, MeilisearchError, MEILISEARCH_VERSION_HINT},
5+
request::*,
6+
search::*,
7+
task_info::TaskInfo,
8+
tasks::*,
59
};
610
use serde::{de::DeserializeOwned, Deserialize, Serialize};
711
use std::{collections::HashMap, fmt::Display, time::Duration};
@@ -60,7 +64,7 @@ use time::OffsetDateTime;
6064
/// ```
6165
#[derive(Debug, Serialize, Clone)]
6266
#[serde(rename_all = "camelCase")]
63-
pub struct Index<Http: HttpClient> {
67+
pub struct Index<Http: HttpClient = IsahcClient> {
6468
#[serde(skip_serializing)]
6569
pub client: Client<Http>,
6670
pub uid: String,
@@ -2102,11 +2106,6 @@ mod tests {
21022106
assert_eq!(res.offset, 2);
21032107
}
21042108

2105-
#[meilisearch_test]
2106-
async fn test_get_one_task(
2107-
client: Client<IsahcClient>,
2108-
index: Index<IsahcClient>,
2109-
) -> Result<(), Error> {
21102109
async fn test_add_documents_ndjson(client: Client, index: Index) -> Result<(), Error> {
21112110
let ndjson = r#"{ "id": 1, "body": "doggo" }{ "id": 2, "body": "catto" }"#.as_bytes();
21122111

@@ -2212,9 +2211,12 @@ mod tests {
22122211

22132212
Ok(())
22142213
}
2215-
22162214
#[meilisearch_test]
2217-
async fn test_get_one_task(client: Client, index: Index) -> Result<(), Error> {
2215+
2216+
async fn test_get_one_task(
2217+
client: Client<IsahcClient>,
2218+
index: Index<IsahcClient>,
2219+
) -> Result<(), Error> {
22182220
let task = index
22192221
.delete_all_documents()
22202222
.await?

src/request.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
1+
use async_trait::async_trait;
22
use log::{error, trace, warn};
33
use serde::{de::DeserializeOwned, Serialize};
44
use serde_json::from_str;
55

6+
use crate::errors::{Error, MeilisearchCommunicationError, MeilisearchError};
7+
68
#[derive(Debug)]
79
pub enum Method<Q, B> {
810
Get { query: Q },

src/search.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -456,10 +456,11 @@ impl<'a, Http: HttpClient> SearchQuery<'a, Http> {
456456
self.sort = Some(sort);
457457
self
458458
}
459+
459460
pub fn with_attributes_to_search_on<'b>(
460461
&'b mut self,
461462
attributes_to_search_on: &'a [&'a str],
462-
) -> &'b mut SearchQuery<'a> {
463+
) -> &'b mut SearchQuery<'a, Http> {
463464
self.attributes_to_search_on = Some(attributes_to_search_on);
464465
self
465466
}
@@ -516,10 +517,11 @@ impl<'a, Http: HttpClient> SearchQuery<'a, Http> {
516517
self.show_matches_position = Some(show_matches_position);
517518
self
518519
}
520+
519521
pub fn with_show_ranking_score<'b>(
520522
&'b mut self,
521523
show_ranking_score: bool,
522-
) -> &'b mut SearchQuery<'a> {
524+
) -> &'b mut SearchQuery<'a, Http> {
523525
self.show_ranking_score = Some(show_ranking_score);
524526
self
525527
}
@@ -585,7 +587,12 @@ pub struct MultiSearchResponse<T> {
585587

586588
#[cfg(test)]
587589
mod tests {
588-
use crate::{client::*, request::IsahcClient, search::*};
590+
use crate::{
591+
client::*,
592+
key::{Action, KeyBuilder},
593+
request::IsahcClient,
594+
search::*,
595+
};
589596
use big_s::S;
590597
use meilisearch_test_macro::meilisearch_test;
591598
use serde::{Deserialize, Serialize};
@@ -1183,8 +1190,6 @@ mod tests {
11831190
client: Client<IsahcClient>,
11841191
index: Index<IsahcClient>,
11851192
) -> Result<(), Error> {
1186-
use crate::{Action, KeyBuilder};
1187-
11881193
setup_test_index(&client, &index).await?;
11891194

11901195
let meilisearch_url = option_env!("MEILISEARCH_URL").unwrap_or("http://localhost:7700");

0 commit comments

Comments
 (0)