Skip to content

Commit 5528766

Browse files
committed
#677 multi parent query wip
1 parent 318fb2d commit 5528766

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

server/src/handlers/search.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ pub struct SearchQuery {
3030
pub include: Option<bool>,
3131
/// Maximum amount of results
3232
pub limit: Option<usize>,
33-
/// Only include resources that have this resource as its ancestor
34-
pub parent: Option<String>,
33+
/// Only include resources that have one of these resources as its ancestor
34+
pub parents: Option<Vec<String>>,
3535
/// Filter based on props, using tantivy QueryParser syntax.
3636
/// e.g. `prop:val` or `prop:val~1` or `prop:val~1 AND prop2:val2`
3737
/// See https://docs.rs/tantivy/latest/tantivy/query/struct.QueryParser.html
@@ -147,9 +147,14 @@ fn query_from_params(
147147
) -> AtomicServerResult<impl Query> {
148148
let mut query_list: Queries = Vec::new();
149149

150-
if let Some(parent) = &params.parent {
151-
let query = build_parent_query(parent, fields, &appstate.store)?;
150+
if let Some(parents) = &params.parents {
151+
let mut queries: Vec<Box<dyn Query>> = Vec::new();
152+
for parent in parents {
153+
let boxed_q = build_parent_query(parent, fields, &appstate.store)?;
154+
queries.push(Box::new(boxed_q));
155+
}
152156

157+
let query = BooleanQuery::union(queries);
153158
query_list.push((Occur::Must, Box::new(query)));
154159
}
155160

0 commit comments

Comments
 (0)