Add some additional error logging
All checks were successful
Rust / build (push) Successful in 2m8s

This commit is contained in:
Joshua Coles 2024-04-25 13:55:35 +01:00
parent 48f4614b1c
commit 8cf9d86f32
4 changed files with 26 additions and 12 deletions

10
Cargo.lock generated
View File

@ -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",

View File

@ -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"] }

View File

@ -86,7 +86,7 @@ async fn find_updated(db: &sqlx::PgPool, files: ReadDir) -> Vec<UpdatedFile> {
let date_hashes: Vec<DateHash> = 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<String, String> = date_hashes.into_iter()
.map(|dh| (dh.date, dh.sha256))
@ -104,7 +104,14 @@ async fn find_updated(db: &sqlx::PgPool, files: ReadDir) -> Vec<UpdatedFile> {
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<UpdatedFile> {
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 {

View File

@ -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::<Os>();
let pg_spec = testcontainers_modules::postgres::Postgres::default();
let pg_container = tc.run(pg_spec);