module Aws.DynamoDb.Streams.Commands.GetShardIterator
(
GetShardIterator(..)
, getShardIterator
, gsiSequenceNumber
, gsiShardId
, gsiShardIteratorType
, gsiStreamId
, GetShardIteratorResponse(..)
, gsirShardIterator
) where
import Aws.Core
import Aws.DynamoDb.Streams.Core
import Aws.DynamoDb.Streams.Types
import Control.Applicative
import Control.Applicative.Unicode
import Data.Aeson
import Data.Typeable
data GetShardIterator
= GetShardIterator
{ _gsiSequenceNumber ∷ !(Maybe SequenceNumber)
, _gsiShardId ∷ !ShardId
, _gsiShardIteratorType ∷ !ShardIteratorType
, _gsiStreamId ∷ !StreamId
} deriving (Eq, Ord, Read, Show, Typeable)
getShardIterator
∷ StreamId
→ ShardId
→ ShardIteratorType
→ GetShardIterator
getShardIterator stream shard iteratorType =
GetShardIterator
{ _gsiStreamId = stream
, _gsiShardIteratorType = iteratorType
, _gsiShardId = shard
, _gsiSequenceNumber = Nothing
}
instance ToJSON GetShardIterator where
toJSON GetShardIterator{..} = object
[ "SequenceNumber" .= _gsiSequenceNumber
, "ShardId" .= _gsiShardId
, "ShardIteratorType" .= _gsiShardIteratorType
, "StreamId" .= _gsiStreamId
]
instance FromJSON GetShardIterator where
parseJSON =
withObject "GetShardIterator" $ \o →
pure GetShardIterator
⊛ o .:? "SequenceNumber"
⊛ o .: "ShardId"
⊛ o .: "ShardIteratorType"
⊛ o .: "StreamId"
gsiSequenceNumber
∷ Functor f
⇒ (Maybe SequenceNumber → f (Maybe SequenceNumber))
→ GetShardIterator
→ f GetShardIterator
gsiSequenceNumber i GetShardIterator{..} =
(\_gsiSequenceNumber → GetShardIterator{..})
<$> i _gsiSequenceNumber
gsiShardId
∷ Functor f
⇒ (ShardId → f ShardId)
→ GetShardIterator
→ f GetShardIterator
gsiShardId i GetShardIterator{..} =
(\_gsiShardId → GetShardIterator{..})
<$> i _gsiShardId
gsiShardIteratorType
∷ Functor f
⇒ (ShardIteratorType → f ShardIteratorType)
→ GetShardIterator
→ f GetShardIterator
gsiShardIteratorType i GetShardIterator{..} =
(\_gsiShardIteratorType → GetShardIterator{..})
<$> i _gsiShardIteratorType
gsiStreamId
∷ Functor f
⇒ (StreamId → f StreamId)
→ GetShardIterator
→ f GetShardIterator
gsiStreamId i GetShardIterator{..} =
(\_gsiStreamId → GetShardIterator{..})
<$> i _gsiStreamId
data GetShardIteratorResponse
= GetShardIteratorResponse
{ _gsirShardIterator ∷ !ShardIterator
} deriving (Eq, Ord, Show, Read, Typeable)
instance ToJSON GetShardIteratorResponse where
toJSON GetShardIteratorResponse{..} = object
[ "ShardIterator" .= _gsirShardIterator
]
instance FromJSON GetShardIteratorResponse where
parseJSON =
withObject "GetShardIteratorResponse" $ \o →
GetShardIteratorResponse
<$> o .: "ShardIterator"
gsirShardIterator
∷ Functor f
⇒ (ShardIterator → f ShardIterator)
→ GetShardIteratorResponse
→ f GetShardIteratorResponse
gsirShardIterator i GetShardIteratorResponse{..} =
(\_gsirShardIterator → GetShardIteratorResponse{..})
<$> i _gsirShardIterator
instance ResponseConsumer r GetShardIteratorResponse where
type ResponseMetadata GetShardIteratorResponse = StreamsMetadata
responseConsumer _ = streamsResponseConsumer
instance SignQuery GetShardIterator where
type ServiceConfiguration GetShardIterator = StreamsConfiguration
signQuery cmd = streamsSignQuery StreamsQuery
{ _stqAction = ActionGetShardIterator
, _stqBody = encode cmd
}
instance Transaction GetShardIterator GetShardIteratorResponse
instance AsMemoryResponse GetShardIteratorResponse where
type MemoryResponse GetShardIteratorResponse = GetShardIteratorResponse
loadToMemory = return