From 4f095c55ecf66cac8efb3723f9c19afc23ec3e26 Mon Sep 17 00:00:00 2001 From: Arthur Roberts Date: Fri, 15 Aug 2025 00:55:47 +0100 Subject: [PATCH] Moved some files and started skeleton db --- scryfall_deser/Cargo.toml | 2 ++ scryfall_deser/src/db.rs | 34 ++++++++++++++++++++++++++++++++++ scryfall_deser/src/lib.rs | 5 +++-- scryfall_deser/src/main.rs | 2 +- 4 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 scryfall_deser/src/db.rs diff --git a/scryfall_deser/Cargo.toml b/scryfall_deser/Cargo.toml index 96c1f76..119e48b 100644 --- a/scryfall_deser/Cargo.toml +++ b/scryfall_deser/Cargo.toml @@ -9,8 +9,10 @@ edition = "2021" chrono = { version = "0.4.39", features = ["serde"] } clap = { version = "4.5.42", features = ["derive"] } closestmatch = "0.1.2" +dir_spec = "0.2.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0.138" +sqlite = "0.37.0" tempfile = "3.20.0" ureq = { version = "3.0.12", features = ["json"] } uuid = { version = "1.12.1", features = ["v4", "serde"] } diff --git a/scryfall_deser/src/db.rs b/scryfall_deser/src/db.rs new file mode 100644 index 0000000..33038fc --- /dev/null +++ b/scryfall_deser/src/db.rs @@ -0,0 +1,34 @@ +use dir_spec::Dir; +use sqlite; +use std::fs; + +const CACHE_FOLDER: &str = "scryfall_cache"; + +// NOTE: this should be idempotent +pub fn create_cache_folder() { + 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(CACHE_FOLDER); + let ret = fs::create_dir(&f); + match ret { + Ok(_) => (), + Err(_e) => { + let err_string = format!( + "Couldn't create folder within your cache folder: {}", + f.display() + ); + panic!("{}", err_string); + } + } + } + } +} + +pub fn init_db() -> bool { + create_cache_folder(); + true +} diff --git a/scryfall_deser/src/lib.rs b/scryfall_deser/src/lib.rs index f2dd881..5cfe5fa 100644 --- a/scryfall_deser/src/lib.rs +++ b/scryfall_deser/src/lib.rs @@ -1,7 +1,8 @@ mod download; - pub use crate::download::download_latest; mod deser; - pub use crate::deser::ScryfallCard; + +mod db; +pub use db::init_db; diff --git a/scryfall_deser/src/main.rs b/scryfall_deser/src/main.rs index bd2babc..8a96545 100644 --- a/scryfall_deser/src/main.rs +++ b/scryfall_deser/src/main.rs @@ -9,7 +9,7 @@ struct Args { } fn main() { - let mut args = Args::parse(); + let args = Args::parse(); if args.update { unimplemented!("Haven't implemented update yet"); }