elastic-query-builder 0.1.39

ElasticSearch Query Builder
Documentation
use serde_json::{Map, Value};

pub(crate) struct UtilMap {
    pub map: Map<String, Value>,
}

impl UtilMap {
    pub fn new() -> UtilMap {
        UtilMap {
            map: Default::default(),
        }
    }
    pub fn append_string<T: Into<String>>(&mut self, key: T, value: String) {
        self.map.insert(key.into(), Value::String(value));
    }
    pub fn append_vec_string<T: Into<String>>(&mut self, key: T, values: Vec<String>) {
        let mut list = vec![];
        for value in values {
            list.push(Value::String(value));
        }

        self.map.insert(key.into(), Value::Array(list));
    }
    pub fn append_boost(&mut self, boost: Option<f64>) {
        if boost.is_none() {
            return;
        }
        self.map
            .insert("boost".to_string(), Value::from(boost.unwrap()));
    }
    pub fn append_object<T: Into<String>>(&mut self, key: T, map: UtilMap) {
        self.map.insert(key.into(), Value::Object(map.map));
    }
    pub fn append_value<T: Into<String>>(&mut self, key: T, value: Value) {
        self.map.insert(key.into(), Value::from(value));
    }

    pub fn build_object<T: Into<String>>(mut self, key: T) -> Value {
        let mut map = Map::default();
        map.insert(key.into(), Value::Object(self.map));

        Value::Object(map)
    }
    pub fn build(self) -> Value {
        Value::Object(self.map)
    }
}