From 0f5223d3d3f6aeb6bb1a0b09ad3d4ef5731774dd Mon Sep 17 00:00:00 2001 From: fxqnlr Date: Sat, 5 Nov 2022 21:53:24 +0100 Subject: added setup & download; direct input --- src/commands/setup.rs | 54 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/commands/setup.rs (limited to 'src/commands/setup.rs') diff --git a/src/commands/setup.rs b/src/commands/setup.rs new file mode 100644 index 0000000..0223a21 --- /dev/null +++ b/src/commands/setup.rs @@ -0,0 +1,54 @@ +use std::{fs::File, path::Path, io::{Error, ErrorKind}}; + +use crate::{config::Cfg, db::{db_setup, get_dbversion, create_dbversion, insert_column, get_lists, get_list, get_current_versions, insert_dl_link}, modrinth::get_raw_versions}; + +pub async fn setup(config: Cfg) -> Result<(), Box> { + + let db_file = format!("{}/data.db", String::from(&config.data)); + + if !Path::new(&db_file).exists() { + return create(config, db_file); + } + + match get_dbversion(config.clone()) { + Ok(ver) => { + match ver.as_str() { + _ => return Err(Box::new(Error::new(ErrorKind::Other, "UNKNOWN_VERSION"))) + } + }, + Err(..) => to_02(config).await? + }; + + Ok(()) +} + +fn create(config: Cfg, db_file: String) -> Result<(), Box> { + File::create(db_file)?; + db_setup(config)?; + Ok(()) +} + +async fn to_02(config: Cfg) -> Result<(), Box> { + let lists = get_lists(config.clone())?; + + for list in lists { + println!("Updating {}", list); + insert_column(config.clone(), String::from(&list), String::from("current_download"), sqlite::Type::String)?; + + let full_list = get_list(config.clone(), String::from(&list))?; + + let versions = get_current_versions(config.clone(), full_list.clone())?; + + let raw_versions = get_raw_versions(String::from(&config.apis.modrinth), versions).await; + + for ver in raw_versions { + println!("Adding link for {}", ver.project_id); + let file = ver.files.into_iter().find(|f| f.primary).unwrap(); + insert_dl_link(config.clone(), full_list.clone(), ver.project_id, file.url)?; + } + }; + create_dbversion(config)?; + + + Ok(()) +} -- cgit v1.2.3