bloodhound-0.20.0.0: src/Database/Bloodhound/Internal/Count.hs
{-# LANGUAGE OverloadedStrings #-}
module Database.Bloodhound.Internal.Count (CountQuery (..), CountResponse (..), CountShards (..)) where
import Data.Aeson
import Database.Bloodhound.Internal.Query
import Numeric.Natural
newtype CountQuery = CountQuery {countQuery :: Query}
deriving (Eq, Show)
instance ToJSON CountQuery where
toJSON (CountQuery q) =
object ["query" .= q]
data CountResponse = CountResponse
{ crCount :: Natural,
crShards :: CountShards
}
deriving (Eq, Show)
instance FromJSON CountResponse where
parseJSON =
withObject "CountResponse" $
\o ->
CountResponse
<$> o .: "count"
<*> o .: "_shards"
data CountShards = CountShards
{ csTotal :: Int,
csSuccessful :: Int,
csSkipped :: Int,
csFailed :: Int
}
deriving (Eq, Show)
instance FromJSON CountShards where
parseJSON =
withObject "CountShards" $
\o ->
CountShards
<$> o .: "total"
<*> o .: "successful"
<*> o .: "skipped"
<*> o .: "failed"