amazonka-sdb-0.0.0: gen/Network/AWS/SDB/BatchPutAttributes.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-- Module : Network.AWS.SDB.BatchPutAttributes
-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
-- License : This Source Code Form is subject to the terms of
-- the Mozilla Public License, v. 2.0.
-- A copy of the MPL can be found in the LICENSE file or
-- you can obtain it at http://mozilla.org/MPL/2.0/.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
-- | The BatchPutAttributes operation creates or replaces attributes within one
-- or more items. By using this operation, the client can perform multiple
-- PutAttribute operation with a single call. This helps yield savings in
-- round trips and latencies, enabling Amazon SimpleDB to optimize requests
-- and generally produce better throughput. The client may specify the item
-- name with the Item.X.ItemName parameter. The client may specify new
-- attributes using a combination of the Item.X.Attribute.Y.Name and
-- Item.X.Attribute.Y.Value parameters. The client may specify the first
-- attribute for the first item using the parameters Item.0.Attribute.0.Name
-- and Item.0.Attribute.0.Value, and for the second attribute for the first
-- item by the parameters Item.0.Attribute.1.Name and
-- Item.0.Attribute.1.Value, and so on. Attributes are uniquely identified
-- within 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 Item.X.Attribute.Y.Name and Item.X.Attribute.Y.Value are the same.
-- Optionally, the requester can supply the Replace parameter for each
-- individual value. Setting this value to true will cause the new attribute
-- values to replace the existing attribute values. For example, if an item I
-- has the attributes { 'a', '1' }, { 'b', '2'} and { 'b', '3' } and the
-- requester does a BatchPutAttributes of {'I', 'b', '4' } with the Replace
-- parameter set to true, the final attributes of the item will be { 'a', '1'
-- } and { 'b', '4' }, replacing the previous values of the 'b' attribute with
-- the new value. This operation is vulnerable to exceeding the maximum URL
-- size when making a REST request using the HTTP GET method. This operation
-- does not support conditions using Expected.X.Name, Expected.X.Value, or
-- Expected.X.Exists. You can execute multiple BatchPutAttributes operations
-- and other operations in parallel. However, large numbers of concurrent
-- BatchPutAttributes calls can result in Service Unavailable (503) responses.
-- The following limitations are enforced for this operation: 256 attribute
-- name-value pairs per item 1 MB request size 1 billion attributes per domain
-- 10 GB of total user data storage per domain 25 item limit per
-- BatchPutAttributes operation.
--
-- <http://docs.aws.amazon.com/AmazonSimpleDB/latest/DeveloperGuide/SDB_API_BatchPutAttributes.html>
module Network.AWS.SDB.BatchPutAttributes
(
-- * Request
BatchPutAttributes
-- ** Request constructor
, batchPutAttributes
-- ** Request lenses
, bpaDomainName
, bpaItems
-- * Response
, BatchPutAttributesResponse
-- ** Response constructor
, batchPutAttributesResponse
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.SDB.Types
import qualified GHC.Exts
data BatchPutAttributes = BatchPutAttributes
{ _bpaDomainName :: Text
, _bpaItems :: List "Item" ReplaceableItem
} deriving (Eq, Show)
-- | 'BatchPutAttributes' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'bpaDomainName' @::@ 'Text'
--
-- * 'bpaItems' @::@ ['ReplaceableItem']
--
batchPutAttributes :: Text -- ^ 'bpaDomainName'
-> [ReplaceableItem] -- ^ 'bpaItems'
-> BatchPutAttributes
batchPutAttributes p1 p2 = BatchPutAttributes
{ _bpaDomainName = p1
, _bpaItems = withIso _List (const id) p2
}
-- | The name of the domain in which the attributes are being stored.
bpaDomainName :: Lens' BatchPutAttributes Text
bpaDomainName = lens _bpaDomainName (\s a -> s { _bpaDomainName = a })
-- | A list of items on which to perform the operation.
bpaItems :: Lens' BatchPutAttributes [ReplaceableItem]
bpaItems = lens _bpaItems (\s a -> s { _bpaItems = a }) . _List
data BatchPutAttributesResponse = BatchPutAttributesResponse
deriving (Eq, Ord, Show, Generic)
-- | 'BatchPutAttributesResponse' constructor.
batchPutAttributesResponse :: BatchPutAttributesResponse
batchPutAttributesResponse = BatchPutAttributesResponse
instance ToPath BatchPutAttributes where
toPath = const "/"
instance ToQuery BatchPutAttributes where
toQuery BatchPutAttributes{..} = mconcat
[ "DomainName" =? _bpaDomainName
, toQuery _bpaItems
]
instance ToHeaders BatchPutAttributes
instance AWSRequest BatchPutAttributes where
type Sv BatchPutAttributes = SDB
type Rs BatchPutAttributes = BatchPutAttributesResponse
request = post "BatchPutAttributes"
response = nullResponse BatchPutAttributesResponse