pub fn merge_filters(
trusted: Vec<Filter>,
user: Vec<Filter>,
validator: &FilterValidator,
) -> Result<Vec<Filter>, ValidationError>Expand description
Merge trusted filters with validated user filters.
Combines system/policy filters with validated user-provided filters.
§Arguments
trusted- System filters (e.g.,org_id,tenant_id,deleted_at)user- User-provided filters from requestvalidator- Validation rules for user filters
§Returns
Combined filter list with trusted filters first, then validated user filters.
§Errors
Returns ValidationError if any user filter violates the validator rules.
§Example
// System ensures user can only see their org's data
let trusted = vec![
Filter::new("org_id", Operator::Eq, Value::Int(123)),
];
// User wants to filter by status
let user = vec![
Filter::new("status", Operator::Eq, Value::String("active".into())),
];
let validator = FilterValidator::new().allow_fields(&["status", "name"]);
let all_filters = merge_filters(trusted, user, &validator).unwrap();
assert_eq!(all_filters.len(), 2);
assert_eq!(all_filters[0].field, "org_id");
assert_eq!(all_filters[1].field, "status");