monorepo/orizentic/src/filedb.rs

38 lines
1.0 KiB
Rust

extern crate serde_json;
use core;
use std::fs::File;
use std::path::Path;
use std::io::{Read, Error, Write};
pub fn save_claims_to_file(claimsets: &Vec<&core::ClaimSet>, path: &String) -> Result<(), Error> {
let path = Path::new(path);
let mut file = File::create(&path)?;
let claimsets_js: Vec<core::ClaimSetJS> = claimsets
.into_iter()
.map(|claims| core::ClaimSetJS::from_claimset(claims))
.collect();
let claimset_str = serde_json::to_string(&claimsets_js)?;
file.write_fmt(format_args!("{}", claimset_str))?;
Ok(())
}
pub fn load_claims_from_file(path: &String) -> Result<Vec<core::ClaimSet>, Error> {
let path = Path::new(path);
let mut file = File::open(&path)?;
let mut text = String::new();
file.read_to_string(&mut text)?;
let claimsets_js: Vec<core::ClaimSetJS> = serde_json::from_str(&text)?;
let claimsets = claimsets_js
.into_iter()
.map(|cl_js| core::ClaimSetJS::to_claimset(&cl_js))
.collect();
Ok(claimsets)
}