prax_query/middleware/
mod.rs

1#![allow(dead_code)]
2
3//! Middleware system for query interception.
4//!
5//! This module provides a flexible middleware system that allows intercepting
6//! queries before and after execution. Use cases include:
7//!
8//! - **Logging** - Log all queries and their execution times
9//! - **Metrics** - Collect query performance metrics
10//! - **Caching** - Cache query results
11//! - **Authentication** - Add tenant/user context to queries
12//! - **Retry logic** - Automatically retry failed queries
13//! - **Circuit breaking** - Prevent cascade failures
14//!
15//! # Example
16//!
17//! ```rust,ignore
18//! use prax_query::middleware::{Middleware, MiddlewareStack, LoggingMiddleware};
19//!
20//! // Create a middleware stack
21//! let mut stack = MiddlewareStack::new();
22//! stack.push(LoggingMiddleware::new());
23//! stack.push(MetricsMiddleware::new());
24//!
25//! // Use with an engine
26//! let engine = engine.with_middleware(stack);
27//! ```
28
29mod chain;
30mod context;
31mod logging;
32mod metrics;
33mod retry;
34mod timing;
35mod types;
36
37pub use chain::{MiddlewareBuilder, MiddlewareChain, MiddlewareStack};
38pub use context::{QueryContext, QueryMetadata, QueryPhase, QueryType};
39pub use logging::{LogLevel, LoggingMiddleware};
40pub use metrics::{MetricsCollector, MetricsMiddleware, QueryMetrics};
41pub use retry::{RetryConfig, RetryMiddleware};
42pub use timing::{TimingMiddleware, TimingResult};
43pub use types::{BoxFuture, Middleware, MiddlewareResult, Next, QueryResponse};