use serde::Serialize;
use crate::{util::*, MultiTermQuery, Query};
#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
#[serde(remote = "Self")]
pub struct SpanMultiQuery {
r#match: Box<MultiTermQuery>,
}
impl ShouldSkip for SpanMultiQuery {}
serialize_with_root!("span_multi": SpanMultiQuery);
deserialize_with_root!("span_multi": SpanMultiQuery);
impl Query {
#[allow(unused)]
pub fn span_multi<Q>(r#match: Q) -> SpanMultiQuery
where
Q: Into<MultiTermQuery>,
{
SpanMultiQuery {
r#match: Box::new(r#match.into()),
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn serialization() {
assert_serialize_query(
Query::span_multi(Query::prefix("test", "1234")),
json!({
"span_multi": {
"match" : {
"prefix": {
"test": {
"value": "1234"
}
}
}
}
}),
);
assert_serialize_query(
Query::span_multi(Query::prefix("test", "1234")),
json!({
"span_multi": {
"match" : {
"prefix": {
"test": {
"value": "1234"
}
}
}
}
}),
);
}
}