aws-0.15: Aws/DynamoDb/Commands/DeleteItem.hs
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoMonomorphismRestriction #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeFamilies #-}
-----------------------------------------------------------------------------
-- |
-- Module : Aws.DynamoDb.Commands.DeleteItem
-- Copyright : Soostone Inc
-- License : BSD3
--
-- Maintainer : Ozgun Ataman <ozgun.ataman@soostone.com>
-- Stability : experimental
--
-- @http:\/\/docs.aws.amazon.com\/amazondynamodb\/latest\/APIReference\/API_DeleteItem.html@
----------------------------------------------------------------------------
module Aws.DynamoDb.Commands.DeleteItem where
-------------------------------------------------------------------------------
import Control.Applicative
import Data.Aeson
import Data.Default
import qualified Data.Text as T
import Prelude
-------------------------------------------------------------------------------
import Aws.Core
import Aws.DynamoDb.Core
-------------------------------------------------------------------------------
data DeleteItem = DeleteItem {
diTable :: T.Text
-- ^ Target table
, diKey :: PrimaryKey
-- ^ The item to delete.
, diExpect :: Conditions
-- ^ (Possible) set of expections for a conditional Put
, diReturn :: UpdateReturn
-- ^ What to return from this query.
, diRetCons :: ReturnConsumption
, diRetMet :: ReturnItemCollectionMetrics
} deriving (Eq,Show,Read,Ord)
-------------------------------------------------------------------------------
-- | Construct a minimal 'DeleteItem' request.
deleteItem :: T.Text
-- ^ A Dynamo table name
-> PrimaryKey
-- ^ Item to be saved
-> DeleteItem
deleteItem tn key = DeleteItem tn key def def def def
instance ToJSON DeleteItem where
toJSON DeleteItem{..} =
object $ expectsJson diExpect ++
[ "TableName" .= diTable
, "Key" .= diKey
, "ReturnValues" .= diReturn
, "ReturnConsumedCapacity" .= diRetCons
, "ReturnItemCollectionMetrics" .= diRetMet
]
data DeleteItemResponse = DeleteItemResponse {
dirAttrs :: Maybe Item
-- ^ Old attributes, if requested
, dirConsumed :: Maybe ConsumedCapacity
-- ^ Amount of capacity consumed
, dirColMet :: Maybe ItemCollectionMetrics
-- ^ Collection metrics if they have been requested.
} deriving (Eq,Show,Read,Ord)
instance Transaction DeleteItem DeleteItemResponse
instance SignQuery DeleteItem where
type ServiceConfiguration DeleteItem = DdbConfiguration
signQuery gi = ddbSignQuery "DeleteItem" gi
instance FromJSON DeleteItemResponse where
parseJSON (Object v) = DeleteItemResponse
<$> v .:? "Attributes"
<*> v .:? "ConsumedCapacity"
<*> v .:? "ItemCollectionMetrics"
parseJSON _ = fail "DeleteItemResponse must be an object."
instance ResponseConsumer r DeleteItemResponse where
type ResponseMetadata DeleteItemResponse = DdbResponse
responseConsumer _ _ ref resp = ddbResponseConsumer ref resp
instance AsMemoryResponse DeleteItemResponse where
type MemoryResponse DeleteItemResponse = DeleteItemResponse
loadToMemory = return