use std::fs::File; use std::io; use std::io::{BufReader, BufWriter}; use crate::Pasta; static DATABASE_PATH: &str = "pasta_data/database.json"; pub fn save_to_file(pasta_data: &Vec) { let mut file = File::create(DATABASE_PATH); match file { Ok(_) => { let writer = BufWriter::new(file.unwrap()); serde_json::to_writer(writer, &pasta_data).expect("Failed to create JSON writer"); } Err(_) => { log::info!("Database file {DATABASE_PATH} not found!"); file = File::create(DATABASE_PATH); match file { Ok(_) => { log::info!("Database file {DATABASE_PATH} created."); save_to_file(pasta_data); } Err(err) => { log::error!( "Failed to create database file {}: {}!", &DATABASE_PATH, &err ); panic!("Failed to create database file {DATABASE_PATH}: {err}!") } } } } } pub fn load_from_file() -> io::Result> { let file = File::open(DATABASE_PATH); match file { Ok(_) => { let reader = BufReader::new(file.unwrap()); let data: Vec = match serde_json::from_reader(reader) { Ok(t) => t, _ => Vec::new(), }; Ok(data) } Err(_) => { log::info!("Database file {DATABASE_PATH} not found!"); save_to_file(&Vec::::new()); log::info!("Database file {DATABASE_PATH} created."); load_from_file() } } }