use serde_json::Value;
use crate::connection::Connection;
use crate::error::Result;
pub struct EnumQuery<'a> {
conn: &'a Connection,
}
impl<'a> EnumQuery<'a> {
pub fn new(conn: &'a Connection) -> Self {
Self { conn }
}
pub fn keywords(&self) -> Result<Value> {
let data = self.conn.cache.borrow_mut().load_json("keywords")?;
Ok(extract_data(data))
}
pub fn card_types(&self) -> Result<Value> {
let data = self.conn.cache.borrow_mut().load_json("card_types")?;
Ok(extract_data(data))
}
pub fn enum_values(&self) -> Result<Value> {
let data = self.conn.cache.borrow_mut().load_json("enum_values")?;
Ok(extract_data(data))
}
}
fn extract_data(value: Value) -> Value {
match value {
Value::Object(ref map) => {
if let Some(data) = map.get("data") {
data.clone()
} else {
value
}
}
_ => value,
}
}