This commit is contained in:
parent
48f4614b1c
commit
8cf9d86f32
10
Cargo.lock
generated
10
Cargo.lock
generated
@ -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",
|
||||
|
||||
@ -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"] }
|
||||
|
||||
21
src/main.rs
21
src/main.rs
@ -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 {
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user