use crate::{EntityMeta, ParamError, QueryLimits, RawParams};
use sift_query_algorithm::StableHasher64;
use std::fmt;
mod param_filters;
#[derive(Debug, Clone, Copy, Default)]
pub struct IndexedArrayParamFilter;
#[derive(Debug, Clone, Copy, Default)]
pub struct JsonArrayParamFilter;
#[derive(Debug, Clone, Copy, Default)]
pub struct SuffixOperatorParamFilter;
#[derive(Debug, Clone, Default)]
pub struct DefaultParamFilter {
entries: Vec<(String, String)>,
}
pub trait RawParamFilter: Send + Sync + fmt::Debug {
fn filter(
&self,
entity: &'static EntityMeta,
input: &RawParams,
) -> Result<RawParams, ParamError>;
fn filter_with_limits(
&self,
entity: &'static EntityMeta,
input: &RawParams,
_limits: &QueryLimits,
) -> Result<RawParams, ParamError> {
self.filter(entity, input)
}
fn fingerprint(&self) -> u64 {
let mut hash = StableHasher64::default();
hash.write_delimited(std::any::type_name::<Self>());
hash.finish()
}
}