kaccy_db/
lib.rs

1//! Database layer for Kaccy Protocol
2//!
3//! This crate provides database connection pooling, query abstractions,
4//! Redis caching, read replica support, index analysis, analytics,
5//! backup/recovery utilities, database sharding, multi-region replication,
6//! security features (encryption, sanitization, audit logging),
7//! real-time event notifications (LISTEN/NOTIFY), and
8//! comprehensive observability for PostgreSQL using SQLx.
9
10pub mod analytics;
11pub mod backup;
12pub mod bulk_operations;
13pub mod cache;
14pub mod cache_invalidation;
15pub mod cache_warming;
16pub mod circuit_breaker;
17pub mod connection_diagnostics;
18pub mod connection_leak_detector;
19pub mod cursor_pagination;
20pub mod database_size_monitor;
21pub mod error;
22pub mod event_notifications;
23pub mod generic_repository;
24pub mod health_check;
25pub mod helpers;
26pub mod index_analyzer;
27pub mod lock_monitoring;
28pub mod logging;
29pub mod maintenance;
30pub mod metrics;
31pub mod migration_runner;
32pub mod migration_utils;
33pub mod multi_region;
34pub mod multi_tier_cache;
35pub mod partitioning;
36pub mod platform_stats;
37pub mod pool;
38pub mod pool_autoscaling;
39pub mod pool_circuit_breaker;
40pub mod pool_hooks;
41pub mod pool_monitor;
42pub mod query_builder;
43pub mod query_logger;
44pub mod query_performance_analyzer;
45pub mod query_plan;
46pub mod query_streaming;
47pub mod replica;
48pub mod replica_failover;
49pub mod repositories;
50pub mod retry_policy;
51pub mod schema_validator;
52// Security module disabled - needs sqlx offline mode and Rust 1.85 string literal fixes
53pub mod security;
54pub mod sharding;
55pub mod statement_cache;
56pub mod table_stats;
57pub mod tracing;
58pub mod transaction;
59pub mod vacuum_scheduler;
60
61pub use analytics::{
62    AnalyticsService, DailyStats, DashboardMetrics, OhlcData, PlatformVolumeHistory, PriceHistory,
63    RefreshConfig, TokenMetricsSummary, UserActivitySummary, VolumeHistory,
64};
65pub use backup::{
66    get_database_stats, verify_database_integrity, BackupConfig, BackupManager, BackupMetadata,
67    DatabaseStats, PitrConfig,
68};
69pub use bulk_operations::{BulkDeleter, BulkInserter, BulkUpdater};
70pub use cache::{keys as cache_keys, CacheConfig, CacheStats, CachedRepository, RedisCache};
71pub use cache_invalidation::{
72    CascadeRule, InvalidationConfig, InvalidationEvent, InvalidationManager, InvalidationType,
73    TagRegistry,
74};
75pub use cache_warming::{CacheDataSource, CacheWarmer, CacheWarmingConfig, WarmingStrategy};
76pub use circuit_breaker::{
77    CircuitBreaker, CircuitBreakerConfig, CircuitBreakerStats, CircuitState,
78};
79pub use connection_diagnostics::{
80    check_connection_health, find_long_running_queries, get_active_connections,
81    get_pool_diagnostics, get_pool_stats, ActiveConnection, ConnectionHealth, ConnectionIssue,
82    IssueType, LongRunningQuery, PoolDiagnostics, PoolStats, Severity,
83};
84pub use connection_leak_detector::{
85    LeakDetector, LeakDetectorConfig, LeakReport, LeakStats, TrackedConnection,
86};
87pub use cursor_pagination::{
88    Connection, Cursor, CursorBuilder, CursorPagination, Direction, Edge, PageInfo,
89};
90pub use database_size_monitor::{
91    CapacityForecast, DatabaseSizeMonitor, DatabaseSnapshot, GrowthStats, SizeAlert, SizeAlertType,
92    SizeMonitorConfig, SizeReport, TableSize,
93};
94pub use error::{DbError, Result};
95pub use event_notifications::{
96    DatabaseEvent, EventHandlerFn, EventListener, ListenerConfig, NotificationStats,
97    NotificationTriggers, PostgresNotificationTriggers,
98};
99pub use generic_repository::{CachedGenericRepository, Page, Pagination, Repository};
100pub use health_check::{
101    perform_health_check, quick_health_check, HealthCategory, HealthCheckConfig, HealthCheckResult,
102    HealthStatus, SystemHealthReport,
103};
104pub use helpers::{
105    calculate_offset, calculate_percentage, column_exists, execute_raw, format_bytes,
106    get_database_time, parse_decimal, parse_uuid, sanitize_column_name, sanitize_table_name,
107    table_exists, PaginationMeta,
108};
109pub use index_analyzer::{
110    AnalysisSummary, ExistingIndex, IndexAnalysis, IndexAnalyzer, IndexSuggestion,
111    IndexSuggestionType, Priority, UnusedIndex,
112};
113pub use lock_monitoring::{
114    detect_deadlocks, get_blocking_queries, get_current_locks, get_lock_wait_stats,
115    kill_blocking_query, BlockingQuery, DeadlockInfo, LockInfo, LockType, LockWaitStats,
116};
117pub use logging::{
118    AnomalyDetector, DbContext, LogLevel, PerformanceTracker, QueryLogEntry, QueryStats,
119};
120pub use maintenance::{
121    analyze_table, auto_vacuum_tables, get_bloated_tables, get_tables_needing_vacuum,
122    reindex_table, vacuum_analyze_table, vacuum_table, MaintenanceOperation, MaintenanceResult,
123    TableBloatInfo, TableVacuumInfo,
124};
125pub use metrics::{
126    cache_hit_rate, gather_metrics, record_cache_error, record_cache_hit, record_cache_miss,
127    record_pool_stats, register_metrics, MetricsTimer,
128};
129pub use migration_runner::{
130    Migration, MigrationConfig, MigrationHistory, MigrationResult, MigrationRunner,
131};
132pub use migration_utils::{
133    get_migration_status, get_schema_version, is_migration_applied, list_applied_migrations,
134    verify_schema_integrity, MigrationInfo, MigrationStatus, SchemaIntegrity,
135};
136pub use multi_region::{MultiRegionPoolManager, Region, RegionalPoolConfig, ReplicationLag};
137pub use multi_tier_cache::{MultiTierCache, MultiTierCacheConfig, MultiTierStats};
138pub use partitioning::{
139    PartitionDefinition, PartitionInterval, PartitionManager, PartitionStats, PartitioningStrategy,
140};
141pub use platform_stats::{
142    get_growth_metrics, get_health_indicators, get_platform_snapshot, get_platform_stats,
143    GrowthMetrics, HealthIndicators, PlatformStats,
144};
145pub use pool::{
146    create_pool, create_pool_with_retry, refresh_pool_connections, validate_pool_connections,
147    warmup_pool, RetryConfig, WarmupStrategy,
148};
149pub use pool_autoscaling::{
150    AutoscalingConfig, AutoscalingStats, PoolAutoscaler, ScalingEvent, ScalingEventType,
151    ScalingStrategy, UtilizationMetrics,
152};
153pub use pool_circuit_breaker::{
154    HealthBasedPoolSelector, PoolCircuitBreaker, PoolCircuitBreakerConfig, PoolCircuitState,
155    PoolCircuitStats,
156};
157pub use pool_hooks::{
158    AlertEventHandler, LoggingEventHandler, MetricsEventHandler, PoolEvent, PoolEventHandler,
159    PoolEventManager, PoolEventType,
160};
161pub use pool_monitor::{
162    AlertLevel, CapacityStats, MonitorConfig, MonitoringReport, PoolAlert, PoolHealth,
163    PoolMetricsSnapshot, PoolMonitor,
164};
165pub use query_builder::{
166    Filter, FilterValue, LogicalOp, Operator, OrderBy, OrderDirection, QueryBuilder,
167};
168pub use query_logger::{
169    time_query, AggregateStats, QueryLogConfig, QueryLogger, QueryTimer, SlowQueryRecord,
170};
171pub use query_performance_analyzer::{
172    AnalyzerConfig, OptimizationSuggestion, PerformanceIssue, PerformanceReport, QueryAnalysis,
173    QueryPerformanceAnalyzer, ReportSummary, SuggestionType,
174};
175pub use query_plan::{
176    explain_analyze_query, explain_query, get_expensive_queries, ExpensiveQuery, QueryPlan,
177    QueryPlanNode,
178};
179pub use query_streaming::{BufferedStreamProcessor, QueryStream, StreamConfig};
180pub use replica::{
181    LoadBalanceStrategy, ReplicaConfig, ReplicaHealthStatus, ReplicaPoolManager, ReplicaStatus,
182    SmartDbClient, SmartDbClientBuilder,
183};
184pub use replica_failover::{
185    ClusterStatus, FailoverConfig, FailoverManager, FailoverStrategy, NodeStatus, ReplicaNode,
186    ReplicaRole,
187};
188pub use repositories::*;
189pub use retry_policy::{
190    detect_idempotency, ErrorClass, Idempotency, RetryPolicy, RetryPolicyConfig, RetryStrategy,
191};
192pub use schema_validator::{
193    detect_orphaned_records, get_all_orphaned_records, get_check_constraints, get_foreign_keys,
194    get_nullable_foreign_key_columns, get_tables_without_primary_keys, validate_schema,
195    CheckConstraintInfo, ForeignKeyInfo, OrphanedRecordInfo, SchemaValidationReport,
196    ValidationIssue, ValidationSeverity,
197};
198pub use security::{
199    AuditAction, AuditContext, AuditLogEntry, AuditLogger, ComplianceManager, ComplianceReport,
200    EncryptedData, EncryptionError, EncryptionProvider, KeyRotationManager, PasswordHashingService,
201};
202pub use sharding::{
203    ConsistentHashRing, ShardCoordinator, ShardInfo, ShardKey, ShardPoolManager, ShardingStrategy,
204};
205pub use sqlx::PgPool;
206pub use statement_cache::{
207    CacheStats as StatementCacheStats, StatementCache, StatementCacheConfig,
208};
209pub use table_stats::{
210    get_all_table_stats, get_database_size, get_high_seq_scan_tables, get_largest_tables,
211    get_table_cache_hit_ratio, get_table_index_stats, get_table_stats, get_unused_indexes,
212    CacheHitInfo, DatabaseSizeInfo, IndexStats, SeqScanInfo, TableStats,
213};
214pub use tracing::{
215    get_tracer, init_tracer, trace_db_operation, DbTraceConfig, DbTracer, QueryMetadata,
216    SpanContext, TraceableOperation,
217};
218pub use transaction::{
219    retry_transaction, retry_transaction_with_isolation, with_savepoint, IsolationLevel,
220    SavepointGuard, TransactionBuilder, TransactionExt, TransactionManager, TransactionRetryConfig,
221};
222pub use vacuum_scheduler::{
223    TableVacuumInfo as VacuumTableInfo, VacuumResult, VacuumScheduler, VacuumSchedulerConfig,
224    VacuumStats, VacuumStrategy,
225};