bloodhound-0.19.1.0: src/Database/Bloodhound/Internal/PointInTime.hs
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE OverloadedStrings #-}
module Database.Bloodhound.Internal.PointInTime where
import Bloodhound.Import
data PointInTime = PointInTime
{ pPitId :: Text
, keepAlive :: Text
} deriving (Eq, Show)
instance ToJSON PointInTime where
toJSON PointInTime{..} =
object [ "id" .= pPitId
, "keep_alive" .= keepAlive ]
instance FromJSON PointInTime where
parseJSON (Object o) = PointInTime <$> o .: "id" <*> o .: "keep_alive"
parseJSON x = typeMismatch "PointInTime" x
data OpenPointInTimeResponse = OpenPointInTimeResponse {
oPitId :: Text
} deriving (Eq, Show)
instance ToJSON OpenPointInTimeResponse where
toJSON OpenPointInTimeResponse{..} =
object [ "id" .= oPitId]
instance FromJSON OpenPointInTimeResponse where
parseJSON (Object o) = OpenPointInTimeResponse <$> o .: "id"
parseJSON x = typeMismatch "OpenPointInTimeResponse" x
data ClosePointInTime = ClosePointInTime {
cPitId :: Text
} deriving (Eq, Show)
instance ToJSON ClosePointInTime where
toJSON ClosePointInTime{..} =
object [ "id" .= cPitId]
instance FromJSON ClosePointInTime where
parseJSON (Object o) = ClosePointInTime <$> o .: "id"
parseJSON x = typeMismatch "ClosePointInTime" x
data ClosePointInTimeResponse = ClosePointInTimeResponse {
succeeded :: Bool,
numFreed :: Int
} deriving (Eq, Show)
instance ToJSON ClosePointInTimeResponse where
toJSON ClosePointInTimeResponse{..} =
object [ "succeeded" .= succeeded
, "num_freed" .= numFreed]
instance FromJSON ClosePointInTimeResponse where
parseJSON (Object o) = do
succeeded' <- o .: "succeeded"
numFreed' <- o .: "num_freed"
return $ ClosePointInTimeResponse succeeded' numFreed'
parseJSON x = typeMismatch "ClosePointInTimeResponse" x