elastic_query_builder/query/
script_query.rs

1use crate::query::QueryTrait;
2use serde_json::{json, Value};
3
4#[derive(Default)]
5pub struct ScriptQuery {
6    script: String,
7    source: String,
8    lang: String,
9    params: Value,
10}
11
12impl ScriptQuery {
13    pub fn new(script: &str) -> ScriptQuery {
14        let mut query = ScriptQuery::default();
15        query.script = script.to_string();
16        return query;
17    }
18}
19
20impl QueryTrait for ScriptQuery {
21    fn build(&self) -> Value {
22        let script = self.script.to_string();
23        let name = self.query_name();
24        json!({
25            name:{
26                "script":script
27            }
28        })
29    }
30
31    fn query_name(&self) -> String {
32        return "script".to_string();
33    }
34}
35
36#[test]
37fn test() {
38    let q = ScriptQuery::new("doc['keywords'].length == 2")
39        .build()
40        .to_string();
41    assert_eq!(
42        q,
43        "{\"script\":{\"script\":\"doc['keywords'].length == 2\"}}"
44    )
45}