merge_filters

Function merge_filters 

Source
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 request
  • validator - 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");