amazonka-sdb-1.3.7: gen/Network/AWS/SDB/PutAttributes.hs
{-# 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 #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.SDB.PutAttributes
-- Copyright : (c) 2013-2015 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- The PutAttributes operation creates or replaces attributes in an item.
-- The client may specify new attributes using a combination of the
-- 'Attribute.X.Name' and 'Attribute.X.Value' parameters. The client
-- specifies the first attribute by the parameters 'Attribute.0.Name' and
-- 'Attribute.0.Value', the second attribute by the parameters
-- 'Attribute.1.Name' and 'Attribute.1.Value', and so on.
--
-- Attributes are uniquely identified in an item by their name\/value
-- combination. For example, a single item can have the attributes
-- '{ \"first_name\", \"first_value\" }' and
-- '{ \"first_name\", second_value\" }'. However, it cannot have two
-- attribute instances where both the 'Attribute.X.Name' and
-- 'Attribute.X.Value' are the same.
--
-- Optionally, the requestor can supply the 'Replace' parameter for each
-- individual attribute. Setting this value to 'true' causes the new
-- attribute value to replace the existing attribute value(s). For example,
-- if an item has the attributes '{ \'a\', \'1\' }', '{ \'b\', \'2\'}' and
-- '{ \'b\', \'3\' }' and the requestor calls 'PutAttributes' using the
-- attributes '{ \'b\', \'4\' }' with the 'Replace' parameter set to true,
-- the final attributes of the item are changed to '{ \'a\', \'1\' }' and
-- '{ \'b\', \'4\' }', which replaces the previous values of the \'b\'
-- attribute with the new value.
--
-- You cannot specify an empty string as an attribute name.
--
-- Because Amazon SimpleDB makes multiple copies of client data and uses an
-- eventual consistency update model, an immediate GetAttributes or Select
-- operation (read) immediately after a PutAttributes or DeleteAttributes
-- operation (write) might not return the updated data.
--
-- The following limitations are enforced for this operation:
--
-- - 256 total attribute name-value pairs per item
-- - One billion attributes per domain
-- - 10 GB of total user data storage per domain
--
-- /See:/ <http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/SDB_API_PutAttributes.html AWS API Reference> for PutAttributes.
module Network.AWS.SDB.PutAttributes
(
-- * Creating a Request
putAttributes
, PutAttributes
-- * Request Lenses
, paExpected
, paDomainName
, paItemName
, paAttributes
-- * Destructuring the Response
, putAttributesResponse
, PutAttributesResponse
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.SDB.Types
import Network.AWS.SDB.Types.Product
-- | /See:/ 'putAttributes' smart constructor.
data PutAttributes = PutAttributes'
{ _paExpected :: !(Maybe UpdateCondition)
, _paDomainName :: !Text
, _paItemName :: !Text
, _paAttributes :: ![ReplaceableAttribute]
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'PutAttributes' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'paExpected'
--
-- * 'paDomainName'
--
-- * 'paItemName'
--
-- * 'paAttributes'
putAttributes
:: Text -- ^ 'paDomainName'
-> Text -- ^ 'paItemName'
-> PutAttributes
putAttributes pDomainName_ pItemName_ =
PutAttributes'
{ _paExpected = Nothing
, _paDomainName = pDomainName_
, _paItemName = pItemName_
, _paAttributes = mempty
}
-- | The update condition which, if specified, determines whether the
-- specified attributes will be updated or not. The update condition must
-- be satisfied in order for this request to be processed and the
-- attributes to be updated.
paExpected :: Lens' PutAttributes (Maybe UpdateCondition)
paExpected = lens _paExpected (\ s a -> s{_paExpected = a});
-- | The name of the domain in which to perform the operation.
paDomainName :: Lens' PutAttributes Text
paDomainName = lens _paDomainName (\ s a -> s{_paDomainName = a});
-- | The name of the item.
paItemName :: Lens' PutAttributes Text
paItemName = lens _paItemName (\ s a -> s{_paItemName = a});
-- | The list of attributes.
paAttributes :: Lens' PutAttributes [ReplaceableAttribute]
paAttributes = lens _paAttributes (\ s a -> s{_paAttributes = a}) . _Coerce;
instance AWSRequest PutAttributes where
type Rs PutAttributes = PutAttributesResponse
request = postQuery sDB
response = receiveNull PutAttributesResponse'
instance ToHeaders PutAttributes where
toHeaders = const mempty
instance ToPath PutAttributes where
toPath = const "/"
instance ToQuery PutAttributes where
toQuery PutAttributes'{..}
= mconcat
["Action" =: ("PutAttributes" :: ByteString),
"Version" =: ("2009-04-15" :: ByteString),
"Expected" =: _paExpected,
"DomainName" =: _paDomainName,
"ItemName" =: _paItemName,
toQueryList "Attribute" _paAttributes]
-- | /See:/ 'putAttributesResponse' smart constructor.
data PutAttributesResponse =
PutAttributesResponse'
deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'PutAttributesResponse' with the minimum fields required to make a request.
--
putAttributesResponse
:: PutAttributesResponse
putAttributesResponse = PutAttributesResponse'