@@ -216,9 +216,48 @@ instance ToJSON Query where
216 toJSON (QueryRegexpQuery query) =
216 toJSON (QueryRegexpQuery query) =
217 object [ "regexp" .= toJSON query ]
217 object [ "regexp" .= toJSON query ]
219+ toJSON (QuerySimpleQueryStringQuery query) =
220+ object [ "simple_query_string" .= toJSON query ]
219mField :: (ToJSON a, Functor f) => T.Text -> f a -> f (T.Text, Value)
223mField :: (ToJSON a, Functor f) => T.Text -> f a -> f (T.Text, Value)
220mField field = fmap ((field .=) . toJSON)
224mField field = fmap ((field .=) . toJSON)
226+instance ToJSON SimpleQueryStringQuery where
227+ toJSON (SimpleQueryStringQuery sqsQueryString
228+ sqsFields sqsBoolean sqsAnalyzer
229+ sqsFlags sqsLowercaseExpanded sqsLocale) =
231+ where base = [ "query" .= toJSON sqsQueryString ]
233+ catMaybes [ mField "fields" sqsFields
234+ , mField "default_operator" sqsBoolean
235+ , mField "analyzer" sqsAnalyzer
236+ , mField "flags" sqsFlags
237+ , mField "lowercase_expanded_terms" sqsLowercaseExpanded
238+ , mField "locale" sqsLocale ]
239+ conjoined = base ++ maybeAdd
241+instance ToJSON FieldOrFields where
242+ toJSON (FofField fieldName) =
244+ toJSON (FofFields fieldNames) =
247+instance ToJSON SimpleQueryFlag where
248+ toJSON SimpleQueryAll = "ALL"
249+ toJSON SimpleQueryNone = "NONE"
250+ toJSON SimpleQueryAnd = "AND"
251+ toJSON SimpleQueryOr = "OR"
252+ toJSON SimpleQueryPrefix = "PREFIX"
253+ toJSON SimpleQueryPhrase = "PHRASE"
254+ toJSON SimpleQueryPrecedence = "PRECEDENCE"
255+ toJSON SimpleQueryEscape = "ESCAPE"
256+ toJSON SimpleQueryWhitespace = "WHITESPACE"
257+ toJSON SimpleQueryFuzzy = "FUZZY"
258+ toJSON SimpleQueryNear = "NEAR"
259+ toJSON SimpleQuerySlop = "SLOP"
222instance ToJSON RegexpQuery where
261instance ToJSON RegexpQuery where
223 toJSON (RegexpQuery (FieldName rqQueryField)
262 toJSON (RegexpQuery (FieldName rqQueryField)
224 (Regexp regexpQueryQuery) rqQueryFlags
263 (Regexp regexpQueryQuery) rqQueryFlags