use postgres::{Client, NoTls}; use std::{env, fs, io::Write}; fn website_is_valid(name: &str) -> bool { let mut client = Client::connect("host=192.168.0.10 port=28945 user=hentai password=h99nqaNPhpfbuuhCDwQXLpZAnoVTjSQP7taoqmQhpzc2rPLVC4JUAKxAHfuuhuU9", NoTls).unwrap(); let sqlstmt = format!("SELECT * FROM website WHERE name = '{}'", name); let output = client.query(&sqlstmt, &[]).unwrap(); if output.len() == 0 { return false; } return true; } fn generate_file(website_name: &str) { dbg!(&website_name); if !website_is_valid(&website_name) { panic!("Invalid website_name"); } let filename = format!("{website_name}_generated.txt"); dbg!(&filename); let mut file = match fs::File::create(filename) { Ok(file) => file, Err(error) => { let message = error.to_string(); panic!("Problem opening the file: {message}"); } }; let mut client = Client::connect("host=192.168.0.10 port=28945 user=hentai password=h99nqaNPhpfbuuhCDwQXLpZAnoVTjSQP7taoqmQhpzc2rPLVC4JUAKxAHfuuhuU9", NoTls).unwrap(); let sqlstmt = format!("SELECT * FROM get_urls_and_paths('{}');", website_name); let output = client.query(&sqlstmt, &[]).unwrap(); for row in output { let url: String = row.get(0); let folder_path: String = row.get(1); dbg!(&url, &folder_path); write!(file, "{} # {}", url, folder_path).unwrap(); } } fn import_file(filename: &str) { dbg!(&filename); } fn main() { let args: Vec = env::args().collect(); dbg!(&args); if args.len() != 3 { panic!("Too many or too few arguments"); } let operation: &str = args[1].as_str(); match operation { "generate" => generate_file(&args[2]), "import" => import_file(&args[2]), _ => panic!("Invalid argument"), } }