fosk 0.2.0

In-memory SQL-like query engine and lightweight data store for testing and prototyping.
Documentation
use serde_json::{Map, Value};

#[derive(Debug, Clone)]
pub struct Row(pub Map<String, Value>);

impl Row {
    pub fn get(&self, key: &str) -> Option<&Value> {
        self.0.get(key)
    }
    pub fn into_value(self) -> Value {
        Value::Object(self.0)
    }
}

#[cfg(test)]
mod tests {
    use super::Row;
    use serde_json::{Map, Value, json};

    #[test]
    fn get_returns_existing_value_and_none_for_missing_key() {
        let mut map = Map::new();
        map.insert("name".to_string(), json!("Ada"));
        let row = Row(map);

        assert_eq!(row.get("name"), Some(&json!("Ada")));
        assert_eq!(row.get("missing"), None);
    }

    #[test]
    fn into_value_returns_object_with_original_fields() {
        let mut map = Map::new();
        map.insert("id".to_string(), json!(1));
        let row = Row(map);

        assert_eq!(
            row.into_value(),
            Value::Object(Map::from_iter([("id".to_string(), json!(1))]))
        );
    }
}