rustpp/
json.rs

1use serde_json::Value as JsonValue;
2use serde::de::DeserializeOwned;
3use crate::fs::{read_file,write_file};
4
5pub fn read_json(contents:&String)->JsonValue {
6    let res =serde_json::from_str(&contents);
7    if res.is_ok(){
8        let p:JsonValue = res.unwrap();
9        return p
10    }
11    else{
12        panic!("something went wrong!!")
13    } 
14
15}
16
17pub fn write_json(path:&String,contents:&JsonValue){
18    let con = contents.to_string();
19    write_file(path,&con);
20}
21
22pub fn sync_json<T:DeserializeOwned>(contents:&String)->T {
23    let res =serde_json::from_str(&contents);
24    if res.is_ok(){
25        let p:T = res.unwrap();
26        return p
27    }
28    else{
29        panic!("something went wrong!!")
30    } 
31
32}
33
34//extracts data from path and converts into appropriate structure
35pub fn extractor <T:DeserializeOwned> (_name:String,_path:String)->T{
36    let contents:String=read_file(&format!("{}",_path));
37    let data:JsonValue = read_json(&contents);
38    let data:String = data[_name].to_string(); 
39    let returns:T = sync_json(&data);
40    returns
41}
42
43pub fn store_var(path:&String,key:&String,value:&String){
44    println!("path uh {}",path);
45    let rcon = read_file(path);
46    let mut rjcon = read_json(&rcon);
47    rjcon[key]=JsonValue::from(value.to_string());
48    write_json(path,&rjcon);
49}
50
51pub fn retrive_var(path:&String,key:&String)->String{
52    println!("path uh {}",path);
53    let rcon = read_file(path);
54    let rjcon = read_json(&rcon);
55    rjcon[key].to_string()
56}