100 lines
2.6 KiB
Rust
100 lines
2.6 KiB
Rust
use std::{fs, io::Write};
|
|
use std::path::Path;
|
|
|
|
use serde_json::{self, Value, json};
|
|
|
|
use crate::{Data, BK_WEEK, rs_println};
|
|
use crate::websocket::send_cmd_json;
|
|
|
|
|
|
static DATA_PATH_DC: &str = "./data/discord_data.json";
|
|
static PRESET_PATH_DC: &str = "./data/discord_data_preset.json";
|
|
static DATA_PATH_RE: &str = "./data/reddit_data.json";
|
|
static PRESET_PATH_RE: &str = "./data/reddit_data_preset.json";
|
|
|
|
|
|
pub fn read_dc_data(data: &Data) {
|
|
if !Path::new(DATA_PATH_DC).exists() {
|
|
generate_dc_data();
|
|
}
|
|
|
|
let str_data = fs::read_to_string(DATA_PATH_DC).unwrap();
|
|
let json_data = serde_json::from_str(&str_data).unwrap();
|
|
let mut dc_data = data.discord_data.lock().unwrap();
|
|
*dc_data = json_data;
|
|
}
|
|
|
|
|
|
fn generate_dc_data() {
|
|
let preset_str = fs::read_to_string(PRESET_PATH_DC).unwrap();
|
|
let mut preset_json: Value = serde_json::from_str(&preset_str).unwrap();
|
|
|
|
if let Some(servers) = preset_json["servers"].as_object_mut() {
|
|
servers.remove("SERVER ID");
|
|
}
|
|
|
|
let json_str = serde_json::to_string_pretty(&preset_json).unwrap();
|
|
|
|
let mut file = fs::File::create(DATA_PATH_DC).unwrap();
|
|
file.write_all(json_str.as_bytes()).unwrap();
|
|
}
|
|
|
|
|
|
pub fn write_dc_data(data: &Data) {
|
|
if !Path::new(DATA_PATH_DC).exists() {
|
|
generate_dc_data();
|
|
}
|
|
|
|
let mut file = fs::OpenOptions::new()
|
|
.write(true)
|
|
.truncate(true)
|
|
.open(DATA_PATH_DC)
|
|
.unwrap();
|
|
|
|
let json_str = serde_json::to_string_pretty(&data.discord_data).unwrap();
|
|
|
|
file.write_all(json_str.as_bytes()).unwrap();
|
|
}
|
|
|
|
|
|
pub fn read_re_data(data: &Data, wipe: bool) {
|
|
if !Path::new(DATA_PATH_RE).exists() || wipe {
|
|
rs_println!(
|
|
"{} creating new from preset...",
|
|
if !wipe { "reddit_data.json not found," } else { "[WIPE] (reddit_data.json)" }
|
|
);
|
|
generate_re_data();
|
|
}
|
|
|
|
let str_data = fs::read_to_string(DATA_PATH_RE).unwrap();
|
|
let json_data = serde_json::from_str(&str_data).unwrap();
|
|
let mut re_data = data.reddit_data.lock().unwrap();
|
|
*re_data = json_data;
|
|
}
|
|
|
|
|
|
fn generate_re_data() {
|
|
let preset_str = fs::read_to_string(PRESET_PATH_RE).unwrap();
|
|
let mut preset_json: Value = serde_json::from_str(&preset_str).unwrap();
|
|
|
|
if let Some(bk_week) = preset_json[BK_WEEK].as_object_mut() {
|
|
bk_week.remove("EXAMPLE VALUE");
|
|
bk_week.remove("EXAMPLE VALUE DELETED");
|
|
}
|
|
|
|
let json_str = serde_json::to_string_pretty(&preset_json).unwrap();
|
|
|
|
let mut file = fs::File::create(DATA_PATH_RE).unwrap();
|
|
file.write_all(json_str.as_bytes()).unwrap();
|
|
}
|
|
|
|
|
|
pub async fn update_re_data(data: &Data) {
|
|
send_cmd_json("update_data_file", json!([])).await;
|
|
read_re_data(data, false);
|
|
}
|
|
|
|
|
|
pub async fn write_re_data() {
|
|
send_cmd_json("update_data_file", json!([])).await;
|
|
} |