Handle star in attributes_to_retrieve

This commit is contained in:
Clémentine Urquizar 2021-04-17 17:33:36 +02:00
parent 7ce74f95a2
commit 8eceba98d3
No known key found for this signature in database
GPG Key ID: D8E7CC7422E77E1A
2 changed files with 63 additions and 3 deletions

View File

@ -108,9 +108,18 @@ async fn get_all_documents(
params: web::Query<BrowseQuery>, params: web::Query<BrowseQuery>,
) -> Result<HttpResponse, ResponseError> { ) -> Result<HttpResponse, ResponseError> {
let attributes_to_retrieve = params let attributes_to_retrieve = params
.attributes_to_retrieve .attributes_to_retrieve
.as_ref() .as_ref()
.map(|attrs| attrs.split(',').map(String::from).collect::<Vec<_>>()); .and_then(|attrs| {
let mut names = Vec::new();
for name in attrs.split(',').map(String::from) {
if name == "*" {
return None
}
names.push(name);
}
Some(names)
});
match data match data
.retrieve_documents( .retrieve_documents(

View File

@ -182,6 +182,23 @@ async fn test_get_all_documents_attributes_to_retrieve() {
0 0
); );
let (response, code) = index
.get_all_documents(GetAllDocumentsOptions {
attributes_to_retrieve: Some(vec!["wrong"]),
..Default::default()
})
.await;
assert_eq!(code, 200);
assert_eq!(response.as_array().unwrap().len(), 20);
assert_eq!(
response.as_array().unwrap()[0]
.as_object()
.unwrap()
.keys()
.count(),
0
);
let (response, code) = index let (response, code) = index
.get_all_documents(GetAllDocumentsOptions { .get_all_documents(GetAllDocumentsOptions {
attributes_to_retrieve: Some(vec!["name", "tags"]), attributes_to_retrieve: Some(vec!["name", "tags"]),
@ -198,6 +215,40 @@ async fn test_get_all_documents_attributes_to_retrieve() {
.count(), .count(),
2 2
); );
let (response, code) = index
.get_all_documents(GetAllDocumentsOptions {
attributes_to_retrieve: Some(vec!["*"]),
..Default::default()
})
.await;
assert_eq!(code, 200);
assert_eq!(response.as_array().unwrap().len(), 20);
assert_eq!(
response.as_array().unwrap()[0]
.as_object()
.unwrap()
.keys()
.count(),
16
);
let (response, code) = index
.get_all_documents(GetAllDocumentsOptions {
attributes_to_retrieve: Some(vec!["*", "wrong"]),
..Default::default()
})
.await;
assert_eq!(code, 200);
assert_eq!(response.as_array().unwrap().len(), 20);
assert_eq!(
response.as_array().unwrap()[0]
.as_object()
.unwrap()
.keys()
.count(),
16
);
} }
#[actix_rt::test] #[actix_rt::test]