From 52b67cdbdf1b158392382096c822f28c8be025c1 Mon Sep 17 00:00:00 2001 From: Ashutosh Rishi Ranjan Date: Tue, 19 Jun 2018 18:21:05 +1000 Subject: [PATCH] Added a constructor to denote "auto" fuzziness to the Fuzziness type --- src/Database/V5/Bloodhound/Internal/Newtypes.hs | 2 -- src/Database/V5/Bloodhound/Internal/Query.hs | 13 +++++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Database/V5/Bloodhound/Internal/Newtypes.hs b/src/Database/V5/Bloodhound/Internal/Newtypes.hs index 95669c8..4650646 100644 --- a/src/Database/V5/Bloodhound/Internal/Newtypes.hs +++ b/src/Database/V5/Bloodhound/Internal/Newtypes.hs @@ -110,8 +110,6 @@ newtype MinimumTermFrequency = MinimumTermFrequency Int deriving (Eq, Show, FromJSON, ToJSON) newtype MaxQueryTerms = MaxQueryTerms Int deriving (Eq, Show, FromJSON, ToJSON) -newtype Fuzziness = - Fuzziness Double deriving (Eq, Show, FromJSON, ToJSON) {-| 'PrefixLength' is the prefix length used in queries, defaults to 0. -} newtype PrefixLength = diff --git a/src/Database/V5/Bloodhound/Internal/Query.hs b/src/Database/V5/Bloodhound/Internal/Query.hs index c89c092..16f2903 100644 --- a/src/Database/V5/Bloodhound/Internal/Query.hs +++ b/src/Database/V5/Bloodhound/Internal/Query.hs @@ -1624,3 +1624,16 @@ fieldTagged :: Monad m => (FieldName -> Object -> m a) -> Object -> m a fieldTagged f o = case HM.toList o of [(k, Object o')] -> f (FieldName k) o' _ -> fail "Expected object with 1 field-named key" + +{-| Fuzziness value as a number or 'AUTO'. -} +data Fuzziness = Fuzziness Double | FuzzinessAuto + deriving (Eq, Show) + +instance ToJSON Fuzziness where + toJSON (Fuzziness n) = toJSON n + toJSON FuzzinessAuto = String "AUTO" + +instance FromJSON Fuzziness where + parseJSON (String "AUTO") = return FuzzinessAuto + parseJSON (String "auto") = return FuzzinessAuto + parseJSON v = Fuzziness <$> parseJSON v