diff --git a/Cargo.lock b/Cargo.lock index 2657a98..f105ecf 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -99,10 +99,20 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "anyhow" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" +dependencies = [ + "backtrace", +] + [[package]] name = "arc-ingester" version = "0.1.1" dependencies = [ + "anyhow", "chrono", "clap", "flate2", diff --git a/Cargo.toml b/Cargo.toml index ed8f3d2..cb98361 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,3 +30,4 @@ chrono = { version = "0.4.33", features = ["serde"] } uuid = { version = "1.7.0", features = ["serde"] } testcontainers = "0.15.0" testcontainers-modules = { version = "0.3.6", features = ["postgres"] } +anyhow = { version = "1.0.82", features = ["backtrace"] } diff --git a/src/main.rs b/src/main.rs index b8952d3..a8c69ed 100644 --- a/src/main.rs +++ b/src/main.rs @@ -86,7 +86,7 @@ async fn find_updated(db: &sqlx::PgPool, files: ReadDir) -> Vec { let date_hashes: Vec = sqlx::query_as("SELECT date, sha256 FROM raw_files") .fetch_all(db) .await - .unwrap(); + .expect("Failed to fetch date hashes from database"); let date_hashes: HashMap = date_hashes.into_iter() .map(|dh| (dh.date, dh.sha256)) @@ -104,7 +104,14 @@ async fn find_updated(db: &sqlx::PgPool, files: ReadDir) -> Vec { let bytes = std::fs::read(&path).unwrap(); let mut decoder = flate2::bufread::GzDecoder::new(&bytes[..]); let mut string = String::new(); - decoder.read_to_string(&mut string).unwrap(); + match decoder.read_to_string(&mut string) { + Err(err) => { + eprintln!("Failed to parse file {path:?}"); + eprintln!("Error {err:?}"); + panic!("Error") + } + _ => {} + } Some(UpdatedFile { date: date.clone(), @@ -118,18 +125,20 @@ async fn find_updated(db: &sqlx::PgPool, files: ReadDir) -> Vec { async fn main() { let cli = Cli::parse(); let daily_exports = cli.root.join("Export/JSON/Daily"); - let files = std::fs::read_dir(daily_exports).unwrap(); + let files = std::fs::read_dir(daily_exports) + .expect("Failed to access daily exports directory"); let db = sqlx::PgPool::connect(&cli.conn) .await - .unwrap(); + .expect("Failed to connect to postgres database"); sqlx::migrate!() .run(&db) .await - .unwrap(); + .expect("Failed to migrate postgres database"); - let need_refresh = find_updated(&db, files).await; + let need_refresh = find_updated(&db, files) + .await; // Refresh the database with the new files for updated_file in &need_refresh { diff --git a/src/t1.rs b/src/t1.rs index 80efbe4..f97a9ec 100644 --- a/src/t1.rs +++ b/src/t1.rs @@ -3,12 +3,6 @@ use testcontainers::core::env::Os; #[tokio::main] async fn main() { - // let files = std::fs::read_dir("/Users/joshuacoles/Library/Mobile Documents/iCloud~com~bigpaua~LearnerCoacher/Documents/Export/JSON/Daily/").unwrap(); - // for file in files { - // let file = file.unwrap().path(); - // println!("{}\t{}", file.display(), sha256::try_digest(&file).unwrap()) - // } - // let tc = testcontainers::clients::Cli::new::(); let pg_spec = testcontainers_modules::postgres::Postgres::default(); let pg_container = tc.run(pg_spec);