use camino::Utf8PathBuf;
use color_eyre::Result;
use episko_lib::{config::config_handler::ConfigHandler, files::File, metadata::Metadata};
use crate::connect_to_db;
pub async fn validate_manifest(
file: &Utf8PathBuf,
config_handler: &mut ConfigHandler,
) -> Result<()> {
Metadata::validate_file(file.as_std_path())?;
cache_manifest(file, config_handler).await?;
Ok(())
}
pub async fn cache_manifest(file: &Utf8PathBuf, config_handler: &mut ConfigHandler) -> Result<()> {
let db = connect_to_db(config_handler.config()).await?;
let metadata = Metadata::from_file(file.as_std_path())?;
if metadata.is_cached(&db).await? {
metadata.update_in_db(&db).await?;
} else {
metadata.write_to_db(&db).await?;
}
config_handler.add_saved_file(metadata.directory());
config_handler.save_config()?;
Ok(())
}