caio.co/de/cantine

Provide an aggregation query covering every feature

Id
3cbb0056f6a9f479750a525eb8716f9fa0768e31
Author
Caio
Commit time
2019-12-30T10:55:02+01:00

Modified tique_derive/src/lib.rs

@@ -320,10 +320,26
}
});

+ let full_range = get_public_struct_fields(&input).map(|field| {
+ let name = &field.ident;
+ let ty = extract_type_if_option(&field.ty).unwrap_or(&field.ty);
+ quote_spanned! { field.span()=>
+ #name: vec![std::#ty::MIN..std::#ty::MAX]
+ }
+ });
+
quote! {
- #[derive(serde::Serialize, serde::Deserialize, Default, Debug, Clone)]
+ #[derive(serde::Serialize, serde::Deserialize, Default, Debug, Clone, PartialEq)]
pub struct #name {
#(#fields),*
+ }
+
+ impl #name {
+ pub fn full_range() -> Self {
+ Self {
+ #(#full_range),*
+ }
+ }
}
}
}

Modified tique_derive/tests/basic.rs

@@ -180,6 +180,19
}

#[test]
+fn agg_query_full_range_generation() {
+ assert_eq!(
+ FeatAggregationQuery {
+ a: vec![std::u64::MIN..std::u64::MAX],
+ b: vec![std::i16::MIN..std::i16::MAX],
+ c: vec![std::f32::MIN..std::f32::MAX],
+ d: vec![std::f64::MIN..std::f64::MAX],
+ },
+ FeatAggregationQuery::full_range(),
+ );
+}
+
+#[test]
fn collector_integration() -> tantivy::Result<()> {
let mut builder = SchemaBuilder::new();