Crate turbovault_core

Crate turbovault_core 

Source
Expand description

§TurboVault Core

Core data models, error types, and configuration for the Obsidian vault management system. This crate defines the canonical types that all other crates depend on.

§Architecture Principles

  • No External Crate Dependencies Beyond Serialization: Only serde + basic Rust stdlib
  • Type-Driven Design: Strong types replace string-based APIs
  • Zero Panic in Libraries: All errors are Result<T, ObsidianError>
  • Builder Pattern for Complex Types: Configuration structs use builders
  • Immutable by Default: Mutation through explicit methods only

§Core Modules

  • models - Core vault data types (VaultFile, Link, Frontmatter, etc.)
  • error - Comprehensive error types and Result aliases
  • config - Server and vault configuration structures
  • validation - Content validation framework
  • metrics - Performance monitoring and statistics
  • multi_vault - Multi-vault management support
  • profiles - Configuration profiles for different environments
  • utils - Utility functions and builders

§Usage Examples

§Working with Vault Files

use turbovault_core::prelude::*;
use std::path::PathBuf;

// Create a vault file metadata
let metadata = FileMetadata {
    path: PathBuf::from("my-note.md"),
    size: 1024,
    created_at: 0.0,
    modified_at: 1234567890.0,
    checksum: "abc123".to_string(),
    is_attachment: false,
};

§Error Handling

use turbovault_core::prelude::*;
use std::path::PathBuf;

fn process_vault() -> Result<()> {
    // All operations return Result<T>
    let _path = PathBuf::from("vault.md");
    // Error handling with type-safe error variants
    let _err = Error::parse_error("Invalid markdown content");
    Ok(())
}

§Configuration

use turbovault_core::prelude::*;

let config = ServerConfig::default();
// Access configuration properties safely
let _config_has_vaults = !config.vaults.is_empty();

§Type Safety

The core types use enums and strong types instead of strings:

  • LinkType - Distinguishes wikilinks, embeds, markdown links, etc.
  • Severity - Validation issue severity levels
  • models - Rich data models with position tracking

Re-exports§

pub use error::Error;
pub use error::Result;
pub use metrics::Counter;
pub use metrics::Histogram;
pub use metrics::HistogramStats;
pub use metrics::HistogramTimer;
pub use metrics::MetricsContext;
pub use multi_vault::MultiVaultManager;
pub use multi_vault::VaultInfo;
pub use profiles::ConfigProfile;
pub use utils::CSVBuilder;
pub use utils::PathValidator;
pub use utils::TransactionBuilder;
pub use utils::to_json_string;
pub use validation::CompositeValidator;
pub use validation::ContentValidator;
pub use validation::FrontmatterValidator;
pub use validation::LinkValidator;
pub use validation::Severity;
pub use validation::ValidationIssue;
pub use validation::ValidationReport;
pub use validation::ValidationSummary;
pub use validation::Validator;
pub use config::*;
pub use models::*;

Modules§

cache
Cross-platform persistent cache for vault configuration and state
config
Configuration types for the Obsidian server.
error
Error types for the Obsidian system.
metrics
Lock-free metrics infrastructure for high-performance observability
models
Core data models representing Obsidian vault elements.
multi_vault
Multi-vault management system for enterprise deployments
prelude
Re-export commonly used types
profiles
Pre-configured profiles for different deployment scenarios
resilience
Resilience patterns: retry logic, circuit breakers, graceful degradation
utils
Shared utilities for operations across turbovault crates.
validation
Content validation system.