{-# 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 -- 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