turbovault_vault/
lib.rs

1//! # Vault Manager
2//!
3//! Vault operations, file watching, and atomic operations.
4//!
5//! This crate provides the core vault management functionality including:
6//! - File reading and writing with error handling
7//! - Real-time file system watching
8//! - Atomic operations with transaction support
9//! - Edit engine for advanced file modifications
10//! - Diff-based updates with fuzzy matching
11//!
12//! ## Quick Start
13//!
14//! ```no_run
15//! use turbovault_vault::VaultManager;
16//! use turbovault_core::ServerConfig;
17//! use std::path::PathBuf;
18//!
19//! # fn main() -> Result<(), Box<dyn std::error::Error>> {
20//! // Create a vault manager
21//! let config = ServerConfig::default();
22//! let manager = VaultManager::new(config)?;
23//!
24//! // Read a file
25//! let path = PathBuf::from("notes/example.md");
26//! let _vault_path = manager.vault_path();
27//!
28//! # Ok(())
29//! # }
30//! ```
31//!
32//! ## Core Modules
33//!
34//! ### Manager
35//!
36//! [`manager::VaultManager`] is the primary interface for vault operations:
37//! - Read/write files
38//! - Query metadata
39//! - List files
40//! - Traverse directory structure
41//!
42//! ### File Watching
43//!
44//! [`watcher::VaultWatcher`] monitors the vault for changes:
45//! - File creates, modifies, deletes
46//! - Directory changes
47//! - Debounced events
48//! - Configurable filtering
49//!
50//! Example:
51//! ```
52//! use turbovault_vault::WatcherConfig;
53//!
54//! let _config = WatcherConfig::default();
55//! // Watcher runs in background, emit events via channel
56//! ```
57//!
58//! ### Atomic Operations
59//!
60//! [`atomic::AtomicFileOps`] ensures data integrity:
61//! - Atomic writes (write-to-temp then rename)
62//! - Transaction support
63//! - Rollback on failure
64//!
65//! ### Edit Engine
66//!
67//! [`edit::EditEngine`] provides advanced editing capabilities:
68//! - Search and replace with context
69//! - Block-based edits
70//! - Diff-based fuzzy matching
71//! - Hash verification
72//!
73//! Example:
74//! ```
75//! use turbovault_vault::EditEngine;
76//!
77//! let _edit_engine = EditEngine::new();
78//! // Use edit_engine for advanced file modifications
79//! ```
80//!
81//! ## Thread Safety
82//!
83//! All components are thread-safe:
84//! - `VaultManager` uses `Arc<RwLock<...>>` internally
85//! - Safe to share across async tasks
86//! - Concurrent read access with exclusive write access
87//!
88//! ## Error Handling
89//!
90//! All operations return [`turbovault_core::Result<T>`]:
91//! - File not found errors
92//! - Permission errors
93//! - Invalid paths
94//! - Encoding errors
95//! - Atomicity violations
96
97pub mod atomic;
98pub mod edit;
99pub mod manager;
100pub mod watcher;
101
102pub use atomic::{AtomicFileOps, FileOp, TransactionResult};
103pub use edit::{EditEngine, EditResult, SearchReplaceBlock, compute_hash};
104pub use manager::VaultManager;
105pub use turbovault_core::prelude::*;
106pub use watcher::{VaultEvent, VaultWatcher, WatcherConfig};
107
108pub mod prelude {
109    pub use crate::atomic::*;
110    pub use crate::edit::*;
111    pub use crate::manager::*;
112    pub use crate::watcher::*;
113    pub use turbovault_core::prelude::*;
114}