elastic_query_builder/query/
script_query.rs1use 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}