fraiseql-core 2.15.0

Core execution engine for FraiseQL v2 - Compiled GraphQL over SQL
Documentation
//! Compiled Schema Types
//!
//! This module defines the Rust-owned schema representation loaded from a compiled
//! schema at startup time.
//!
//! # Architecture
//!
//! ```text
//! Authoring language                   Rust
//! (Python, TS, Go, …)                 ────
//! @fraiseql.type    ─┐
//! @fraiseql.query    ├─→ schema.json ─→ fraiseql-cli compile ─→ CompiledSchema
//! @fraiseql.mutation─┘                                           (Rust-owned)
//!                                                                      │
//!                                                                      ▼
//!                                                            Axum serves requests
//!                                                    (authoring language not involved)
//! ```
//!
//! # Key Invariant
//!
//! After `CompiledSchema::from_json()`, all data is **Rust-owned**.
//! No authoring-language objects are referenced during request handling.
//!
//! # Usage
//!
//! ```no_run
//! // Requires: a compiled schema JSON file from `fraiseql-cli compile`.
//! use fraiseql_core::schema::CompiledSchema;
//! # fn example() -> Result<(), Box<dyn std::error::Error>> {
//! # let json_str = r#"{"types":[],"queries":[]}"#;
//! // From schema.compiled.json produced by `fraiseql-cli compile`
//! let schema = CompiledSchema::from_json(json_str, false)?;
//!
//! // From CLI config file
//! let schema = CompiledSchema::from_json(&std::fs::read_to_string("schema.json")?, false)?;
//!
//! // Access schema info
//! println!("Types: {}", schema.types.len());
//! println!("Queries: {}", schema.queries.len());
//! # Ok(())
//! # }
//! ```

mod changelog;
mod compiled;
pub(crate) use compiled::fact_field;
mod config_types;
mod dependency_graph;
pub mod derived_inputs;
pub mod domain_types;
mod field_type;
mod graphql_type_defs;
pub mod graphql_value;
mod hierarchy;
mod introspection;
pub mod introspection_types;
mod observer_types;
mod scalar_types;
pub mod security_config;
mod source_probe;
mod source_types;
mod subscribable_ddl;
mod subscription_policy;
mod subscription_types;

pub use changelog::inject_changelog;
pub use compiled::{
    AppleSocialConfig, ArgumentDefinition, AuthClientConfig, AutoParams, CURRENT_FRAISEQL_VERSION,
    CompiledSchema, CursorType, DirectiveDefinition, DirectiveLocationKind, DiscordSocialConfig,
    FacebookSocialConfig, GitHubSocialConfig, GoogleSocialConfig, InputStyle, LocalAuthConfig,
    MutationDefinition, MutationOperation, PaginationOrder, PkceClientConfig, ProducerVersion,
    QueryDefinition, SocialAuthConfig, SubscribableEntity, canonicalize_json, content_hash_of,
    is_safe_sql_identifier,
};
pub use config_types::{
    AuthorizationPolicy, AuthorizationRule, Cardinality, ChangelogConfig, CircuitBreakerConfig,
    CrudNamingConfig, CrudNamingPreset, DEFAULT_MAX_QUERY_DEPTH, DebugConfig, DeleteResponse,
    EnterpriseSecurityConfig, EntityCircuitBreakerOverride, FederationConfig, FederationEntity,
    FieldAuthRule, GrpcConfig, McpConfig, NamingConvention, ObserversConfig, Relationship,
    RestConfig, SessionVariableMapping, SessionVariableSource, SessionVariablesConfig,
    SubscriptionHooksConfig, SubscriptionsConfig, ValidationConfig,
};
pub use dependency_graph::{ChangeImpact, CyclePath, SchemaDependencyGraph};
pub use field_type::{
    BUILTIN_SCALARS, DeprecationInfo, DistanceMetric, FieldDefinition, FieldDenyPolicy,
    FieldEncryptionConfig, FieldType, VectorConfig, VectorIndexType,
};
pub use graphql_type_defs::{
    EnumDefinition, EnumValueDefinition, InputFieldDefinition, InputObjectDefinition,
    InterfaceDefinition, SqlProjectionHint, TypeDefinition, UnionDefinition,
};
pub use graphql_value::GraphQLValue;
pub use hierarchy::{HierarchiesConfig, HierarchyDefinition};
pub use introspection::{
    DirectiveLocation, IntrospectionBuilder, IntrospectionDirective, IntrospectionEnumValue,
    IntrospectionField, IntrospectionInputValue, IntrospectionResponses, IntrospectionSchema,
    IntrospectionType, IntrospectionTypeRef, IntrospectionValidationRule, TypeKind,
    published_scalar_names,
};
pub use observer_types::{ObserverDefinition, RetryConfig};
pub use scalar_types::{RICH_SCALARS, is_known_scalar};
pub use security_config::{
    ApiKeySecurityConfig, CodeChallengeMethod, CostBudgetConfig, DEFAULT_RATE_LIMIT_MAX_BUCKETS,
    EncryptionAlgorithm, ErrorSanitizationConfig, InjectedParamSource, KeySource,
    PkceSecurityConfig, RateLimitingSecurityConfig, RlsConfig, RoleDefinition, SecurityConfig,
    ServiceAccountConfig, StateEncryptionConfig, StaticApiKeyEntry, TenancyConfig, TenancyMode,
    TokenRevocationSecurityConfig, TrustedDocumentMode, TrustedDocumentsConfig,
};
pub use source_probe::{SourceKind, SourceProbe, sql_source_probes};
pub use source_types::{RunAs, SourceDefinition};
pub use subscribable_ddl::generate_capture_trigger_ddl;
pub use subscription_policy::{OwnerCondition, SubscriptionPolicy};
pub use subscription_types::{
    FilterOperator, StaticFilterCondition, SubscriptionDefinition, SubscriptionFilter,
};

#[cfg(test)]
mod tests;