things3_core/
lib.rs

1//! Things Core - Core library for Things 3 database access and data models
2//!
3//! This library provides high-performance access to the Things 3 database,
4//! with comprehensive data models and efficient querying capabilities.
5//!
6//! # Features
7//!
8//! - **Async Database Access**: Built on SQLx for type-safe, async database operations
9//! - **Comprehensive Data Models**: Full support for Tasks, Projects, Areas, and Tags
10//! - **Bulk Operations**: Efficient batch operations with transactional guarantees
11//! - **Caching Layer**: High-performance caching with configurable TTL
12//! - **Export Support**: Multiple export formats (JSON, CSV, OPML, Markdown)
13//! - **Observability**: Built-in metrics, logging, and health checks
14//! - **Performance Monitoring**: Query performance tracking and optimization suggestions
15//!
16//! # Quick Start
17//!
18//! ```no_run
19//! use things3_core::{ThingsDatabase, ThingsError};
20//! use std::path::Path;
21//!
22//! # async fn example() -> Result<(), ThingsError> {
23//! // Connect to Things 3 database
24//! let db = ThingsDatabase::new(Path::new("/path/to/things.db")).await?;
25//!
26//! // Get inbox tasks
27//! let tasks = db.get_inbox(None).await?;
28//! println!("Found {} tasks in inbox", tasks.len());
29//!
30//! // Search for tasks
31//! let results = db.search_tasks("meeting").await?;
32//! println!("Found {} matching tasks", results.len());
33//! # Ok(())
34//! # }
35//! ```
36//!
37//! # Examples
38//!
39//! See the [examples directory](https://github.com/GarthDB/rust-things3/tree/main/examples)
40//! for more comprehensive usage examples.
41//!
42//! # Crate Features
43//!
44//! - `default`: Minimal feature set (core functionality only)
45//! - `export-csv`: Enable CSV export support
46//! - `export-opml`: Enable OPML export support
47//! - `observability`: Enable metrics, tracing, and health checks
48//! - `full`: Enable all optional features
49//! - `test-utils`: Enable test utilities (for testing only)
50
51pub mod backup;
52pub mod cache;
53pub mod cache_invalidation_middleware;
54pub mod config;
55pub mod config_hot_reload;
56pub mod config_loader;
57pub mod database;
58pub mod disk_cache;
59pub mod error;
60
61#[cfg(any(feature = "export-csv", feature = "export-opml"))]
62pub mod export;
63
64pub mod mcp_cache_middleware;
65pub mod mcp_config;
66pub mod models;
67
68#[cfg(feature = "observability")]
69pub mod observability;
70
71pub mod performance;
72pub mod query;
73pub mod query_cache;
74pub mod query_performance;
75
76#[cfg(any(test, feature = "test-utils"))]
77pub mod test_utils;
78
79pub use backup::{BackupManager, BackupMetadata, BackupStats};
80pub use cache::{CacheConfig, CacheStats, ThingsCache};
81pub use cache_invalidation_middleware::{
82    CacheInvalidationHandler, CacheInvalidationMiddleware, InvalidationConfig, InvalidationEvent,
83    InvalidationEventType, InvalidationRule, InvalidationStats, InvalidationStrategy,
84};
85pub use config::ThingsConfig;
86pub use config_hot_reload::{
87    ConfigChangeHandler, ConfigHotReloader, ConfigHotReloaderWithHandler,
88    DefaultConfigChangeHandler,
89};
90pub use config_loader::{load_config, load_config_from_env, load_config_with_paths, ConfigLoader};
91pub use database::{
92    get_default_database_path, ComprehensiveHealthStatus, DatabasePoolConfig, DatabaseStats,
93    PoolHealthStatus, PoolMetrics, SqliteOptimizations, ThingsDatabase,
94};
95pub use disk_cache::{DiskCache, DiskCacheConfig, DiskCacheStats};
96pub use error::{Result, ThingsError};
97
98#[cfg(any(feature = "export-csv", feature = "export-opml"))]
99pub use export::{DataExporter, ExportConfig, ExportData, ExportFormat};
100
101pub use mcp_cache_middleware::{MCPCacheConfig, MCPCacheEntry, MCPCacheMiddleware, MCPCacheStats};
102pub use mcp_config::McpServerConfig;
103pub use models::*;
104// Explicitly re-export DeleteChildHandling for clarity
105pub use models::DeleteChildHandling;
106
107#[cfg(feature = "observability")]
108pub use observability::{
109    CheckResult, HealthStatus, ObservabilityConfig, ObservabilityError, ObservabilityManager,
110    ThingsMetrics,
111};
112
113pub use performance::{
114    CacheMetrics, ComprehensivePerformanceSummary, OperationMetrics, PerformanceMonitor,
115    PerformanceStats, PerformanceSummary, QueryMetrics,
116};
117pub use query_cache::{QueryCache, QueryCacheConfig, QueryCacheStats};
118pub use query_performance::{
119    ImplementationEffort, OptimizationPriority, OptimizationType, QueryContext,
120    QueryOptimizationSuggestion, QueryPerformanceMetrics, QueryPerformanceStats,
121    QueryPerformanceSummary, QueryPerformanceTracker,
122};
123
124/// Re-export commonly used types
125pub use chrono::{DateTime, NaiveDate, Utc};
126pub use serde::{Deserialize, Serialize};
127pub use uuid::Uuid;