use std::fs;
use std::path::PathBuf;
use super::NodeIdStore;
use super::NodeIdStoreError;
pub struct FileNodeIdStore {
filename: PathBuf,
}
impl FileNodeIdStore {
pub fn new(filename: PathBuf) -> Self {
Self { filename }
}
}
impl NodeIdStore for FileNodeIdStore {
fn get_node_id(&self) -> Result<Option<String>, NodeIdStoreError> {
fs::read_to_string(&self.filename)
.map_err(|e| e.into())
.map(|s| {
let id = s.trim_end().to_string();
if !id.is_empty() {
Some(id)
} else {
None
}
})
}
fn set_node_id(&self, node_id: String) -> Result<(), NodeIdStoreError> {
fs::write(&self.filename, node_id).map_err(|e| e.into())
}
}