{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
module Network.AWS.SDB.Select
(
select
, Select
, sConsistentRead
, sNextToken
, sSelectExpression
, selectResponse
, SelectResponse
, srsItems
, srsNextToken
, srsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.SDB.Types
import Network.AWS.SDB.Types.Product
data Select = Select'
{ _sConsistentRead :: !(Maybe Bool)
, _sNextToken :: !(Maybe Text)
, _sSelectExpression :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
select
:: Text
-> Select
select pSelectExpression_ =
Select'
{ _sConsistentRead = Nothing
, _sNextToken = Nothing
, _sSelectExpression = pSelectExpression_
}
sConsistentRead :: Lens' Select (Maybe Bool)
sConsistentRead = lens _sConsistentRead (\ s a -> s{_sConsistentRead = a})
sNextToken :: Lens' Select (Maybe Text)
sNextToken = lens _sNextToken (\ s a -> s{_sNextToken = a})
sSelectExpression :: Lens' Select Text
sSelectExpression = lens _sSelectExpression (\ s a -> s{_sSelectExpression = a})
instance AWSPager Select where
page rq rs
| stop (rs ^. srsNextToken) = Nothing
| stop (rs ^. srsItems) = Nothing
| otherwise =
Just $ rq & sNextToken .~ rs ^. srsNextToken
instance AWSRequest Select where
type Rs Select = SelectResponse
request = postQuery sdb
response
= receiveXMLWrapper "SelectResult"
(\ s h x ->
SelectResponse' <$>
(may (parseXMLList "Item") x) <*> (x .@? "NextToken")
<*> (pure (fromEnum s)))
instance Hashable Select where
instance NFData Select where
instance ToHeaders Select where
toHeaders = const mempty
instance ToPath Select where
toPath = const "/"
instance ToQuery Select where
toQuery Select'{..}
= mconcat
["Action" =: ("Select" :: ByteString),
"Version" =: ("2009-04-15" :: ByteString),
"ConsistentRead" =: _sConsistentRead,
"NextToken" =: _sNextToken,
"SelectExpression" =: _sSelectExpression]
data SelectResponse = SelectResponse'
{ _srsItems :: !(Maybe [Item])
, _srsNextToken :: !(Maybe Text)
, _srsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
selectResponse
:: Int
-> SelectResponse
selectResponse pResponseStatus_ =
SelectResponse'
{ _srsItems = Nothing
, _srsNextToken = Nothing
, _srsResponseStatus = pResponseStatus_
}
srsItems :: Lens' SelectResponse [Item]
srsItems = lens _srsItems (\ s a -> s{_srsItems = a}) . _Default . _Coerce
srsNextToken :: Lens' SelectResponse (Maybe Text)
srsNextToken = lens _srsNextToken (\ s a -> s{_srsNextToken = a})
srsResponseStatus :: Lens' SelectResponse Int
srsResponseStatus = lens _srsResponseStatus (\ s a -> s{_srsResponseStatus = a})
instance NFData SelectResponse where