module Network.AWS.DynamoDB.ListTables
(
listTables
, ListTables
, ltExclusiveStartTableName
, ltLimit
, listTablesResponse
, ListTablesResponse
, ltrsLastEvaluatedTableName
, ltrsTableNames
, ltrsResponseStatus
) where
import Network.AWS.DynamoDB.Types
import Network.AWS.DynamoDB.Types.Product
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data ListTables = ListTables'
{ _ltExclusiveStartTableName :: !(Maybe Text)
, _ltLimit :: !(Maybe Nat)
} deriving (Eq,Read,Show,Data,Typeable,Generic)
listTables
:: ListTables
listTables =
ListTables'
{ _ltExclusiveStartTableName = Nothing
, _ltLimit = Nothing
}
ltExclusiveStartTableName :: Lens' ListTables (Maybe Text)
ltExclusiveStartTableName = lens _ltExclusiveStartTableName (\ s a -> s{_ltExclusiveStartTableName = a});
ltLimit :: Lens' ListTables (Maybe Natural)
ltLimit = lens _ltLimit (\ s a -> s{_ltLimit = a}) . mapping _Nat;
instance AWSPager ListTables where
page rq rs
| stop (rs ^. ltrsLastEvaluatedTableName) = Nothing
| stop (rs ^. ltrsTableNames) = Nothing
| otherwise =
Just $ rq &
ltExclusiveStartTableName .~
rs ^. ltrsLastEvaluatedTableName
instance AWSRequest ListTables where
type Rs ListTables = ListTablesResponse
request = postJSON dynamoDB
response
= receiveJSON
(\ s h x ->
ListTablesResponse' <$>
(x .?> "LastEvaluatedTableName") <*>
(x .?> "TableNames" .!@ mempty)
<*> (pure (fromEnum s)))
instance Hashable ListTables
instance NFData ListTables
instance ToHeaders ListTables where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("DynamoDB_20120810.ListTables" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.0" :: ByteString)])
instance ToJSON ListTables where
toJSON ListTables'{..}
= object
(catMaybes
[("ExclusiveStartTableName" .=) <$>
_ltExclusiveStartTableName,
("Limit" .=) <$> _ltLimit])
instance ToPath ListTables where
toPath = const "/"
instance ToQuery ListTables where
toQuery = const mempty
data ListTablesResponse = ListTablesResponse'
{ _ltrsLastEvaluatedTableName :: !(Maybe Text)
, _ltrsTableNames :: !(Maybe [Text])
, _ltrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
listTablesResponse
:: Int
-> ListTablesResponse
listTablesResponse pResponseStatus_ =
ListTablesResponse'
{ _ltrsLastEvaluatedTableName = Nothing
, _ltrsTableNames = Nothing
, _ltrsResponseStatus = pResponseStatus_
}
ltrsLastEvaluatedTableName :: Lens' ListTablesResponse (Maybe Text)
ltrsLastEvaluatedTableName = lens _ltrsLastEvaluatedTableName (\ s a -> s{_ltrsLastEvaluatedTableName = a});
ltrsTableNames :: Lens' ListTablesResponse [Text]
ltrsTableNames = lens _ltrsTableNames (\ s a -> s{_ltrsTableNames = a}) . _Default . _Coerce;
ltrsResponseStatus :: Lens' ListTablesResponse Int
ltrsResponseStatus = lens _ltrsResponseStatus (\ s a -> s{_ltrsResponseStatus = a});
instance NFData ListTablesResponse