git.iko.soy/typeable/bloodhound
on master help sign in
Merge pull request #75 from Soostone/error-type
b0ecd5fChris Allen
src/Database/Bloodhound/Types.hs+13−1
@@ -61,6 +61,7 @@ module Database.Bloodhound.Types
61 , Reply
61 , Reply
62 , EsResult(..)
62 , EsResult(..)
63 , EsResultFound(..)
63 , EsResultFound(..)
64+ , EsError(..)
64 , DocVersion
65 , DocVersion
65 , ExternalDocVersion(..)
66 , ExternalDocVersion(..)
66 , VersionControl(..)
67 , VersionControl(..)
@@ -416,13 +417,18 @@ data EsResult a = EsResult { _index :: Text
416 , _id :: Text
417 , _id :: Text
417 , foundResult :: Maybe (EsResultFound a)} deriving (Eq, Show)
418 , foundResult :: Maybe (EsResultFound a)} deriving (Eq, Show)
418
419
419−
420{-| 'EsResultFound' contains the document and its metadata inside of an
420{-| 'EsResultFound' contains the document and its metadata inside of an
421 'EsResult' when the document was successfully found.
421 'EsResult' when the document was successfully found.
422-}
422-}
423data EsResultFound a = EsResultFound { _version :: DocVersion
423data EsResultFound a = EsResultFound { _version :: DocVersion
424 , _source :: a } deriving (Eq, Show)
424 , _source :: a } deriving (Eq, Show)
425
425
426+{-| 'EsError' is the generic type that will be returned when there was a
427+ problem. If you can't parse the expected response, its a good idea to
428+ try parsing this.
429+-}
430+data EsError = EsError { errorStatus :: Int
431+ , errorMessage :: Text } deriving (Eq, Show)
426
432
427
433
428{-| 'DocVersion' is an integer version number for a document between 1
434{-| 'DocVersion' is an integer version number for a document between 1
@@ -2133,6 +2139,12 @@ instance (FromJSON a) => FromJSON (EsResultFound a) where
2133 v .: "_source"
2139 v .: "_source"
2134 parseJSON _ = empty
2140 parseJSON _ = empty
2135
2141
2142+instance FromJSON EsError where
2143+ parseJSON (Object v) = EsError <$>
2144+ v .: "status" <*>
2145+ v .: "error"
2146+ parseJSON _ = empty
2147+
2136instance ToJSON Search where
2148instance ToJSON Search where
2137 toJSON (Search query sFilter sort searchAggs highlight sTrackSortScores sFrom sSize _ sFields sSource) =
2149 toJSON (Search query sFilter sort searchAggs highlight sTrackSortScores sFrom sSize _ sFields sSource) =
2138 omitNulls [ "query" .= query
2150 omitNulls [ "query" .= query