Expand description
GraphQL parsing and query processing.
This module provides runtime GraphQL query handling:
- Query parsing via
graphql-parsercrate - Fragment resolution and expansion
- Directive evaluation (@skip, @include)
- Fragment cycle detection
§Architecture
Incoming GraphQL Query
│
▼
┌─────────────┐
│ Parser │ ← graphql-parser crate
└──────┬──────┘
│ ParsedQuery
▼
┌─────────────┐
│ Fragment │ ← Cycle detection
│ Validator │
└──────┬──────┘
│
▼
┌─────────────┐
│ Fragment │ ← Spread expansion
│ Resolver │
└──────┬──────┘
│ Resolved selections
▼
┌─────────────┐
│ Directive │ ← @skip/@include
│ Evaluator │
└──────┬──────┘
│ Final field list
▼
SQL Generation§Example
ⓘ
use fraiseql_core::graphql::{parse_query, FragmentResolver, DirectiveEvaluator};
let query = r#"
fragment UserFields on User { id name }
query { users { ...UserFields } }
"#;
let parsed = parse_query(query)?;
let resolver = FragmentResolver::new(&parsed.fragments);
let resolved = resolver.resolve_spreads(&parsed.selections)?;Re-exports§
pub use complexity::ComplexityAnalyzer;pub use complexity::ComplexityConfig;pub use directive_evaluator::CustomDirectiveEvaluator;pub use directive_evaluator::DirectiveError;pub use directive_evaluator::DirectiveEvaluator;pub use directive_evaluator::DirectiveHandler;pub use directive_evaluator::DirectiveResult;pub use directive_evaluator::EvaluationContext;pub use directive_evaluator::OperationType;pub use fragment_resolver::FragmentError;pub use fragment_resolver::FragmentResolver;pub use fragments::FragmentGraph;pub use parser::parse_query;pub use require_permission_directive::RequirePermissionDirective;pub use types::Directive;pub use types::FieldSelection;pub use types::FragmentDefinition;pub use types::GraphQLArgument;pub use types::GraphQLType;pub use types::ParsedQuery;pub use types::VariableDefinition;
Modules§
- complexity
- Query complexity analysis and DoS prevention.
- directive_
evaluator - Directive evaluation (@skip, @include). Directive evaluation for GraphQL queries.
- fragment_
resolver - Fragment resolution and expansion. Fragment resolution for GraphQL queries.
- fragments
- Fragment cycle detection. Fragment cycle detection and validation.
- parser
- GraphQL query parsing wrapper. GraphQL query parser using graphql-parser crate.
- require_
permission_ directive - Field-level RBAC directive (@require_permission). @require_permission directive handler for field-level RBAC
- types
- GraphQL AST types for query representation. GraphQL AST types for query representation.