Expand description
Database layer for Kaccy Protocol
This crate provides database connection pooling, query abstractions, Redis caching, read replica support, index analysis, analytics, backup/recovery utilities, database sharding, multi-region replication, security features (encryption, sanitization, audit logging), real-time event notifications (LISTEN/NOTIFY), and comprehensive observability for PostgreSQL using SQLx.
Re-exports§
pub use analytics::AnalyticsService;pub use analytics::DailyStats;pub use analytics::DashboardMetrics;pub use analytics::OhlcData;pub use analytics::PlatformVolumeHistory;pub use analytics::PriceHistory;pub use analytics::RefreshConfig;pub use analytics::TokenMetricsSummary;pub use analytics::UserActivitySummary;pub use analytics::VolumeHistory;pub use backup::get_database_stats;pub use backup::verify_database_integrity;pub use backup::BackupConfig;pub use backup::BackupManager;pub use backup::BackupMetadata;pub use backup::DatabaseStats;pub use backup::PitrConfig;pub use bulk_operations::BulkDeleter;pub use bulk_operations::BulkInserter;pub use bulk_operations::BulkUpdater;pub use cache::keys as cache_keys;pub use cache::CacheConfig;pub use cache::CacheStats;pub use cache::CachedRepository;pub use cache::RedisCache;pub use cache_invalidation::CascadeRule;pub use cache_invalidation::InvalidationConfig;pub use cache_invalidation::InvalidationEvent;pub use cache_invalidation::InvalidationManager;pub use cache_invalidation::InvalidationType;pub use cache_invalidation::TagRegistry;pub use cache_warming::CacheDataSource;pub use cache_warming::CacheWarmer;pub use cache_warming::CacheWarmingConfig;pub use cache_warming::WarmingStrategy;pub use circuit_breaker::CircuitBreaker;pub use circuit_breaker::CircuitBreakerConfig;pub use circuit_breaker::CircuitBreakerStats;pub use circuit_breaker::CircuitState;pub use connection_diagnostics::check_connection_health;pub use connection_diagnostics::find_long_running_queries;pub use connection_diagnostics::get_active_connections;pub use connection_diagnostics::get_pool_diagnostics;pub use connection_diagnostics::get_pool_stats;pub use connection_diagnostics::ActiveConnection;pub use connection_diagnostics::ConnectionHealth;pub use connection_diagnostics::ConnectionIssue;pub use connection_diagnostics::IssueType;pub use connection_diagnostics::LongRunningQuery;pub use connection_diagnostics::PoolDiagnostics;pub use connection_diagnostics::PoolStats;pub use connection_diagnostics::Severity;pub use connection_leak_detector::LeakDetector;pub use connection_leak_detector::LeakDetectorConfig;pub use connection_leak_detector::LeakReport;pub use connection_leak_detector::LeakStats;pub use connection_leak_detector::TrackedConnection;pub use cursor_pagination::Connection;pub use cursor_pagination::Cursor;pub use cursor_pagination::CursorBuilder;pub use cursor_pagination::CursorPagination;pub use cursor_pagination::Direction;pub use cursor_pagination::Edge;pub use cursor_pagination::PageInfo;pub use database_size_monitor::CapacityForecast;pub use database_size_monitor::DatabaseSizeMonitor;pub use database_size_monitor::DatabaseSnapshot;pub use database_size_monitor::GrowthStats;pub use database_size_monitor::SizeAlert;pub use database_size_monitor::SizeAlertType;pub use database_size_monitor::SizeMonitorConfig;pub use database_size_monitor::SizeReport;pub use database_size_monitor::TableSize;pub use error::DbError;pub use error::Result;pub use event_notifications::DatabaseEvent;pub use event_notifications::EventHandlerFn;pub use event_notifications::EventListener;pub use event_notifications::ListenerConfig;pub use event_notifications::NotificationStats;pub use event_notifications::NotificationTriggers;pub use event_notifications::PostgresNotificationTriggers;pub use generic_repository::CachedGenericRepository;pub use generic_repository::Page;pub use generic_repository::Pagination;pub use generic_repository::Repository;pub use health_check::perform_health_check;pub use health_check::quick_health_check;pub use health_check::HealthCategory;pub use health_check::HealthCheckConfig;pub use health_check::HealthCheckResult;pub use health_check::HealthStatus;pub use health_check::SystemHealthReport;pub use helpers::calculate_offset;pub use helpers::calculate_percentage;pub use helpers::column_exists;pub use helpers::execute_raw;pub use helpers::format_bytes;pub use helpers::get_database_time;pub use helpers::parse_decimal;pub use helpers::parse_uuid;pub use helpers::sanitize_column_name;pub use helpers::sanitize_table_name;pub use helpers::table_exists;pub use helpers::PaginationMeta;pub use index_analyzer::AnalysisSummary;pub use index_analyzer::ExistingIndex;pub use index_analyzer::IndexAnalysis;pub use index_analyzer::IndexAnalyzer;pub use index_analyzer::IndexSuggestion;pub use index_analyzer::IndexSuggestionType;pub use index_analyzer::Priority;pub use index_analyzer::UnusedIndex;pub use lock_monitoring::detect_deadlocks;pub use lock_monitoring::get_blocking_queries;pub use lock_monitoring::get_current_locks;pub use lock_monitoring::get_lock_wait_stats;pub use lock_monitoring::kill_blocking_query;pub use lock_monitoring::BlockingQuery;pub use lock_monitoring::DeadlockInfo;pub use lock_monitoring::LockInfo;pub use lock_monitoring::LockType;pub use lock_monitoring::LockWaitStats;pub use logging::AnomalyDetector;pub use logging::DbContext;pub use logging::LogLevel;pub use logging::PerformanceTracker;pub use logging::QueryLogEntry;pub use logging::QueryStats;pub use maintenance::analyze_table;pub use maintenance::auto_vacuum_tables;pub use maintenance::get_bloated_tables;pub use maintenance::get_tables_needing_vacuum;pub use maintenance::reindex_table;pub use maintenance::vacuum_analyze_table;pub use maintenance::vacuum_table;pub use maintenance::MaintenanceOperation;pub use maintenance::MaintenanceResult;pub use maintenance::TableBloatInfo;pub use maintenance::TableVacuumInfo;pub use metrics::cache_hit_rate;pub use metrics::gather_metrics;pub use metrics::record_cache_error;pub use metrics::record_cache_hit;pub use metrics::record_cache_miss;pub use metrics::record_pool_stats;pub use metrics::register_metrics;pub use metrics::MetricsTimer;pub use migration_runner::Migration;pub use migration_runner::MigrationConfig;pub use migration_runner::MigrationHistory;pub use migration_runner::MigrationResult;pub use migration_runner::MigrationRunner;pub use migration_utils::get_migration_status;pub use migration_utils::get_schema_version;pub use migration_utils::is_migration_applied;pub use migration_utils::list_applied_migrations;pub use migration_utils::verify_schema_integrity;pub use migration_utils::MigrationInfo;pub use migration_utils::MigrationStatus;pub use migration_utils::SchemaIntegrity;pub use multi_region::MultiRegionPoolManager;pub use multi_region::Region;pub use multi_region::RegionalPoolConfig;pub use multi_region::ReplicationLag;pub use multi_tier_cache::MultiTierCache;pub use multi_tier_cache::MultiTierCacheConfig;pub use multi_tier_cache::MultiTierStats;pub use partitioning::PartitionDefinition;pub use partitioning::PartitionInterval;pub use partitioning::PartitionManager;pub use partitioning::PartitionStats;pub use partitioning::PartitioningStrategy;pub use platform_stats::get_growth_metrics;pub use platform_stats::get_health_indicators;pub use platform_stats::get_platform_snapshot;pub use platform_stats::get_platform_stats;pub use platform_stats::GrowthMetrics;pub use platform_stats::HealthIndicators;pub use platform_stats::PlatformStats;pub use pool::create_pool;pub use pool::create_pool_with_retry;pub use pool::refresh_pool_connections;pub use pool::validate_pool_connections;pub use pool::warmup_pool;pub use pool::RetryConfig;pub use pool::WarmupStrategy;pub use pool_autoscaling::AutoscalingConfig;pub use pool_autoscaling::AutoscalingStats;pub use pool_autoscaling::PoolAutoscaler;pub use pool_autoscaling::ScalingEvent;pub use pool_autoscaling::ScalingEventType;pub use pool_autoscaling::ScalingStrategy;pub use pool_autoscaling::UtilizationMetrics;pub use pool_circuit_breaker::HealthBasedPoolSelector;pub use pool_circuit_breaker::PoolCircuitBreaker;pub use pool_circuit_breaker::PoolCircuitBreakerConfig;pub use pool_circuit_breaker::PoolCircuitState;pub use pool_circuit_breaker::PoolCircuitStats;pub use pool_hooks::AlertEventHandler;pub use pool_hooks::LoggingEventHandler;pub use pool_hooks::MetricsEventHandler;pub use pool_hooks::PoolEvent;pub use pool_hooks::PoolEventHandler;pub use pool_hooks::PoolEventManager;pub use pool_hooks::PoolEventType;pub use pool_monitor::AlertLevel;pub use pool_monitor::CapacityStats;pub use pool_monitor::MonitorConfig;pub use pool_monitor::MonitoringReport;pub use pool_monitor::PoolAlert;pub use pool_monitor::PoolHealth;pub use pool_monitor::PoolMetricsSnapshot;pub use pool_monitor::PoolMonitor;pub use query_builder::Filter;pub use query_builder::FilterValue;pub use query_builder::LogicalOp;pub use query_builder::Operator;pub use query_builder::OrderBy;pub use query_builder::OrderDirection;pub use query_builder::QueryBuilder;pub use query_logger::time_query;pub use query_logger::AggregateStats;pub use query_logger::QueryLogConfig;pub use query_logger::QueryLogger;pub use query_logger::QueryTimer;pub use query_logger::SlowQueryRecord;pub use query_performance_analyzer::AnalyzerConfig;pub use query_performance_analyzer::OptimizationSuggestion;pub use query_performance_analyzer::PerformanceIssue;pub use query_performance_analyzer::PerformanceReport;pub use query_performance_analyzer::QueryAnalysis;pub use query_performance_analyzer::QueryPerformanceAnalyzer;pub use query_performance_analyzer::ReportSummary;pub use query_performance_analyzer::SuggestionType;pub use query_plan::explain_analyze_query;pub use query_plan::explain_query;pub use query_plan::get_expensive_queries;pub use query_plan::ExpensiveQuery;pub use query_plan::QueryPlan;pub use query_plan::QueryPlanNode;pub use query_streaming::BufferedStreamProcessor;pub use query_streaming::QueryStream;pub use query_streaming::StreamConfig;pub use replica::LoadBalanceStrategy;pub use replica::ReplicaConfig;pub use replica::ReplicaHealthStatus;pub use replica::ReplicaPoolManager;pub use replica::ReplicaStatus;pub use replica::SmartDbClient;pub use replica::SmartDbClientBuilder;pub use replica_failover::ClusterStatus;pub use replica_failover::FailoverConfig;pub use replica_failover::FailoverManager;pub use replica_failover::FailoverStrategy;pub use replica_failover::NodeStatus;pub use replica_failover::ReplicaNode;pub use replica_failover::ReplicaRole;pub use retry_policy::detect_idempotency;pub use retry_policy::ErrorClass;pub use retry_policy::Idempotency;pub use retry_policy::RetryPolicy;pub use retry_policy::RetryPolicyConfig;pub use retry_policy::RetryStrategy;pub use schema_validator::detect_orphaned_records;pub use schema_validator::get_all_orphaned_records;pub use schema_validator::get_check_constraints;pub use schema_validator::get_foreign_keys;pub use schema_validator::get_nullable_foreign_key_columns;pub use schema_validator::get_tables_without_primary_keys;pub use schema_validator::validate_schema;pub use schema_validator::CheckConstraintInfo;pub use schema_validator::ForeignKeyInfo;pub use schema_validator::OrphanedRecordInfo;pub use schema_validator::SchemaValidationReport;pub use schema_validator::ValidationIssue;pub use schema_validator::ValidationSeverity;pub use security::AuditAction;pub use security::AuditContext;pub use security::AuditLogEntry;pub use security::AuditLogger;pub use security::ComplianceManager;pub use security::ComplianceReport;pub use security::EncryptedData;pub use security::EncryptionError;pub use security::EncryptionProvider;pub use security::KeyRotationManager;pub use security::PasswordHashingService;pub use sharding::ConsistentHashRing;pub use sharding::ShardCoordinator;pub use sharding::ShardInfo;pub use sharding::ShardKey;pub use sharding::ShardPoolManager;pub use sharding::ShardingStrategy;pub use statement_cache::CacheStats as StatementCacheStats;pub use statement_cache::StatementCache;pub use statement_cache::StatementCacheConfig;pub use table_stats::get_all_table_stats;pub use table_stats::get_database_size;pub use table_stats::get_high_seq_scan_tables;pub use table_stats::get_largest_tables;pub use table_stats::get_table_cache_hit_ratio;pub use table_stats::get_table_index_stats;pub use table_stats::get_table_stats;pub use table_stats::get_unused_indexes;pub use table_stats::CacheHitInfo;pub use table_stats::DatabaseSizeInfo;pub use table_stats::IndexStats;pub use table_stats::SeqScanInfo;pub use table_stats::TableStats;pub use tracing::get_tracer;pub use tracing::init_tracer;pub use tracing::trace_db_operation;pub use tracing::DbTraceConfig;pub use tracing::DbTracer;pub use tracing::QueryMetadata;pub use tracing::SpanContext;pub use tracing::TraceableOperation;pub use transaction::retry_transaction;pub use transaction::retry_transaction_with_isolation;pub use transaction::with_savepoint;pub use transaction::IsolationLevel;pub use transaction::SavepointGuard;pub use transaction::TransactionBuilder;pub use transaction::TransactionExt;pub use transaction::TransactionManager;pub use transaction::TransactionRetryConfig;pub use vacuum_scheduler::TableVacuumInfo as VacuumTableInfo;pub use vacuum_scheduler::VacuumResult;pub use vacuum_scheduler::VacuumScheduler;pub use vacuum_scheduler::VacuumSchedulerConfig;pub use vacuum_scheduler::VacuumStats;pub use vacuum_scheduler::VacuumStrategy;pub use repositories::*;
Modules§
- analytics
- Analytics and materialized views for dashboard metrics
- backup
- Database backup and recovery utilities
- bulk_
operations - Bulk operation optimizations for efficient data manipulation.
- cache
- Redis caching layer for high-performance data access
- cache_
invalidation - Cache invalidation patterns for distributed systems.
- cache_
warming - Cache warming strategies for improved performance.
- circuit_
breaker - Circuit breaker pattern for resilient cache operations
- connection_
diagnostics - Connection pool diagnostics and health monitoring utilities
- connection_
leak_ detector - Connection Leak Detector
- cursor_
pagination - Cursor-based pagination for efficient navigation of large datasets.
- database_
size_ monitor - Database Size Monitor
- error
- Database error types
- event_
notifications - Database event notifications using PostgreSQL LISTEN/NOTIFY
- generic_
repository - Generic repository trait for standardized CRUD operations.
- health_
check - Comprehensive health check system for database monitoring
- helpers
- Helper utilities for common database operations
- index_
analyzer - Index analysis and optimization suggestions
- lock_
monitoring - Database lock monitoring and deadlock detection utilities
- logging
- Enhanced structured logging for database operations.
- maintenance
- Database maintenance utilities for PostgreSQL
- metrics
- Prometheus metrics for database operations
- migration_
runner - Migration Runner
- migration_
utils - Migration utilities for tracking and managing database schema versions
- multi_
region - Multi-region database replication support
- multi_
tier_ cache - Multi-tier caching with L1 (in-memory) and L2 (Redis) layers.
- partitioning
- Database partitioning support for PostgreSQL
- platform_
stats - Platform-wide statistics and aggregations
- pool
- Database connection pool management
- pool_
autoscaling - Connection pool auto-scaling for dynamic load management
- pool_
circuit_ breaker - Connection pool circuit breaker for advanced resilience
- pool_
hooks - Pool event hooks for monitoring connection lifecycle events.
- pool_
monitor - Connection Pool Monitor
- query_
builder - Dynamic query builder with type-safe construction and SQL injection prevention.
- query_
logger - Query logging and slow query detection
- query_
performance_ analyzer - Query Performance Analyzer
- query_
plan - Query execution plan analysis utilities
- query_
streaming - Query result streaming for memory-efficient iteration over large result sets.
- replica
- Read replica support for database connections
- replica_
failover - Replica automatic failover testing and implementation
- repositories
- Database repositories for Kaccy Protocol
- retry_
policy - Query retry policies with idempotency detection and transient error classification
- schema_
validator - Database schema validation and integrity checking
- security
- sharding
- Database sharding utilities for horizontal scaling
- statement_
cache - Prepared statement caching for improved query performance.
- table_
stats - Table statistics and size utilities
- tracing
- OpenTelemetry distributed tracing integration for database operations.
- transaction
- Transaction management with savepoint support
- vacuum_
scheduler - Vacuum Scheduler
Macros§
- nested_
transaction - Macro for executing code within a savepoint