use crate::{game::AnkiDB, storage::Storage as JStorage};
use eframe::Storage as EStorage;
use serde_json::{from_str, to_string};
impl JStorage for &dyn EStorage {
type ErrorType = serde_json::Error;
fn read_db(&self) -> Result<AnkiDB, Self::ErrorType> {
Ok(from_str(
&self.get_string("db").unwrap_or_else(|| "[]".into()),
)?)
}
fn write_db(&mut self, _db: &AnkiDB) -> Result<(), Self::ErrorType> {
Ok(())
}
}
impl JStorage for &mut dyn EStorage {
type ErrorType = serde_json::Error;
fn read_db(&self) -> Result<AnkiDB, Self::ErrorType> {
Ok(from_str(
&self.get_string("db").unwrap_or_else(|| "[]".into()),
)?)
}
fn write_db(&mut self, db: &AnkiDB) -> Result<(), Self::ErrorType> {
Ok(self.set_string("db", to_string(db)?))
}
}