pub struct CompiledSchema {Show 16 fields
pub types: Vec<TypeDefinition>,
pub enums: Vec<EnumDefinition>,
pub input_types: Vec<InputObjectDefinition>,
pub interfaces: Vec<InterfaceDefinition>,
pub unions: Vec<UnionDefinition>,
pub queries: Vec<QueryDefinition>,
pub mutations: Vec<MutationDefinition>,
pub subscriptions: Vec<SubscriptionDefinition>,
pub directives: Vec<DirectiveDefinition>,
pub fact_tables: HashMap<String, Value>,
pub observers: Vec<ObserverDefinition>,
pub federation: Option<Value>,
pub security: Option<Value>,
pub observers_config: Option<Value>,
pub schema_sdl: Option<String>,
pub custom_scalars: CustomTypeRegistry,
}Expand description
Complete compiled schema - all type information for serving.
This is the central type that holds the entire GraphQL schema after compilation from Python/TypeScript decorators.
§Example
use fraiseql_core::schema::CompiledSchema;
let json = r#"{
"types": [],
"queries": [],
"mutations": [],
"subscriptions": []
}"#;
let schema = CompiledSchema::from_json(json).unwrap();
assert_eq!(schema.types.len(), 0);Fields§
§types: Vec<TypeDefinition>GraphQL object type definitions.
enums: Vec<EnumDefinition>GraphQL enum type definitions.
input_types: Vec<InputObjectDefinition>GraphQL input object type definitions.
interfaces: Vec<InterfaceDefinition>GraphQL interface type definitions.
unions: Vec<UnionDefinition>GraphQL union type definitions.
queries: Vec<QueryDefinition>GraphQL query definitions.
mutations: Vec<MutationDefinition>GraphQL mutation definitions.
subscriptions: Vec<SubscriptionDefinition>GraphQL subscription definitions.
directives: Vec<DirectiveDefinition>Custom directive definitions. These are user-defined directives beyond the built-in @skip, @include, @deprecated.
fact_tables: HashMap<String, Value>Fact table metadata (for analytics queries).
Key: table name (e.g., tf_sales)
observers: Vec<ObserverDefinition>Observer definitions (database change event listeners).
federation: Option<Value>Federation metadata for Apollo Federation v2 support.
security: Option<Value>Security configuration (from fraiseql.toml).
observers_config: Option<Value>Observers/event system configuration (from fraiseql.toml).
Contains backend connection settings (redis_url, nats_url, etc.) and
event handler definitions compiled from the [observers] TOML section.
schema_sdl: Option<String>Raw GraphQL schema as string (for SDL generation).
custom_scalars: CustomTypeRegistryCustom scalar type registry.
Contains definitions for custom scalar types defined in the schema.
Built during code generation from IRScalar definitions.
Not serialized - populated at runtime from ir.scalars.
Implementations§
Source§impl CompiledSchema
impl CompiledSchema
Sourcepub fn from_json(json: &str) -> Result<Self, Error>
pub fn from_json(json: &str) -> Result<Self, Error>
Deserialize from JSON string.
This is the primary way to create a schema from Python/TypeScript. The authoring language compiles to JSON, Rust deserializes and owns it.
§Errors
Returns error if JSON is malformed or doesn’t match schema structure.
§Example
use fraiseql_core::schema::CompiledSchema;
let json = r#"{"types": [], "queries": [], "mutations": [], "subscriptions": []}"#;
let schema = CompiledSchema::from_json(json).unwrap();Sourcepub fn to_json(&self) -> Result<String, Error>
pub fn to_json(&self) -> Result<String, Error>
Serialize to JSON string.
§Errors
Returns error if serialization fails (should not happen for valid schema).
Sourcepub fn to_json_pretty(&self) -> Result<String, Error>
pub fn to_json_pretty(&self) -> Result<String, Error>
Serialize to pretty JSON string (for debugging/config files).
§Errors
Returns error if serialization fails.
Sourcepub fn find_type(&self, name: &str) -> Option<&TypeDefinition>
pub fn find_type(&self, name: &str) -> Option<&TypeDefinition>
Find a type definition by name.
Sourcepub fn find_enum(&self, name: &str) -> Option<&EnumDefinition>
pub fn find_enum(&self, name: &str) -> Option<&EnumDefinition>
Find an enum definition by name.
Sourcepub fn find_input_type(&self, name: &str) -> Option<&InputObjectDefinition>
pub fn find_input_type(&self, name: &str) -> Option<&InputObjectDefinition>
Find an input object definition by name.
Sourcepub fn find_interface(&self, name: &str) -> Option<&InterfaceDefinition>
pub fn find_interface(&self, name: &str) -> Option<&InterfaceDefinition>
Find an interface definition by name.
Sourcepub fn find_implementors(&self, interface_name: &str) -> Vec<&TypeDefinition>
pub fn find_implementors(&self, interface_name: &str) -> Vec<&TypeDefinition>
Find all types that implement a given interface.
Sourcepub fn find_union(&self, name: &str) -> Option<&UnionDefinition>
pub fn find_union(&self, name: &str) -> Option<&UnionDefinition>
Find a union definition by name.
Sourcepub fn find_query(&self, name: &str) -> Option<&QueryDefinition>
pub fn find_query(&self, name: &str) -> Option<&QueryDefinition>
Find a query definition by name.
Sourcepub fn find_mutation(&self, name: &str) -> Option<&MutationDefinition>
pub fn find_mutation(&self, name: &str) -> Option<&MutationDefinition>
Find a mutation definition by name.
Sourcepub fn find_subscription(&self, name: &str) -> Option<&SubscriptionDefinition>
pub fn find_subscription(&self, name: &str) -> Option<&SubscriptionDefinition>
Find a subscription definition by name.
Sourcepub fn find_directive(&self, name: &str) -> Option<&DirectiveDefinition>
pub fn find_directive(&self, name: &str) -> Option<&DirectiveDefinition>
Find a custom directive definition by name.
Sourcepub fn operation_count(&self) -> usize
pub fn operation_count(&self) -> usize
Get total number of operations (queries + mutations + subscriptions).
Sourcepub fn add_fact_table(&mut self, table_name: String, metadata: Value)
pub fn add_fact_table(&mut self, table_name: String, metadata: Value)
Register fact table metadata.
§Arguments
table_name- Fact table name (e.g.,tf_sales)metadata- SerializedFactTableMetadata
Sourcepub fn get_fact_table(&self, name: &str) -> Option<&Value>
pub fn get_fact_table(&self, name: &str) -> Option<&Value>
Sourcepub fn list_fact_tables(&self) -> Vec<&str>
pub fn list_fact_tables(&self) -> Vec<&str>
Sourcepub fn has_fact_tables(&self) -> bool
pub fn has_fact_tables(&self) -> bool
Check if schema contains any fact tables.
Sourcepub fn find_observer(&self, name: &str) -> Option<&ObserverDefinition>
pub fn find_observer(&self, name: &str) -> Option<&ObserverDefinition>
Find an observer definition by name.
Sourcepub fn find_observers_for_entity(
&self,
entity: &str,
) -> Vec<&ObserverDefinition>
pub fn find_observers_for_entity( &self, entity: &str, ) -> Vec<&ObserverDefinition>
Get all observers for a specific entity type.
Sourcepub fn find_observers_for_event(&self, event: &str) -> Vec<&ObserverDefinition>
pub fn find_observers_for_event(&self, event: &str) -> Vec<&ObserverDefinition>
Get all observers for a specific event type (INSERT, UPDATE, DELETE).
Sourcepub fn has_observers(&self) -> bool
pub fn has_observers(&self) -> bool
Check if schema contains any observers.
Sourcepub fn observer_count(&self) -> usize
pub fn observer_count(&self) -> usize
Get total number of observers.
Sourcepub fn federation_metadata(&self) -> Option<FederationMetadata>
pub fn federation_metadata(&self) -> Option<FederationMetadata>
Sourcepub fn security_config(&self) -> Option<SecurityConfig>
pub fn security_config(&self) -> Option<SecurityConfig>
Get security configuration from schema.
§Returns
Security configuration if present (includes role definitions)
Sourcepub fn find_role(&self, role_name: &str) -> Option<RoleDefinition>
pub fn find_role(&self, role_name: &str) -> Option<RoleDefinition>
Sourcepub fn get_role_scopes(&self, role_name: &str) -> Vec<String>
pub fn get_role_scopes(&self, role_name: &str) -> Vec<String>
Sourcepub fn role_has_scope(&self, role_name: &str, scope: &str) -> bool
pub fn role_has_scope(&self, role_name: &str, scope: &str) -> bool
Sourcepub fn raw_schema(&self) -> String
pub fn raw_schema(&self) -> String
Get raw GraphQL schema SDL.
§Returns
Raw schema string if available, otherwise generates from type definitions
Trait Implementations§
Source§impl Clone for CompiledSchema
impl Clone for CompiledSchema
Source§fn clone(&self) -> CompiledSchema
fn clone(&self) -> CompiledSchema
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more