docs: document src/services/types.rs, src/modes/common.rs, and src/services/error.rs

Co-authored-by: aider (openai/andrew/openrouter/sonoma-sky-alpha) <aider@aider.chat>
This commit is contained in:
Andrew Phillips
2025-09-10 15:27:45 -03:00
parent 3ddecc9ed5
commit 9f48d7980b
4 changed files with 99 additions and 24 deletions

View File

@@ -1,22 +1,44 @@
use thiserror::Error;
/// Core error types used across services for consistent error handling.
///
/// This enum centralizes errors from database, I/O, validation, and other operations.
/// It implements Error and Debug for propagation and logging. Use this for all service-level errors.
///
/// # Variants
///
/// * `Database(rusqlite::Error)` - Wraps SQLite errors from queries or transactions.
/// * `Io(std::io::Error)` - Wraps I/O errors from file operations or streams.
/// * `ItemNotFound(i64)` - Specific item not found by ID.
/// * `ItemNotFoundGeneric` - Generic item not found (no ID specified).
/// * `InvalidInput(String)` - User or config input validation failure with message.
/// * `Compression(String)` - Compression/decompression errors with details.
/// * `Other(anyhow::Error)` - Catch-all for other anyhow-wrapped errors.
/// * `Migration(rusqlite_migration::Error)` - Database migration failures.
#[derive(Error, Debug)]
pub enum CoreError {
#[error("Database error: {0}")]
/// Database operation failed.
Database(#[from] rusqlite::Error),
#[error("I/O error: {0}")]
/// File or stream I/O operation failed.
Io(#[from] std::io::Error),
#[error("Item not found with id {0}")]
/// Item with the specified ID does not exist in the database.
ItemNotFound(i64),
#[error("Item not found")]
/// Item does not exist (no specific ID).
ItemNotFoundGeneric,
#[error("Invalid input: {0}")]
/// Input validation failed.
InvalidInput(String),
#[error("Compression error: {0}")]
/// Compression or decompression operation failed.
Compression(String),
#[error(transparent)]
/// Other unexpected error.
Other(#[from] anyhow::Error),
#[error("Migration error: {0}")]
/// Database schema migration failed.
Migration(#[from] rusqlite_migration::Error),
}