Expand description
Database layer for the soar package manager.
This crate provides database management for soar, including:
- Connection management: Separate connections for core and metadata 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 two types of SQLite databases:
- Core database (
core.db): Tracks installed packages - Metadata databases (one per repository): Contains package metadata
§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>toOption<Vec<T>>.