Expand description
GraphQL-to-SQL Gateway
Feature 12 of the HeliosProxy roadmap.
This module provides a GraphQL gateway that automatically generates efficient SQL queries from GraphQL requests. It includes:
- Automatic schema introspection from database tables
- Efficient SQL generation with JOIN optimization
- N+1 query prevention via DataLoader pattern
- Query complexity analysis and limits
- Branch-aware and time-travel queries (HeliosDB-Lite integration)
§Architecture
GraphQL Query → Parse → Validate → Plan → Generate SQL → Execute → Shape Response§Example
ⓘ
use heliosdb::proxy::graphql::{GraphQLEngine, GraphQLConfig};
let config = GraphQLConfig::builder()
.endpoint("/graphql")
.playground(true)
.max_depth(10)
.build();
let engine = GraphQLEngine::new(config, db_pool).await?;
let response = engine.execute(GraphQLRequest {
query: "query { users { id name } }".to_string(),
variables: None,
operation_name: None,
}).await?;Re-exports§
pub use config::GraphQLConfig;pub use config::GraphQLConfigBuilder;pub use config::TableConfig;pub use config::RelationshipConfig;pub use engine::GraphQLEngine;pub use engine::GraphQLRequest;pub use engine::GraphQLResponse;pub use engine::GraphQLError;pub use introspector::SchemaIntrospector;pub use introspector::GraphQLSchema;pub use introspector::GraphQLType;pub use introspector::GraphQLField;pub use sql_generator::SqlGenerator;pub use sql_generator::SqlQuery;pub use sql_generator::QueryPlan;pub use sql_generator::Selection;pub use sql_generator::Filter;pub use dataloader::DataLoader;pub use dataloader::DataLoaderConfig;pub use dataloader::BatchResult;pub use resolver::FieldResolver;pub use resolver::ResolverContext;pub use resolver::ResolverResult;pub use validation::QueryValidator;pub use validation::ValidationError;pub use validation::ComplexityResult;pub use metrics::GraphQLMetrics;pub use metrics::QueryStats;pub use metrics::OperationMetrics;
Modules§
- config
- GraphQL Gateway Configuration
- dataloader
- DataLoader
- engine
- GraphQL Engine
- introspector
- Schema Introspector
- metrics
- GraphQL Metrics
- resolver
- Field Resolver
- sql_
generator - SQL Generator
- validation
- Query Validation
Structs§
- Branch
Context - Branch context for HeliosDB branch-aware queries
- Execution
Context - GraphQL execution context
Enums§
- Consistency
Level - Consistency level for GraphQL queries (HeliosDB integration)
- Distance
Metric - Distance metric for vector searches
- Error
Code - GraphQL error codes
- GraphQL
Scalar - GraphQL scalar types mapped from SQL
- Operation
Type - GraphQL operation type
- Relation
Type - Relationship type between tables
Functions§
- to_
camel_ case - Convert string to camelCase
- to_
pascal_ case - Convert string to PascalCase
- to_
snake_ case - Convert string to snake_case