{-# 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 -- 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 -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | 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 -- -- 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 "member" ReplaceableItem } deriving (Eq, Read, Show) -- | 'BatchPutAttributes' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'bpaDomainName' @::@ 'Text' -- -- * 'bpaItems' @::@ ['ReplaceableItem'] -- batchPutAttributes :: Text -- ^ 'bpaDomainName' -> BatchPutAttributes batchPutAttributes p1 = BatchPutAttributes { _bpaDomainName = p1 , _bpaItems = mempty } -- | 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, Read, 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