Crate soar_db

Crate soar_db 

Source
Expand description

Database layer for the soar package manager.

This crate provides database management for soar, including:

  • Connection management: Separate connections for core, metadata, and nests databases
  • Models: Diesel ORM models for all database tables
  • Repositories: Type-safe CRUD operations using the repository pattern
  • Migrations: Automatic schema migrations using diesel_migrations

§Database Architecture

Soar uses three types of SQLite databases:

  • Core database (core.db): Tracks installed packages
  • Metadata databases (one per repository): Contains package metadata
  • Nests database (nests.db): Stores nest configurations

§Example

use soar_db::connection::DatabaseManager;
use soar_db::repository::core::CoreRepository;
use soar_db::repository::metadata::MetadataRepository;

// Create database manager
let mut manager = DatabaseManager::new("/path/to/db")?;

// Add repository metadata
manager.add_metadata_db("pkgforge", "/path/to/pkgforge.db")?;

// Query installed packages (DbConnection derefs to SqliteConnection)
let installed = CoreRepository::list_all(manager.core())?;

// Search for packages
if let Some(metadata) = manager.metadata("pkgforge") {
    let packages = MetadataRepository::search(metadata, "firefox")?;
}

Modules§

connection
Database connection management.
error
Error types for soar-db.
migration
models
repository
Repository pattern implementations for database operations.
schema

Macros§

json_vec
Helper macro to convert Option<serde_json::Value> to Option<Vec<T>>.