Expand description
Middleware system for query interception.
This module provides a flexible middleware system that allows intercepting queries before and after execution. Use cases include:
- Logging - Log all queries and their execution times
- Metrics - Collect query performance metrics
- Caching - Cache query results
- Authentication - Add tenant/user context to queries
- Retry logic - Automatically retry failed queries
- Circuit breaking - Prevent cascade failures
§Example
ⓘ
use prax_query::middleware::{Middleware, MiddlewareStack, LoggingMiddleware};
// Create a middleware stack
let mut stack = MiddlewareStack::new();
stack.push(LoggingMiddleware::new());
stack.push(MetricsMiddleware::new());
// Use with an engine
let engine = engine.with_middleware(stack);Structs§
- Logging
Middleware - Middleware that logs queries.
- Metrics
Middleware - Middleware that collects query metrics.
- Middleware
Builder - Builder for creating middleware stacks.
- Middleware
Chain - A chain of middleware that processes queries.
- Middleware
Stack - A stack of middleware with builder pattern.
- Next
- The next handler in the middleware chain.
- Query
Context - Context passed through the middleware chain.
- Query
Metadata - Metadata about a query.
- Query
Metrics - Collected metrics for queries.
- Query
Response - Response from a query execution.
- Retry
Config - Configuration for retry behavior.
- Retry
Middleware - Middleware that automatically retries failed queries.
- Timing
Middleware - Middleware that measures query execution time.
- Timing
Result - Result of timing a query.
Enums§
- LogLevel
- Log level for query logging.
- Query
Phase - The current phase of query execution.
- Query
Type - The type of query being executed.
Traits§
- Metrics
Collector - Interface for collecting metrics.
- Middleware
- Middleware trait for intercepting queries.
Type Aliases§
- BoxFuture
- A boxed future for async middleware operations.
- Middleware
Result - Result type for middleware operations.