opensearch_dsl/search/queries/params/
simple_query_string_query.rs1use std::fmt;
2
3use serde::{
4 de::{Error, Unexpected, Visitor},
5 ser::{Serialize, Serializer},
6 Deserialize, Deserializer,
7};
8#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
11pub enum SimpleQueryStringQueryFlags {
12 All,
14
15 And,
17
18 Escape,
20
21 Fuzzy,
25
26 Near,
30
31 None,
33
34 Not,
36
37 Or,
39
40 Phrase,
42
43 Precedence,
45
46 Prefix,
48
49 Slop,
53
54 Whitespace,
56}
57
58impl From<SimpleQueryStringQueryFlags> for &'static str {
59 fn from(value: SimpleQueryStringQueryFlags) -> Self {
60 match value {
61 SimpleQueryStringQueryFlags::All => "ALL",
62 SimpleQueryStringQueryFlags::And => "AND",
63 SimpleQueryStringQueryFlags::Escape => "ESCAPE",
64 SimpleQueryStringQueryFlags::Fuzzy => "FUZZY",
65 SimpleQueryStringQueryFlags::Near => "NEAR",
66 SimpleQueryStringQueryFlags::None => "NONE",
67 SimpleQueryStringQueryFlags::Not => "NOT",
68 SimpleQueryStringQueryFlags::Or => "OR",
69 SimpleQueryStringQueryFlags::Phrase => "PHRASE",
70 SimpleQueryStringQueryFlags::Precedence => "PRECEDENCE",
71 SimpleQueryStringQueryFlags::Prefix => "PREFIX",
72 SimpleQueryStringQueryFlags::Slop => "SLOP",
73 SimpleQueryStringQueryFlags::Whitespace => "WHITESPACE",
74 }
75 }
76}
77
78impl From<SimpleQueryStringQueryFlags> for String {
79 fn from(value: SimpleQueryStringQueryFlags) -> Self {
80 <&'static str>::from(value).to_string()
81 }
82}
83
84impl fmt::Display for SimpleQueryStringQueryFlags {
85 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
86 <&'static str>::from(*self).fmt(f)
87 }
88}
89
90impl Serialize for SimpleQueryStringQueryFlags {
91 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
92 where
93 S: Serializer,
94 {
95 <&'static str>::from(*self).serialize(serializer)
96 }
97}
98
99impl<'de> Deserialize<'de> for SimpleQueryStringQueryFlags {
100 fn deserialize<D>(deserializer: D) -> Result<SimpleQueryStringQueryFlags, D::Error>
101 where
102 D: Deserializer<'de>,
103 {
104 struct SimpleQueryStringQueryFlagsVisitor;
105
106 impl<'de> Visitor<'de> for SimpleQueryStringQueryFlagsVisitor {
107 type Value = SimpleQueryStringQueryFlags;
108
109 fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result {
110 formatter.write_str("a string representing a SimpleQueryStringQueryFlags variant")
111 }
112
113 fn visit_str<E>(self, value: &str) -> Result<SimpleQueryStringQueryFlags, E>
114 where
115 E: Error,
116 {
117 match value {
118 "ALL" => Ok(SimpleQueryStringQueryFlags::All),
119 "AND" => Ok(SimpleQueryStringQueryFlags::And),
120 "ESCAPE" => Ok(SimpleQueryStringQueryFlags::Escape),
121 "FUZZY" => Ok(SimpleQueryStringQueryFlags::Fuzzy),
122 "NEAR" => Ok(SimpleQueryStringQueryFlags::Near),
123 "NONE" => Ok(SimpleQueryStringQueryFlags::None),
124 "NOT" => Ok(SimpleQueryStringQueryFlags::Not),
125 "OR" => Ok(SimpleQueryStringQueryFlags::Or),
126 "PHRASE" => Ok(SimpleQueryStringQueryFlags::Phrase),
127 "PRECEDENCE" => Ok(SimpleQueryStringQueryFlags::Precedence),
128 "PREFIX" => Ok(SimpleQueryStringQueryFlags::Prefix),
129 "SLOP" => Ok(SimpleQueryStringQueryFlags::Slop),
130 "WHITESPACE" => Ok(SimpleQueryStringQueryFlags::Whitespace),
131 _ => Err(E::invalid_value(Unexpected::Str(value), &self)),
132 }
133 }
134 }
135
136 deserializer.deserialize_str(SimpleQueryStringQueryFlagsVisitor)
137 }
138}