pub struct RuntimeConfig {
pub cache_query_plans: bool,
pub max_query_depth: usize,
pub max_query_complexity: usize,
pub enable_tracing: bool,
pub field_filter: Option<FieldFilter>,
pub rls_policy: Option<Arc<dyn RLSPolicy>>,
pub query_timeout_ms: u64,
pub jsonb_optimization: JsonbOptimizationOptions,
}Expand description
Runtime configuration.
Fields§
§cache_query_plans: boolEnable query plan caching.
max_query_depth: usizeMaximum query depth (prevents deeply nested queries).
max_query_complexity: usizeMaximum query complexity score.
enable_tracing: boolEnable performance tracing.
field_filter: Option<FieldFilter>Optional field filter for access control. When set, validates that users have required scopes to access fields.
rls_policy: Option<Arc<dyn RLSPolicy>>Optional row-level security (RLS) policy. When set, evaluates access rules based on SecurityContext to determine what rows a user can access (e.g., tenant isolation, owner-based access).
query_timeout_ms: u64Query timeout in milliseconds (0 = no timeout).
jsonb_optimization: JsonbOptimizationOptionsJSONB field optimization strategy options
Implementations§
Source§impl RuntimeConfig
impl RuntimeConfig
Sourcepub fn with_field_filter(self, config: FieldFilterConfig) -> Self
pub fn with_field_filter(self, config: FieldFilterConfig) -> Self
Create a new runtime config with a field filter.
§Example
use fraiseql_core::runtime::RuntimeConfig;
use fraiseql_core::security::FieldFilterConfig;
let config = RuntimeConfig::default()
.with_field_filter(
FieldFilterConfig::new()
.protect_field("User", "salary")
.protect_field("User", "ssn")
);Sourcepub fn with_rls_policy(self, policy: Arc<dyn RLSPolicy>) -> Self
pub fn with_rls_policy(self, policy: Arc<dyn RLSPolicy>) -> Self
Configure row-level security (RLS) policy for access control.
When set, the executor will evaluate the RLS policy before executing queries, applying WHERE clause filters based on the user’s SecurityContext.
§Example
use fraiseql_core::runtime::RuntimeConfig;
use fraiseql_core::security::DefaultRLSPolicy;
use std::sync::Arc;
let config = RuntimeConfig::default()
.with_rls_policy(Arc::new(DefaultRLSPolicy::new()));