From 14624017872ea7b1d9242b9852e7e49672153290 Mon Sep 17 00:00:00 2001 From: Arthur Roberts Date: Fri, 15 Aug 2025 02:00:06 +0100 Subject: [PATCH] Added a utils file Wanted to separate the higher level config folder stuff from just db module Because the download module will also want to find cache --- scryfall_deser/src/db.rs | 38 +----------------------- scryfall_deser/src/lib.rs | 2 ++ scryfall_deser/src/utils.rs | 59 +++++++++++++++++++++++++++++++++++++ 3 files changed, 62 insertions(+), 37 deletions(-) create mode 100644 scryfall_deser/src/utils.rs diff --git a/scryfall_deser/src/db.rs b/scryfall_deser/src/db.rs index 7bfc940..51b391f 100644 --- a/scryfall_deser/src/db.rs +++ b/scryfall_deser/src/db.rs @@ -1,23 +1,8 @@ -use dir_spec::Dir; use sqlite; use std::fs; use std::path::PathBuf; -const DATA_FOLDER: &str = "scryfall"; -const SQLITE_FILENAME: &str = "scryfall_db.sqlite3"; - -fn get_local_data_folder() -> PathBuf { - let cache_folder = Dir::data_home(); - match cache_folder { - None => { - panic!("Can't find a cache folder - really don't know what the problem is sorry"); - } - Some(mut f) => { - f.push(DATA_FOLDER); - f - } - } -} +use super::utils::{create_cache_folder, get_local_data_folder, SQLITE_FILENAME}; fn get_local_data_sqlite_file() -> PathBuf { let mut folder = get_local_data_folder(); @@ -25,27 +10,6 @@ fn get_local_data_sqlite_file() -> PathBuf { folder } -// NOTE: this should be idempotent - creating a dir always is... right? -pub fn create_cache_folder() { - let f = get_local_data_folder(); - let ret = fs::create_dir(&f); - match ret { - Ok(_) => (), - Err(e) => { - if e.raw_os_error().unwrap() == 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 - ); - } - } -} - fn create_db_sql() -> String { " CREATE TABLE cards ( diff --git a/scryfall_deser/src/lib.rs b/scryfall_deser/src/lib.rs index 5cfe5fa..0ac175d 100644 --- a/scryfall_deser/src/lib.rs +++ b/scryfall_deser/src/lib.rs @@ -6,3 +6,5 @@ pub use crate::deser::ScryfallCard; mod db; pub use db::init_db; + +mod utils; diff --git a/scryfall_deser/src/utils.rs b/scryfall_deser/src/utils.rs new file mode 100644 index 0000000..523b36a --- /dev/null +++ b/scryfall_deser/src/utils.rs @@ -0,0 +1,59 @@ +use dir_spec::Dir; +use std::fs; +use std::path::PathBuf; + +pub const LOCAL_FOLDER: &str = "scryfall"; +pub const SQLITE_FILENAME: &str = "scryfall_db.sqlite3"; + +pub fn get_local_data_folder() -> PathBuf { + let data_folder = Dir::data_home(); + match data_folder { + None => { + panic!("Can't find a data folder - really don't know what the problem is sorry"); + } + Some(mut f) => { + f.push(LOCAL_FOLDER); + f + } + } +} + +pub fn get_local_cache_folder() -> PathBuf { + let cache_folder = Dir::cache_home(); + match cache_folder { + None => { + panic!("Can't find a cache folder - really don't know what the problem is sorry"); + } + Some(mut f) => { + f.push(LOCAL_FOLDER); + f + } + } +} + +fn get_local_data_sqlite_file() -> PathBuf { + let mut folder = get_local_data_folder(); + folder.push(SQLITE_FILENAME); + folder +} + +// NOTE: this should be idempotent - creating a dir always is... right? +pub fn create_cache_folder() { + let f = get_local_data_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 + ); + } + } +}