Crate kaccy_db

Crate kaccy_db 

Source
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

Type Aliases§

PgPool
An alias for Pool, specialized for Postgres.