mod internal;
use std::path::Path;
use anyhow::Result;
use rusqlite::Connection;
use super::{Forge, ForgeReader};
#[derive(Debug, Default)]
pub struct SyncStats {
pub discovered: usize,
pub resolved: usize,
pub pending: usize,
pub errors: usize,
pub cache_hits: usize,
}
pub fn run(conn: &Connection, reader: &dyn ForgeReader, repo: &str) -> Result<SyncStats> {
internal::sync_forge(conn, reader, repo)
}
pub fn status(conn: &Connection, repo: &str) -> Result<SyncStats> {
internal::get_status(conn, repo)
}
pub fn sync_limited(
conn: &Connection,
reader: &dyn ForgeReader,
repo: &str,
limit: usize,
) -> Result<SyncStats> {
internal::sync_with_limit(conn, reader, repo, limit)
}
pub fn start_background(db_path: &Path, repo: &str, detected: &Forge) -> Result<u32> {
internal::start_background_sync(db_path, repo, detected)
}
pub fn is_running(repo: &str) -> Option<u32> {
internal::is_sync_running(repo)
}
pub fn log_path(repo: &str) -> std::path::PathBuf {
internal::log_file_path(repo)
}