diff --git a/scryfall_deser/src/db.rs b/scryfall_deser/src/db.rs index 51b391f..80d9ffa 100644 --- a/scryfall_deser/src/db.rs +++ b/scryfall_deser/src/db.rs @@ -2,6 +2,7 @@ use sqlite; use std::fs; use std::path::PathBuf; +use super::utils::get_local_cache_folder; use super::utils::{create_cache_folder, get_local_data_folder, SQLITE_FILENAME}; fn get_local_data_sqlite_file() -> PathBuf { @@ -30,6 +31,8 @@ pub fn init_db() -> bool { create_cache_folder(); let sqlite_file = get_local_data_sqlite_file(); println!("sqlite file location: {}", sqlite_file.display()); + // TESTING + println!("cache folder: {}", get_local_cache_folder().display()); let _res = fs::remove_file(&sqlite_file); // TODO actually check result for whether it was a permissions thing or something let connection = sqlite::open(sqlite_file).unwrap(); diff --git a/scryfall_deser/src/download.rs b/scryfall_deser/src/download.rs index ba8e129..21bd385 100644 --- a/scryfall_deser/src/download.rs +++ b/scryfall_deser/src/download.rs @@ -5,7 +5,7 @@ use ureq; use uuid::Uuid; #[allow(dead_code)] -#[derive(Deserialize, Debug)] +#[derive(Deserialize, Debug, Clone)] struct ScryfallBulkData { pub id: Uuid, pub uri: String, @@ -20,7 +20,7 @@ struct ScryfallBulkData { } #[allow(dead_code)] -#[derive(Deserialize, Debug)] +#[derive(Deserialize, Debug, Clone)] struct ScryfallBulk { pub object: String, pub has_more: bool, @@ -56,11 +56,17 @@ pub fn download_latest( let mut download_uri = String::new(); for scryfall_bulk in bulk_body.data { - if serde_json::to_string(&stype).unwrap() == scryfall_bulk.stype { + if serde_json::to_string(&stype) + .unwrap() + .contains(&scryfall_bulk.stype) + { download_uri = scryfall_bulk.download_uri; + break; } } assert!(!download_uri.is_empty()); + return Ok(()); + // Just while testing - don't need to download 150MB every time... let cards_response = ureq::get(download_uri) .header("User-Agent", "Arthur's Card Finger Testing v0.1") .header("Accept", "application/json") diff --git a/scryfall_deser/src/utils.rs b/scryfall_deser/src/utils.rs index 523b36a..4944c51 100644 --- a/scryfall_deser/src/utils.rs +++ b/scryfall_deser/src/utils.rs @@ -38,7 +38,7 @@ fn get_local_data_sqlite_file() -> PathBuf { } // NOTE: this should be idempotent - creating a dir always is... right? -pub fn create_cache_folder() { +pub fn create_data_folder() { let f = get_local_data_folder(); let ret = fs::create_dir(&f); match ret { @@ -57,3 +57,24 @@ pub fn create_cache_folder() { } } } + +// NOTE: this should be idempotent - creating a dir always is... right? +pub fn create_cache_folder() { + let f = get_local_cache_folder(); + let ret = fs::create_dir(&f); + match ret { + Ok(_) => (), + Err(e) => { + if e.raw_os_error().unwrap() == 17 { + // 17 = this is folder already exists - which is fine for us + // TODO probably should use e.kind() for better readability + return; + } + panic!( + "Couldn't create folder within your cache folder: {}. Error is {}", + f.display(), + e + ); + } + } +}