sift_query_core/extensions/
mod.rs1use crate::{EntityMeta, ParamError, QueryLimits, RawParams};
3use sift_query_algorithm::StableHasher64;
4use std::fmt;
5
6mod param_filters;
7
8#[derive(Debug, Clone, Copy, Default)]
12pub struct IndexedArrayParamFilter;
13
14#[derive(Debug, Clone, Copy, Default)]
16pub struct JsonArrayParamFilter;
17
18#[derive(Debug, Clone, Copy, Default)]
20pub struct SuffixOperatorParamFilter;
21
22#[derive(Debug, Clone, Default)]
24pub struct DefaultParamFilter {
25 entries: Vec<(String, String)>,
26}
27
28pub trait RawParamFilter: Send + Sync + fmt::Debug {
30 fn filter(
32 &self,
33 entity: &'static EntityMeta,
34 input: &RawParams,
35 ) -> Result<RawParams, ParamError>;
36
37 fn filter_with_limits(
40 &self,
41 entity: &'static EntityMeta,
42 input: &RawParams,
43 _limits: &QueryLimits,
44 ) -> Result<RawParams, ParamError> {
45 self.filter(entity, input)
46 }
47
48 fn fingerprint(&self) -> u64 {
50 let mut hash = StableHasher64::default();
51 hash.write_delimited(std::any::type_name::<Self>());
52 hash.finish()
53 }
54}