Skip to main content

Module query_validator

Module query_validator 

Source
Expand description

Query Validator

This module provides query validation for GraphQL queries. It validates:

  • Query depth (maximum nesting levels)
  • Query complexity (weighted scoring of fields)
  • Query size (maximum bytes)

§Architecture

The Query Validator acts as the third layer in the security middleware:

GraphQL Query String
    ↓
QueryValidator::validate()
    ├─ Check 1: Validate query size
    ├─ Check 2: Parse and analyze query structure
    ├─ Check 3: Check query depth
    └─ Check 4: Check query complexity
    ↓
Result<QueryMetrics> (validation passed or error)

§Examples

use fraiseql_core::security::{QueryValidator, QueryValidatorConfig};

// Create validator with standard limits
let config = QueryValidatorConfig {
    max_depth: 10,
    max_complexity: 1000,
    max_size_bytes: 100_000,
};
let validator = QueryValidator::from_config(config);

// Validate a query
let query = "{ user { posts { comments { author { name } } } } }";
let metrics = validator.validate(query)?;
println!("Query depth: {}", metrics.depth);
println!("Query complexity: {}", metrics.complexity);

Structs§

QueryMetrics
Query metrics computed during validation
QueryValidator
Query Validator
QueryValidatorConfig
Query validation configuration