diff --git a/src/main.rs b/src/main.rs index df01841..a0b8c53 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,15 +1,17 @@ -mod database; -mod scanner; mod cli; +mod database; mod output; +mod scanner; -use clap::Parser; use anyhow::Result; +use clap::Parser; #[tokio::main] async fn main() -> Result<()> { - let connection = sqlite::open("/tmp/deduplicator.db")?; - database::setup(&connection)?; + let connection = sqlite::open("/tmp/deduplicator.db").and_then(|conn| { + database::setup(&conn).ok(); + Ok(conn) + })?; let duplicates = scanner::duplicates(cli::App::parse(), &connection)?; output::print(duplicates); diff --git a/src/scanner.rs b/src/scanner.rs index 5c6d167..1442cd2 100644 --- a/src/scanner.rs +++ b/src/scanner.rs @@ -76,15 +76,17 @@ fn scan(app_opts: App, connection: &sqlite::Connection) -> Result> { } fn index_files(files: Vec, connection: &sqlite::Connection) { - files - .into_iter() + let hashed: Vec = files + .into_par_iter() .map(|file| { let hash = hash_file(&file).unwrap(); database::File { path: file, hash } }) - .for_each(|file| { - database::put(&file, connection).unwrap(); - }); + .collect(); + + hashed.into_iter().for_each(|file| { + database::put(&file, connection).unwrap(); + }); } pub fn hash_file(filepath: &str) -> Result {