amazonka-dynamodb 0.3.6 → 1.0.0
raw patch · 24 files changed
+8795/−6734 lines, 24 filesdep +amazonka-dynamodbdep +amazonka-testdep +bytestringdep ~amazonka-coredep ~basePVP ok
version bump matches the API change (PVP)
Dependencies added: amazonka-dynamodb, amazonka-test, bytestring, lens, tasty, tasty-hunit, text, time, unordered-containers
Dependency ranges changed: amazonka-core, base
API changes (from Hackage documentation)
- Network.AWS.DynamoDB.BatchGetItem: bgirConsumedCapacity :: Lens' BatchGetItemResponse [ConsumedCapacity]
- Network.AWS.DynamoDB.BatchGetItem: bgirResponses :: Lens' BatchGetItemResponse (HashMap Text [HashMap Text AttributeValue])
- Network.AWS.DynamoDB.BatchGetItem: bgirUnprocessedKeys :: Lens' BatchGetItemResponse (HashMap Text KeysAndAttributes)
- Network.AWS.DynamoDB.BatchGetItem: instance AWSRequest BatchGetItem
- Network.AWS.DynamoDB.BatchGetItem: instance Eq BatchGetItem
- Network.AWS.DynamoDB.BatchGetItem: instance Eq BatchGetItemResponse
- Network.AWS.DynamoDB.BatchGetItem: instance FromJSON BatchGetItemResponse
- Network.AWS.DynamoDB.BatchGetItem: instance Read BatchGetItem
- Network.AWS.DynamoDB.BatchGetItem: instance Read BatchGetItemResponse
- Network.AWS.DynamoDB.BatchGetItem: instance Show BatchGetItem
- Network.AWS.DynamoDB.BatchGetItem: instance Show BatchGetItemResponse
- Network.AWS.DynamoDB.BatchGetItem: instance ToHeaders BatchGetItem
- Network.AWS.DynamoDB.BatchGetItem: instance ToJSON BatchGetItem
- Network.AWS.DynamoDB.BatchGetItem: instance ToPath BatchGetItem
- Network.AWS.DynamoDB.BatchGetItem: instance ToQuery BatchGetItem
- Network.AWS.DynamoDB.BatchWriteItem: bwirConsumedCapacity :: Lens' BatchWriteItemResponse [ConsumedCapacity]
- Network.AWS.DynamoDB.BatchWriteItem: bwirItemCollectionMetrics :: Lens' BatchWriteItemResponse (HashMap Text [ItemCollectionMetrics])
- Network.AWS.DynamoDB.BatchWriteItem: bwirUnprocessedItems :: Lens' BatchWriteItemResponse (HashMap Text (NonEmpty WriteRequest))
- Network.AWS.DynamoDB.BatchWriteItem: instance AWSRequest BatchWriteItem
- Network.AWS.DynamoDB.BatchWriteItem: instance Eq BatchWriteItem
- Network.AWS.DynamoDB.BatchWriteItem: instance Eq BatchWriteItemResponse
- Network.AWS.DynamoDB.BatchWriteItem: instance FromJSON BatchWriteItemResponse
- Network.AWS.DynamoDB.BatchWriteItem: instance Read BatchWriteItem
- Network.AWS.DynamoDB.BatchWriteItem: instance Read BatchWriteItemResponse
- Network.AWS.DynamoDB.BatchWriteItem: instance Show BatchWriteItem
- Network.AWS.DynamoDB.BatchWriteItem: instance Show BatchWriteItemResponse
- Network.AWS.DynamoDB.BatchWriteItem: instance ToHeaders BatchWriteItem
- Network.AWS.DynamoDB.BatchWriteItem: instance ToJSON BatchWriteItem
- Network.AWS.DynamoDB.BatchWriteItem: instance ToPath BatchWriteItem
- Network.AWS.DynamoDB.BatchWriteItem: instance ToQuery BatchWriteItem
- Network.AWS.DynamoDB.CreateTable: ctrTableDescription :: Lens' CreateTableResponse (Maybe TableDescription)
- Network.AWS.DynamoDB.CreateTable: instance AWSRequest CreateTable
- Network.AWS.DynamoDB.CreateTable: instance Eq CreateTable
- Network.AWS.DynamoDB.CreateTable: instance Eq CreateTableResponse
- Network.AWS.DynamoDB.CreateTable: instance FromJSON CreateTableResponse
- Network.AWS.DynamoDB.CreateTable: instance Read CreateTable
- Network.AWS.DynamoDB.CreateTable: instance Read CreateTableResponse
- Network.AWS.DynamoDB.CreateTable: instance Show CreateTable
- Network.AWS.DynamoDB.CreateTable: instance Show CreateTableResponse
- Network.AWS.DynamoDB.CreateTable: instance ToHeaders CreateTable
- Network.AWS.DynamoDB.CreateTable: instance ToJSON CreateTable
- Network.AWS.DynamoDB.CreateTable: instance ToPath CreateTable
- Network.AWS.DynamoDB.CreateTable: instance ToQuery CreateTable
- Network.AWS.DynamoDB.DeleteItem: dirAttributes :: Lens' DeleteItemResponse (HashMap Text AttributeValue)
- Network.AWS.DynamoDB.DeleteItem: dirConsumedCapacity :: Lens' DeleteItemResponse (Maybe ConsumedCapacity)
- Network.AWS.DynamoDB.DeleteItem: dirItemCollectionMetrics :: Lens' DeleteItemResponse (Maybe ItemCollectionMetrics)
- Network.AWS.DynamoDB.DeleteItem: instance AWSRequest DeleteItem
- Network.AWS.DynamoDB.DeleteItem: instance Eq DeleteItem
- Network.AWS.DynamoDB.DeleteItem: instance Eq DeleteItemResponse
- Network.AWS.DynamoDB.DeleteItem: instance FromJSON DeleteItemResponse
- Network.AWS.DynamoDB.DeleteItem: instance Read DeleteItem
- Network.AWS.DynamoDB.DeleteItem: instance Read DeleteItemResponse
- Network.AWS.DynamoDB.DeleteItem: instance Show DeleteItem
- Network.AWS.DynamoDB.DeleteItem: instance Show DeleteItemResponse
- Network.AWS.DynamoDB.DeleteItem: instance ToHeaders DeleteItem
- Network.AWS.DynamoDB.DeleteItem: instance ToJSON DeleteItem
- Network.AWS.DynamoDB.DeleteItem: instance ToPath DeleteItem
- Network.AWS.DynamoDB.DeleteItem: instance ToQuery DeleteItem
- Network.AWS.DynamoDB.DeleteTable: dtrTableDescription :: Lens' DeleteTableResponse (Maybe TableDescription)
- Network.AWS.DynamoDB.DeleteTable: instance AWSRequest DeleteTable
- Network.AWS.DynamoDB.DeleteTable: instance Eq DeleteTable
- Network.AWS.DynamoDB.DeleteTable: instance Eq DeleteTableResponse
- Network.AWS.DynamoDB.DeleteTable: instance FromJSON DeleteTableResponse
- Network.AWS.DynamoDB.DeleteTable: instance IsString DeleteTable
- Network.AWS.DynamoDB.DeleteTable: instance Monoid DeleteTable
- Network.AWS.DynamoDB.DeleteTable: instance Ord DeleteTable
- Network.AWS.DynamoDB.DeleteTable: instance Read DeleteTable
- Network.AWS.DynamoDB.DeleteTable: instance Read DeleteTableResponse
- Network.AWS.DynamoDB.DeleteTable: instance Show DeleteTable
- Network.AWS.DynamoDB.DeleteTable: instance Show DeleteTableResponse
- Network.AWS.DynamoDB.DeleteTable: instance ToHeaders DeleteTable
- Network.AWS.DynamoDB.DeleteTable: instance ToJSON DeleteTable
- Network.AWS.DynamoDB.DeleteTable: instance ToPath DeleteTable
- Network.AWS.DynamoDB.DeleteTable: instance ToQuery DeleteTable
- Network.AWS.DynamoDB.DescribeTable: dt1TableName :: Lens' DescribeTable Text
- Network.AWS.DynamoDB.DescribeTable: dtrTable :: Lens' DescribeTableResponse TableDescription
- Network.AWS.DynamoDB.DescribeTable: instance AWSRequest DescribeTable
- Network.AWS.DynamoDB.DescribeTable: instance Eq DescribeTable
- Network.AWS.DynamoDB.DescribeTable: instance Eq DescribeTableResponse
- Network.AWS.DynamoDB.DescribeTable: instance FromJSON DescribeTableResponse
- Network.AWS.DynamoDB.DescribeTable: instance IsString DescribeTable
- Network.AWS.DynamoDB.DescribeTable: instance Monoid DescribeTable
- Network.AWS.DynamoDB.DescribeTable: instance Ord DescribeTable
- Network.AWS.DynamoDB.DescribeTable: instance Read DescribeTable
- Network.AWS.DynamoDB.DescribeTable: instance Read DescribeTableResponse
- Network.AWS.DynamoDB.DescribeTable: instance Show DescribeTable
- Network.AWS.DynamoDB.DescribeTable: instance Show DescribeTableResponse
- Network.AWS.DynamoDB.DescribeTable: instance ToHeaders DescribeTable
- Network.AWS.DynamoDB.DescribeTable: instance ToJSON DescribeTable
- Network.AWS.DynamoDB.DescribeTable: instance ToPath DescribeTable
- Network.AWS.DynamoDB.DescribeTable: instance ToQuery DescribeTable
- Network.AWS.DynamoDB.GetItem: girConsumedCapacity :: Lens' GetItemResponse (Maybe ConsumedCapacity)
- Network.AWS.DynamoDB.GetItem: girItem :: Lens' GetItemResponse (HashMap Text AttributeValue)
- Network.AWS.DynamoDB.GetItem: instance AWSRequest GetItem
- Network.AWS.DynamoDB.GetItem: instance Eq GetItem
- Network.AWS.DynamoDB.GetItem: instance Eq GetItemResponse
- Network.AWS.DynamoDB.GetItem: instance FromJSON GetItemResponse
- Network.AWS.DynamoDB.GetItem: instance Read GetItem
- Network.AWS.DynamoDB.GetItem: instance Read GetItemResponse
- Network.AWS.DynamoDB.GetItem: instance Show GetItem
- Network.AWS.DynamoDB.GetItem: instance Show GetItemResponse
- Network.AWS.DynamoDB.GetItem: instance ToHeaders GetItem
- Network.AWS.DynamoDB.GetItem: instance ToJSON GetItem
- Network.AWS.DynamoDB.GetItem: instance ToPath GetItem
- Network.AWS.DynamoDB.GetItem: instance ToQuery GetItem
- Network.AWS.DynamoDB.ListTables: instance AWSPager ListTables
- Network.AWS.DynamoDB.ListTables: instance AWSRequest ListTables
- Network.AWS.DynamoDB.ListTables: instance Eq ListTables
- Network.AWS.DynamoDB.ListTables: instance Eq ListTablesResponse
- Network.AWS.DynamoDB.ListTables: instance FromJSON ListTablesResponse
- Network.AWS.DynamoDB.ListTables: instance Ord ListTables
- Network.AWS.DynamoDB.ListTables: instance Ord ListTablesResponse
- Network.AWS.DynamoDB.ListTables: instance Read ListTables
- Network.AWS.DynamoDB.ListTables: instance Read ListTablesResponse
- Network.AWS.DynamoDB.ListTables: instance Show ListTables
- Network.AWS.DynamoDB.ListTables: instance Show ListTablesResponse
- Network.AWS.DynamoDB.ListTables: instance ToHeaders ListTables
- Network.AWS.DynamoDB.ListTables: instance ToJSON ListTables
- Network.AWS.DynamoDB.ListTables: instance ToPath ListTables
- Network.AWS.DynamoDB.ListTables: instance ToQuery ListTables
- Network.AWS.DynamoDB.ListTables: ltrLastEvaluatedTableName :: Lens' ListTablesResponse (Maybe Text)
- Network.AWS.DynamoDB.ListTables: ltrTableNames :: Lens' ListTablesResponse [Text]
- Network.AWS.DynamoDB.PutItem: instance AWSRequest PutItem
- Network.AWS.DynamoDB.PutItem: instance Eq PutItem
- Network.AWS.DynamoDB.PutItem: instance Eq PutItemResponse
- Network.AWS.DynamoDB.PutItem: instance FromJSON PutItemResponse
- Network.AWS.DynamoDB.PutItem: instance Read PutItem
- Network.AWS.DynamoDB.PutItem: instance Read PutItemResponse
- Network.AWS.DynamoDB.PutItem: instance Show PutItem
- Network.AWS.DynamoDB.PutItem: instance Show PutItemResponse
- Network.AWS.DynamoDB.PutItem: instance ToHeaders PutItem
- Network.AWS.DynamoDB.PutItem: instance ToJSON PutItem
- Network.AWS.DynamoDB.PutItem: instance ToPath PutItem
- Network.AWS.DynamoDB.PutItem: instance ToQuery PutItem
- Network.AWS.DynamoDB.PutItem: pirAttributes :: Lens' PutItemResponse (HashMap Text AttributeValue)
- Network.AWS.DynamoDB.PutItem: pirConsumedCapacity :: Lens' PutItemResponse (Maybe ConsumedCapacity)
- Network.AWS.DynamoDB.PutItem: pirItemCollectionMetrics :: Lens' PutItemResponse (Maybe ItemCollectionMetrics)
- Network.AWS.DynamoDB.Query: instance AWSPager Query
- Network.AWS.DynamoDB.Query: instance AWSRequest Query
- Network.AWS.DynamoDB.Query: instance Eq Query
- Network.AWS.DynamoDB.Query: instance Eq QueryResponse
- Network.AWS.DynamoDB.Query: instance FromJSON QueryResponse
- Network.AWS.DynamoDB.Query: instance Read Query
- Network.AWS.DynamoDB.Query: instance Read QueryResponse
- Network.AWS.DynamoDB.Query: instance Show Query
- Network.AWS.DynamoDB.Query: instance Show QueryResponse
- Network.AWS.DynamoDB.Query: instance ToHeaders Query
- Network.AWS.DynamoDB.Query: instance ToJSON Query
- Network.AWS.DynamoDB.Query: instance ToPath Query
- Network.AWS.DynamoDB.Query: instance ToQuery Query
- Network.AWS.DynamoDB.Query: qrConsumedCapacity :: Lens' QueryResponse (Maybe ConsumedCapacity)
- Network.AWS.DynamoDB.Query: qrCount :: Lens' QueryResponse (Maybe Int)
- Network.AWS.DynamoDB.Query: qrItems :: Lens' QueryResponse [HashMap Text AttributeValue]
- Network.AWS.DynamoDB.Query: qrLastEvaluatedKey :: Lens' QueryResponse (HashMap Text AttributeValue)
- Network.AWS.DynamoDB.Query: qrScannedCount :: Lens' QueryResponse (Maybe Int)
- Network.AWS.DynamoDB.Scan: instance AWSPager Scan
- Network.AWS.DynamoDB.Scan: instance AWSRequest Scan
- Network.AWS.DynamoDB.Scan: instance Eq Scan
- Network.AWS.DynamoDB.Scan: instance Eq ScanResponse
- Network.AWS.DynamoDB.Scan: instance FromJSON ScanResponse
- Network.AWS.DynamoDB.Scan: instance Read Scan
- Network.AWS.DynamoDB.Scan: instance Read ScanResponse
- Network.AWS.DynamoDB.Scan: instance Show Scan
- Network.AWS.DynamoDB.Scan: instance Show ScanResponse
- Network.AWS.DynamoDB.Scan: instance ToHeaders Scan
- Network.AWS.DynamoDB.Scan: instance ToJSON Scan
- Network.AWS.DynamoDB.Scan: instance ToPath Scan
- Network.AWS.DynamoDB.Scan: instance ToQuery Scan
- Network.AWS.DynamoDB.Scan: srConsumedCapacity :: Lens' ScanResponse (Maybe ConsumedCapacity)
- Network.AWS.DynamoDB.Scan: srCount :: Lens' ScanResponse (Maybe Int)
- Network.AWS.DynamoDB.Scan: srItems :: Lens' ScanResponse [HashMap Text AttributeValue]
- Network.AWS.DynamoDB.Scan: srLastEvaluatedKey :: Lens' ScanResponse (HashMap Text AttributeValue)
- Network.AWS.DynamoDB.Scan: srScannedCount :: Lens' ScanResponse (Maybe Int)
- Network.AWS.DynamoDB.Types: Delete' :: AttributeAction
- Network.AWS.DynamoDB.Types: Eq :: ComparisonOperator
- Network.AWS.DynamoDB.Types: Ge :: ComparisonOperator
- Network.AWS.DynamoDB.Types: Gt :: ComparisonOperator
- Network.AWS.DynamoDB.Types: In' :: ComparisonOperator
- Network.AWS.DynamoDB.Types: Indexes :: ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: Le :: ComparisonOperator
- Network.AWS.DynamoDB.Types: Lt :: ComparisonOperator
- Network.AWS.DynamoDB.Types: Ne :: ComparisonOperator
- Network.AWS.DynamoDB.Types: Or :: ConditionalOperator
- Network.AWS.DynamoDB.Types: RVAllNew :: ReturnValue
- Network.AWS.DynamoDB.Types: RVAllOld :: ReturnValue
- Network.AWS.DynamoDB.Types: RVNone :: ReturnValue
- Network.AWS.DynamoDB.Types: RVUpdatedNew :: ReturnValue
- Network.AWS.DynamoDB.Types: RVUpdatedOld :: ReturnValue
- Network.AWS.DynamoDB.Types: TSActive :: TableStatus
- Network.AWS.DynamoDB.Types: TSCreating :: TableStatus
- Network.AWS.DynamoDB.Types: TSDeleting :: TableStatus
- Network.AWS.DynamoDB.Types: TSUpdating :: TableStatus
- Network.AWS.DynamoDB.Types: Total :: ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: dKey :: Lens' DeleteRequest (HashMap Text AttributeValue)
- Network.AWS.DynamoDB.Types: data JSONError :: *
- Network.AWS.DynamoDB.Types: instance AWSService DynamoDB
- Network.AWS.DynamoDB.Types: instance Constructor C1_0AttributeAction
- Network.AWS.DynamoDB.Types: instance Constructor C1_0ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_0ConditionalOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_0IndexStatus
- Network.AWS.DynamoDB.Types: instance Constructor C1_0KeyType
- Network.AWS.DynamoDB.Types: instance Constructor C1_0ProjectionType
- Network.AWS.DynamoDB.Types: instance Constructor C1_0ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Constructor C1_0ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Constructor C1_0ReturnValue
- Network.AWS.DynamoDB.Types: instance Constructor C1_0ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance Constructor C1_0Select
- Network.AWS.DynamoDB.Types: instance Constructor C1_0TableStatus
- Network.AWS.DynamoDB.Types: instance Constructor C1_10ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_11ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_12ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_1AttributeAction
- Network.AWS.DynamoDB.Types: instance Constructor C1_1ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_1ConditionalOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_1IndexStatus
- Network.AWS.DynamoDB.Types: instance Constructor C1_1KeyType
- Network.AWS.DynamoDB.Types: instance Constructor C1_1ProjectionType
- Network.AWS.DynamoDB.Types: instance Constructor C1_1ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Constructor C1_1ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Constructor C1_1ReturnValue
- Network.AWS.DynamoDB.Types: instance Constructor C1_1ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance Constructor C1_1Select
- Network.AWS.DynamoDB.Types: instance Constructor C1_1TableStatus
- Network.AWS.DynamoDB.Types: instance Constructor C1_2AttributeAction
- Network.AWS.DynamoDB.Types: instance Constructor C1_2ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_2IndexStatus
- Network.AWS.DynamoDB.Types: instance Constructor C1_2ProjectionType
- Network.AWS.DynamoDB.Types: instance Constructor C1_2ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Constructor C1_2ReturnValue
- Network.AWS.DynamoDB.Types: instance Constructor C1_2ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance Constructor C1_2Select
- Network.AWS.DynamoDB.Types: instance Constructor C1_2TableStatus
- Network.AWS.DynamoDB.Types: instance Constructor C1_3ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_3IndexStatus
- Network.AWS.DynamoDB.Types: instance Constructor C1_3ReturnValue
- Network.AWS.DynamoDB.Types: instance Constructor C1_3Select
- Network.AWS.DynamoDB.Types: instance Constructor C1_3TableStatus
- Network.AWS.DynamoDB.Types: instance Constructor C1_4ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_4ReturnValue
- Network.AWS.DynamoDB.Types: instance Constructor C1_5ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_6ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_7ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_8ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Constructor C1_9ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Datatype D1AttributeAction
- Network.AWS.DynamoDB.Types: instance Datatype D1ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Datatype D1ConditionalOperator
- Network.AWS.DynamoDB.Types: instance Datatype D1IndexStatus
- Network.AWS.DynamoDB.Types: instance Datatype D1KeyType
- Network.AWS.DynamoDB.Types: instance Datatype D1ProjectionType
- Network.AWS.DynamoDB.Types: instance Datatype D1ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Datatype D1ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Datatype D1ReturnValue
- Network.AWS.DynamoDB.Types: instance Datatype D1ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance Datatype D1Select
- Network.AWS.DynamoDB.Types: instance Datatype D1TableStatus
- Network.AWS.DynamoDB.Types: instance Enum AttributeAction
- Network.AWS.DynamoDB.Types: instance Enum ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Enum ConditionalOperator
- Network.AWS.DynamoDB.Types: instance Enum IndexStatus
- Network.AWS.DynamoDB.Types: instance Enum KeyType
- Network.AWS.DynamoDB.Types: instance Enum ProjectionType
- Network.AWS.DynamoDB.Types: instance Enum ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Enum ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Enum ReturnValue
- Network.AWS.DynamoDB.Types: instance Enum ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance Enum Select
- Network.AWS.DynamoDB.Types: instance Enum TableStatus
- Network.AWS.DynamoDB.Types: instance Eq AttributeAction
- Network.AWS.DynamoDB.Types: instance Eq AttributeDefinition
- Network.AWS.DynamoDB.Types: instance Eq AttributeValue
- Network.AWS.DynamoDB.Types: instance Eq AttributeValueUpdate
- Network.AWS.DynamoDB.Types: instance Eq Capacity
- Network.AWS.DynamoDB.Types: instance Eq ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Eq Condition
- Network.AWS.DynamoDB.Types: instance Eq ConditionalOperator
- Network.AWS.DynamoDB.Types: instance Eq ConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Eq CreateGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Eq DeleteGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Eq DeleteRequest
- Network.AWS.DynamoDB.Types: instance Eq ExpectedAttributeValue
- Network.AWS.DynamoDB.Types: instance Eq GlobalSecondaryIndex
- Network.AWS.DynamoDB.Types: instance Eq GlobalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: instance Eq GlobalSecondaryIndexUpdate
- Network.AWS.DynamoDB.Types: instance Eq IndexStatus
- Network.AWS.DynamoDB.Types: instance Eq ItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Eq KeySchemaElement
- Network.AWS.DynamoDB.Types: instance Eq KeyType
- Network.AWS.DynamoDB.Types: instance Eq KeysAndAttributes
- Network.AWS.DynamoDB.Types: instance Eq LocalSecondaryIndex
- Network.AWS.DynamoDB.Types: instance Eq LocalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: instance Eq Projection
- Network.AWS.DynamoDB.Types: instance Eq ProjectionType
- Network.AWS.DynamoDB.Types: instance Eq ProvisionedThroughput
- Network.AWS.DynamoDB.Types: instance Eq ProvisionedThroughputDescription
- Network.AWS.DynamoDB.Types: instance Eq PutRequest
- Network.AWS.DynamoDB.Types: instance Eq ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Eq ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Eq ReturnValue
- Network.AWS.DynamoDB.Types: instance Eq ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance Eq Select
- Network.AWS.DynamoDB.Types: instance Eq TableDescription
- Network.AWS.DynamoDB.Types: instance Eq TableStatus
- Network.AWS.DynamoDB.Types: instance Eq UpdateGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Eq WriteRequest
- Network.AWS.DynamoDB.Types: instance FromJSON AttributeAction
- Network.AWS.DynamoDB.Types: instance FromJSON AttributeDefinition
- Network.AWS.DynamoDB.Types: instance FromJSON AttributeValue
- Network.AWS.DynamoDB.Types: instance FromJSON AttributeValueUpdate
- Network.AWS.DynamoDB.Types: instance FromJSON Capacity
- Network.AWS.DynamoDB.Types: instance FromJSON ComparisonOperator
- Network.AWS.DynamoDB.Types: instance FromJSON Condition
- Network.AWS.DynamoDB.Types: instance FromJSON ConditionalOperator
- Network.AWS.DynamoDB.Types: instance FromJSON ConsumedCapacity
- Network.AWS.DynamoDB.Types: instance FromJSON CreateGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance FromJSON DeleteGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance FromJSON DeleteRequest
- Network.AWS.DynamoDB.Types: instance FromJSON ExpectedAttributeValue
- Network.AWS.DynamoDB.Types: instance FromJSON GlobalSecondaryIndex
- Network.AWS.DynamoDB.Types: instance FromJSON GlobalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: instance FromJSON GlobalSecondaryIndexUpdate
- Network.AWS.DynamoDB.Types: instance FromJSON IndexStatus
- Network.AWS.DynamoDB.Types: instance FromJSON ItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance FromJSON KeySchemaElement
- Network.AWS.DynamoDB.Types: instance FromJSON KeyType
- Network.AWS.DynamoDB.Types: instance FromJSON KeysAndAttributes
- Network.AWS.DynamoDB.Types: instance FromJSON LocalSecondaryIndex
- Network.AWS.DynamoDB.Types: instance FromJSON LocalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: instance FromJSON Projection
- Network.AWS.DynamoDB.Types: instance FromJSON ProjectionType
- Network.AWS.DynamoDB.Types: instance FromJSON ProvisionedThroughput
- Network.AWS.DynamoDB.Types: instance FromJSON ProvisionedThroughputDescription
- Network.AWS.DynamoDB.Types: instance FromJSON PutRequest
- Network.AWS.DynamoDB.Types: instance FromJSON ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance FromJSON ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance FromJSON ReturnValue
- Network.AWS.DynamoDB.Types: instance FromJSON ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance FromJSON Select
- Network.AWS.DynamoDB.Types: instance FromJSON TableDescription
- Network.AWS.DynamoDB.Types: instance FromJSON TableStatus
- Network.AWS.DynamoDB.Types: instance FromJSON UpdateGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance FromJSON WriteRequest
- Network.AWS.DynamoDB.Types: instance FromText AttributeAction
- Network.AWS.DynamoDB.Types: instance FromText ComparisonOperator
- Network.AWS.DynamoDB.Types: instance FromText ConditionalOperator
- Network.AWS.DynamoDB.Types: instance FromText IndexStatus
- Network.AWS.DynamoDB.Types: instance FromText KeyType
- Network.AWS.DynamoDB.Types: instance FromText ProjectionType
- Network.AWS.DynamoDB.Types: instance FromText ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance FromText ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance FromText ReturnValue
- Network.AWS.DynamoDB.Types: instance FromText ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance FromText Select
- Network.AWS.DynamoDB.Types: instance FromText TableStatus
- Network.AWS.DynamoDB.Types: instance Generic AttributeAction
- Network.AWS.DynamoDB.Types: instance Generic ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Generic ConditionalOperator
- Network.AWS.DynamoDB.Types: instance Generic IndexStatus
- Network.AWS.DynamoDB.Types: instance Generic KeyType
- Network.AWS.DynamoDB.Types: instance Generic ProjectionType
- Network.AWS.DynamoDB.Types: instance Generic ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Generic ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Generic ReturnValue
- Network.AWS.DynamoDB.Types: instance Generic ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance Generic Select
- Network.AWS.DynamoDB.Types: instance Generic TableStatus
- Network.AWS.DynamoDB.Types: instance Hashable AttributeAction
- Network.AWS.DynamoDB.Types: instance Hashable ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Hashable ConditionalOperator
- Network.AWS.DynamoDB.Types: instance Hashable IndexStatus
- Network.AWS.DynamoDB.Types: instance Hashable KeyType
- Network.AWS.DynamoDB.Types: instance Hashable ProjectionType
- Network.AWS.DynamoDB.Types: instance Hashable ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Hashable ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Hashable ReturnValue
- Network.AWS.DynamoDB.Types: instance Hashable ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance Hashable Select
- Network.AWS.DynamoDB.Types: instance Hashable TableStatus
- Network.AWS.DynamoDB.Types: instance IsString DeleteGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Monoid DeleteGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Monoid DeleteRequest
- Network.AWS.DynamoDB.Types: instance Monoid PutRequest
- Network.AWS.DynamoDB.Types: instance Ord AttributeAction
- Network.AWS.DynamoDB.Types: instance Ord Capacity
- Network.AWS.DynamoDB.Types: instance Ord ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Ord ConditionalOperator
- Network.AWS.DynamoDB.Types: instance Ord DeleteGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Ord IndexStatus
- Network.AWS.DynamoDB.Types: instance Ord KeyType
- Network.AWS.DynamoDB.Types: instance Ord ProjectionType
- Network.AWS.DynamoDB.Types: instance Ord ProvisionedThroughput
- Network.AWS.DynamoDB.Types: instance Ord ProvisionedThroughputDescription
- Network.AWS.DynamoDB.Types: instance Ord ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Ord ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Ord ReturnValue
- Network.AWS.DynamoDB.Types: instance Ord ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance Ord Select
- Network.AWS.DynamoDB.Types: instance Ord TableStatus
- Network.AWS.DynamoDB.Types: instance Read AttributeAction
- Network.AWS.DynamoDB.Types: instance Read AttributeDefinition
- Network.AWS.DynamoDB.Types: instance Read AttributeValue
- Network.AWS.DynamoDB.Types: instance Read AttributeValueUpdate
- Network.AWS.DynamoDB.Types: instance Read Capacity
- Network.AWS.DynamoDB.Types: instance Read ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Read Condition
- Network.AWS.DynamoDB.Types: instance Read ConditionalOperator
- Network.AWS.DynamoDB.Types: instance Read ConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Read CreateGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Read DeleteGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Read DeleteRequest
- Network.AWS.DynamoDB.Types: instance Read ExpectedAttributeValue
- Network.AWS.DynamoDB.Types: instance Read GlobalSecondaryIndex
- Network.AWS.DynamoDB.Types: instance Read GlobalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: instance Read GlobalSecondaryIndexUpdate
- Network.AWS.DynamoDB.Types: instance Read IndexStatus
- Network.AWS.DynamoDB.Types: instance Read ItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Read KeySchemaElement
- Network.AWS.DynamoDB.Types: instance Read KeyType
- Network.AWS.DynamoDB.Types: instance Read KeysAndAttributes
- Network.AWS.DynamoDB.Types: instance Read LocalSecondaryIndex
- Network.AWS.DynamoDB.Types: instance Read LocalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: instance Read Projection
- Network.AWS.DynamoDB.Types: instance Read ProjectionType
- Network.AWS.DynamoDB.Types: instance Read ProvisionedThroughput
- Network.AWS.DynamoDB.Types: instance Read ProvisionedThroughputDescription
- Network.AWS.DynamoDB.Types: instance Read PutRequest
- Network.AWS.DynamoDB.Types: instance Read ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Read ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Read ReturnValue
- Network.AWS.DynamoDB.Types: instance Read ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance Read Select
- Network.AWS.DynamoDB.Types: instance Read TableDescription
- Network.AWS.DynamoDB.Types: instance Read TableStatus
- Network.AWS.DynamoDB.Types: instance Read UpdateGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Read WriteRequest
- Network.AWS.DynamoDB.Types: instance Semigroup DeleteRequest
- Network.AWS.DynamoDB.Types: instance Semigroup PutRequest
- Network.AWS.DynamoDB.Types: instance Show AttributeAction
- Network.AWS.DynamoDB.Types: instance Show AttributeDefinition
- Network.AWS.DynamoDB.Types: instance Show AttributeValue
- Network.AWS.DynamoDB.Types: instance Show AttributeValueUpdate
- Network.AWS.DynamoDB.Types: instance Show Capacity
- Network.AWS.DynamoDB.Types: instance Show ComparisonOperator
- Network.AWS.DynamoDB.Types: instance Show Condition
- Network.AWS.DynamoDB.Types: instance Show ConditionalOperator
- Network.AWS.DynamoDB.Types: instance Show ConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Show CreateGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Show DeleteGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Show DeleteRequest
- Network.AWS.DynamoDB.Types: instance Show ExpectedAttributeValue
- Network.AWS.DynamoDB.Types: instance Show GlobalSecondaryIndex
- Network.AWS.DynamoDB.Types: instance Show GlobalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: instance Show GlobalSecondaryIndexUpdate
- Network.AWS.DynamoDB.Types: instance Show IndexStatus
- Network.AWS.DynamoDB.Types: instance Show ItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Show KeySchemaElement
- Network.AWS.DynamoDB.Types: instance Show KeyType
- Network.AWS.DynamoDB.Types: instance Show KeysAndAttributes
- Network.AWS.DynamoDB.Types: instance Show LocalSecondaryIndex
- Network.AWS.DynamoDB.Types: instance Show LocalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: instance Show Projection
- Network.AWS.DynamoDB.Types: instance Show ProjectionType
- Network.AWS.DynamoDB.Types: instance Show ProvisionedThroughput
- Network.AWS.DynamoDB.Types: instance Show ProvisionedThroughputDescription
- Network.AWS.DynamoDB.Types: instance Show PutRequest
- Network.AWS.DynamoDB.Types: instance Show ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance Show ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance Show ReturnValue
- Network.AWS.DynamoDB.Types: instance Show ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance Show Select
- Network.AWS.DynamoDB.Types: instance Show TableDescription
- Network.AWS.DynamoDB.Types: instance Show TableStatus
- Network.AWS.DynamoDB.Types: instance Show UpdateGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance Show WriteRequest
- Network.AWS.DynamoDB.Types: instance ToByteString AttributeAction
- Network.AWS.DynamoDB.Types: instance ToByteString ComparisonOperator
- Network.AWS.DynamoDB.Types: instance ToByteString ConditionalOperator
- Network.AWS.DynamoDB.Types: instance ToByteString IndexStatus
- Network.AWS.DynamoDB.Types: instance ToByteString KeyType
- Network.AWS.DynamoDB.Types: instance ToByteString ProjectionType
- Network.AWS.DynamoDB.Types: instance ToByteString ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance ToByteString ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance ToByteString ReturnValue
- Network.AWS.DynamoDB.Types: instance ToByteString ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance ToByteString Select
- Network.AWS.DynamoDB.Types: instance ToByteString TableStatus
- Network.AWS.DynamoDB.Types: instance ToHeader AttributeAction
- Network.AWS.DynamoDB.Types: instance ToHeader ComparisonOperator
- Network.AWS.DynamoDB.Types: instance ToHeader ConditionalOperator
- Network.AWS.DynamoDB.Types: instance ToHeader IndexStatus
- Network.AWS.DynamoDB.Types: instance ToHeader KeyType
- Network.AWS.DynamoDB.Types: instance ToHeader ProjectionType
- Network.AWS.DynamoDB.Types: instance ToHeader ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance ToHeader ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance ToHeader ReturnValue
- Network.AWS.DynamoDB.Types: instance ToHeader ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance ToHeader Select
- Network.AWS.DynamoDB.Types: instance ToHeader TableStatus
- Network.AWS.DynamoDB.Types: instance ToJSON AttributeAction
- Network.AWS.DynamoDB.Types: instance ToJSON AttributeDefinition
- Network.AWS.DynamoDB.Types: instance ToJSON AttributeValue
- Network.AWS.DynamoDB.Types: instance ToJSON AttributeValueUpdate
- Network.AWS.DynamoDB.Types: instance ToJSON Capacity
- Network.AWS.DynamoDB.Types: instance ToJSON ComparisonOperator
- Network.AWS.DynamoDB.Types: instance ToJSON Condition
- Network.AWS.DynamoDB.Types: instance ToJSON ConditionalOperator
- Network.AWS.DynamoDB.Types: instance ToJSON ConsumedCapacity
- Network.AWS.DynamoDB.Types: instance ToJSON CreateGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance ToJSON DeleteGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance ToJSON DeleteRequest
- Network.AWS.DynamoDB.Types: instance ToJSON ExpectedAttributeValue
- Network.AWS.DynamoDB.Types: instance ToJSON GlobalSecondaryIndex
- Network.AWS.DynamoDB.Types: instance ToJSON GlobalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: instance ToJSON GlobalSecondaryIndexUpdate
- Network.AWS.DynamoDB.Types: instance ToJSON IndexStatus
- Network.AWS.DynamoDB.Types: instance ToJSON ItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance ToJSON KeySchemaElement
- Network.AWS.DynamoDB.Types: instance ToJSON KeyType
- Network.AWS.DynamoDB.Types: instance ToJSON KeysAndAttributes
- Network.AWS.DynamoDB.Types: instance ToJSON LocalSecondaryIndex
- Network.AWS.DynamoDB.Types: instance ToJSON LocalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: instance ToJSON Projection
- Network.AWS.DynamoDB.Types: instance ToJSON ProjectionType
- Network.AWS.DynamoDB.Types: instance ToJSON ProvisionedThroughput
- Network.AWS.DynamoDB.Types: instance ToJSON ProvisionedThroughputDescription
- Network.AWS.DynamoDB.Types: instance ToJSON PutRequest
- Network.AWS.DynamoDB.Types: instance ToJSON ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance ToJSON ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance ToJSON ReturnValue
- Network.AWS.DynamoDB.Types: instance ToJSON ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance ToJSON Select
- Network.AWS.DynamoDB.Types: instance ToJSON TableDescription
- Network.AWS.DynamoDB.Types: instance ToJSON TableStatus
- Network.AWS.DynamoDB.Types: instance ToJSON UpdateGlobalSecondaryIndexAction
- Network.AWS.DynamoDB.Types: instance ToJSON WriteRequest
- Network.AWS.DynamoDB.Types: instance ToQuery AttributeAction
- Network.AWS.DynamoDB.Types: instance ToQuery ComparisonOperator
- Network.AWS.DynamoDB.Types: instance ToQuery ConditionalOperator
- Network.AWS.DynamoDB.Types: instance ToQuery IndexStatus
- Network.AWS.DynamoDB.Types: instance ToQuery KeyType
- Network.AWS.DynamoDB.Types: instance ToQuery ProjectionType
- Network.AWS.DynamoDB.Types: instance ToQuery ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance ToQuery ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance ToQuery ReturnValue
- Network.AWS.DynamoDB.Types: instance ToQuery ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance ToQuery Select
- Network.AWS.DynamoDB.Types: instance ToQuery TableStatus
- Network.AWS.DynamoDB.Types: instance ToText AttributeAction
- Network.AWS.DynamoDB.Types: instance ToText ComparisonOperator
- Network.AWS.DynamoDB.Types: instance ToText ConditionalOperator
- Network.AWS.DynamoDB.Types: instance ToText IndexStatus
- Network.AWS.DynamoDB.Types: instance ToText KeyType
- Network.AWS.DynamoDB.Types: instance ToText ProjectionType
- Network.AWS.DynamoDB.Types: instance ToText ReturnConsumedCapacity
- Network.AWS.DynamoDB.Types: instance ToText ReturnItemCollectionMetrics
- Network.AWS.DynamoDB.Types: instance ToText ReturnValue
- Network.AWS.DynamoDB.Types: instance ToText ScalarAttributeType
- Network.AWS.DynamoDB.Types: instance ToText Select
- Network.AWS.DynamoDB.Types: instance ToText TableStatus
- Network.AWS.DynamoDB.Types: pItem :: Lens' PutRequest (HashMap Text AttributeValue)
- Network.AWS.DynamoDB.Types: wDeleteRequest :: Lens' WriteRequest (Maybe DeleteRequest)
- Network.AWS.DynamoDB.Types: wPutRequest :: Lens' WriteRequest (Maybe PutRequest)
- Network.AWS.DynamoDB.UpdateItem: instance AWSRequest UpdateItem
- Network.AWS.DynamoDB.UpdateItem: instance Eq UpdateItem
- Network.AWS.DynamoDB.UpdateItem: instance Eq UpdateItemResponse
- Network.AWS.DynamoDB.UpdateItem: instance FromJSON UpdateItemResponse
- Network.AWS.DynamoDB.UpdateItem: instance Read UpdateItem
- Network.AWS.DynamoDB.UpdateItem: instance Read UpdateItemResponse
- Network.AWS.DynamoDB.UpdateItem: instance Show UpdateItem
- Network.AWS.DynamoDB.UpdateItem: instance Show UpdateItemResponse
- Network.AWS.DynamoDB.UpdateItem: instance ToHeaders UpdateItem
- Network.AWS.DynamoDB.UpdateItem: instance ToJSON UpdateItem
- Network.AWS.DynamoDB.UpdateItem: instance ToPath UpdateItem
- Network.AWS.DynamoDB.UpdateItem: instance ToQuery UpdateItem
- Network.AWS.DynamoDB.UpdateItem: uirAttributes :: Lens' UpdateItemResponse (HashMap Text AttributeValue)
- Network.AWS.DynamoDB.UpdateItem: uirConsumedCapacity :: Lens' UpdateItemResponse (Maybe ConsumedCapacity)
- Network.AWS.DynamoDB.UpdateItem: uirItemCollectionMetrics :: Lens' UpdateItemResponse (Maybe ItemCollectionMetrics)
- Network.AWS.DynamoDB.UpdateTable: instance AWSRequest UpdateTable
- Network.AWS.DynamoDB.UpdateTable: instance Eq UpdateTable
- Network.AWS.DynamoDB.UpdateTable: instance Eq UpdateTableResponse
- Network.AWS.DynamoDB.UpdateTable: instance FromJSON UpdateTableResponse
- Network.AWS.DynamoDB.UpdateTable: instance Read UpdateTable
- Network.AWS.DynamoDB.UpdateTable: instance Read UpdateTableResponse
- Network.AWS.DynamoDB.UpdateTable: instance Show UpdateTable
- Network.AWS.DynamoDB.UpdateTable: instance Show UpdateTableResponse
- Network.AWS.DynamoDB.UpdateTable: instance ToHeaders UpdateTable
- Network.AWS.DynamoDB.UpdateTable: instance ToJSON UpdateTable
- Network.AWS.DynamoDB.UpdateTable: instance ToPath UpdateTable
- Network.AWS.DynamoDB.UpdateTable: instance ToQuery UpdateTable
- Network.AWS.DynamoDB.UpdateTable: utrTableDescription :: Lens' UpdateTableResponse (Maybe TableDescription)
+ Network.AWS.DynamoDB: Active :: TableStatus
+ Network.AWS.DynamoDB: Add :: AttributeAction
+ Network.AWS.DynamoDB: All :: ProjectionType
+ Network.AWS.DynamoDB: AllAttributes :: Select
+ Network.AWS.DynamoDB: AllNew :: ReturnValue
+ Network.AWS.DynamoDB: AllOld :: ReturnValue
+ Network.AWS.DynamoDB: AllProjectedAttributes :: Select
+ Network.AWS.DynamoDB: And :: ConditionalOperator
+ Network.AWS.DynamoDB: B :: ScalarAttributeType
+ Network.AWS.DynamoDB: BeginsWith :: ComparisonOperator
+ Network.AWS.DynamoDB: Between :: ComparisonOperator
+ Network.AWS.DynamoDB: Contains :: ComparisonOperator
+ Network.AWS.DynamoDB: Count :: Select
+ Network.AWS.DynamoDB: Creating :: TableStatus
+ Network.AWS.DynamoDB: Delete :: AttributeAction
+ Network.AWS.DynamoDB: Deleting :: TableStatus
+ Network.AWS.DynamoDB: EQ' :: ComparisonOperator
+ Network.AWS.DynamoDB: GE :: ComparisonOperator
+ Network.AWS.DynamoDB: GT' :: ComparisonOperator
+ Network.AWS.DynamoDB: Hash :: KeyType
+ Network.AWS.DynamoDB: IN :: ComparisonOperator
+ Network.AWS.DynamoDB: ISActive :: IndexStatus
+ Network.AWS.DynamoDB: ISCreating :: IndexStatus
+ Network.AWS.DynamoDB: ISDeleting :: IndexStatus
+ Network.AWS.DynamoDB: ISUpdating :: IndexStatus
+ Network.AWS.DynamoDB: Include :: ProjectionType
+ Network.AWS.DynamoDB: KeysOnly :: ProjectionType
+ Network.AWS.DynamoDB: LE :: ComparisonOperator
+ Network.AWS.DynamoDB: LT' :: ComparisonOperator
+ Network.AWS.DynamoDB: N :: ScalarAttributeType
+ Network.AWS.DynamoDB: NE :: ComparisonOperator
+ Network.AWS.DynamoDB: None :: ReturnValue
+ Network.AWS.DynamoDB: NotContains :: ComparisonOperator
+ Network.AWS.DynamoDB: NotNull :: ComparisonOperator
+ Network.AWS.DynamoDB: Null :: ComparisonOperator
+ Network.AWS.DynamoDB: OR :: ConditionalOperator
+ Network.AWS.DynamoDB: Put :: AttributeAction
+ Network.AWS.DynamoDB: RCCIndexes :: ReturnConsumedCapacity
+ Network.AWS.DynamoDB: RCCNone :: ReturnConsumedCapacity
+ Network.AWS.DynamoDB: RCCTotal :: ReturnConsumedCapacity
+ Network.AWS.DynamoDB: RICMNone :: ReturnItemCollectionMetrics
+ Network.AWS.DynamoDB: RICMSize :: ReturnItemCollectionMetrics
+ Network.AWS.DynamoDB: Range :: KeyType
+ Network.AWS.DynamoDB: S :: ScalarAttributeType
+ Network.AWS.DynamoDB: SVTKeysOnly :: StreamViewType
+ Network.AWS.DynamoDB: SVTNewAndOldImages :: StreamViewType
+ Network.AWS.DynamoDB: SVTNewImage :: StreamViewType
+ Network.AWS.DynamoDB: SVTOldImage :: StreamViewType
+ Network.AWS.DynamoDB: SpecificAttributes :: Select
+ Network.AWS.DynamoDB: UpdatedNew :: ReturnValue
+ Network.AWS.DynamoDB: UpdatedOld :: ReturnValue
+ Network.AWS.DynamoDB: Updating :: TableStatus
+ Network.AWS.DynamoDB: _ConditionalCheckFailedException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB: _InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB: _ItemCollectionSizeLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB: _LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB: _ProvisionedThroughputExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB: _ResourceInUseException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB: _ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB: adAttributeName :: Lens' AttributeDefinition Text
+ Network.AWS.DynamoDB: adAttributeType :: Lens' AttributeDefinition ScalarAttributeType
+ Network.AWS.DynamoDB: attributeDefinition :: Text -> ScalarAttributeType -> AttributeDefinition
+ Network.AWS.DynamoDB: attributeValue :: AttributeValue
+ Network.AWS.DynamoDB: attributeValueUpdate :: AttributeValueUpdate
+ Network.AWS.DynamoDB: avB :: Lens' AttributeValue (Maybe ByteString)
+ Network.AWS.DynamoDB: avBOOL :: Lens' AttributeValue (Maybe Bool)
+ Network.AWS.DynamoDB: avBS :: Lens' AttributeValue [ByteString]
+ Network.AWS.DynamoDB: avL :: Lens' AttributeValue [AttributeValue]
+ Network.AWS.DynamoDB: avM :: Lens' AttributeValue (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB: avN :: Lens' AttributeValue (Maybe Text)
+ Network.AWS.DynamoDB: avNS :: Lens' AttributeValue [Text]
+ Network.AWS.DynamoDB: avNULL :: Lens' AttributeValue (Maybe Bool)
+ Network.AWS.DynamoDB: avS :: Lens' AttributeValue (Maybe Text)
+ Network.AWS.DynamoDB: avSS :: Lens' AttributeValue [Text]
+ Network.AWS.DynamoDB: avuAction :: Lens' AttributeValueUpdate (Maybe AttributeAction)
+ Network.AWS.DynamoDB: avuValue :: Lens' AttributeValueUpdate (Maybe AttributeValue)
+ Network.AWS.DynamoDB: cAttributeValueList :: Lens' Condition [AttributeValue]
+ Network.AWS.DynamoDB: cCapacityUnits :: Lens' Capacity (Maybe Double)
+ Network.AWS.DynamoDB: cComparisonOperator :: Lens' Condition ComparisonOperator
+ Network.AWS.DynamoDB: capacity :: Capacity
+ Network.AWS.DynamoDB: ccCapacityUnits :: Lens' ConsumedCapacity (Maybe Double)
+ Network.AWS.DynamoDB: ccGlobalSecondaryIndexes :: Lens' ConsumedCapacity (HashMap Text Capacity)
+ Network.AWS.DynamoDB: ccLocalSecondaryIndexes :: Lens' ConsumedCapacity (HashMap Text Capacity)
+ Network.AWS.DynamoDB: ccTable :: Lens' ConsumedCapacity (Maybe Capacity)
+ Network.AWS.DynamoDB: ccTableName :: Lens' ConsumedCapacity (Maybe Text)
+ Network.AWS.DynamoDB: cgsiaIndexName :: Lens' CreateGlobalSecondaryIndexAction Text
+ Network.AWS.DynamoDB: cgsiaKeySchema :: Lens' CreateGlobalSecondaryIndexAction (NonEmpty KeySchemaElement)
+ Network.AWS.DynamoDB: cgsiaProjection :: Lens' CreateGlobalSecondaryIndexAction Projection
+ Network.AWS.DynamoDB: cgsiaProvisionedThroughput :: Lens' CreateGlobalSecondaryIndexAction ProvisionedThroughput
+ Network.AWS.DynamoDB: condition :: ComparisonOperator -> Condition
+ Network.AWS.DynamoDB: consumedCapacity :: ConsumedCapacity
+ Network.AWS.DynamoDB: createGlobalSecondaryIndexAction :: Text -> NonEmpty KeySchemaElement -> Projection -> ProvisionedThroughput -> CreateGlobalSecondaryIndexAction
+ Network.AWS.DynamoDB: data AttributeAction
+ Network.AWS.DynamoDB: data AttributeDefinition
+ Network.AWS.DynamoDB: data AttributeValue
+ Network.AWS.DynamoDB: data AttributeValueUpdate
+ Network.AWS.DynamoDB: data Capacity
+ Network.AWS.DynamoDB: data ComparisonOperator
+ Network.AWS.DynamoDB: data Condition
+ Network.AWS.DynamoDB: data ConditionalOperator
+ Network.AWS.DynamoDB: data ConsumedCapacity
+ Network.AWS.DynamoDB: data CreateGlobalSecondaryIndexAction
+ Network.AWS.DynamoDB: data DeleteGlobalSecondaryIndexAction
+ Network.AWS.DynamoDB: data DeleteRequest
+ Network.AWS.DynamoDB: data DynamoDB
+ Network.AWS.DynamoDB: data ExpectedAttributeValue
+ Network.AWS.DynamoDB: data GlobalSecondaryIndex
+ Network.AWS.DynamoDB: data GlobalSecondaryIndexDescription
+ Network.AWS.DynamoDB: data GlobalSecondaryIndexUpdate
+ Network.AWS.DynamoDB: data IndexStatus
+ Network.AWS.DynamoDB: data ItemCollectionMetrics
+ Network.AWS.DynamoDB: data KeySchemaElement
+ Network.AWS.DynamoDB: data KeyType
+ Network.AWS.DynamoDB: data KeysAndAttributes
+ Network.AWS.DynamoDB: data LocalSecondaryIndex
+ Network.AWS.DynamoDB: data LocalSecondaryIndexDescription
+ Network.AWS.DynamoDB: data Projection
+ Network.AWS.DynamoDB: data ProjectionType
+ Network.AWS.DynamoDB: data ProvisionedThroughput
+ Network.AWS.DynamoDB: data ProvisionedThroughputDescription
+ Network.AWS.DynamoDB: data PutRequest
+ Network.AWS.DynamoDB: data ReturnConsumedCapacity
+ Network.AWS.DynamoDB: data ReturnItemCollectionMetrics
+ Network.AWS.DynamoDB: data ReturnValue
+ Network.AWS.DynamoDB: data ScalarAttributeType
+ Network.AWS.DynamoDB: data Select
+ Network.AWS.DynamoDB: data StreamSpecification
+ Network.AWS.DynamoDB: data StreamViewType
+ Network.AWS.DynamoDB: data TableDescription
+ Network.AWS.DynamoDB: data TableStatus
+ Network.AWS.DynamoDB: data UpdateGlobalSecondaryIndexAction
+ Network.AWS.DynamoDB: data WriteRequest
+ Network.AWS.DynamoDB: deleteGlobalSecondaryIndexAction :: Text -> DeleteGlobalSecondaryIndexAction
+ Network.AWS.DynamoDB: deleteRequest :: DeleteRequest
+ Network.AWS.DynamoDB: dgsiaIndexName :: Lens' DeleteGlobalSecondaryIndexAction Text
+ Network.AWS.DynamoDB: drKey :: Lens' DeleteRequest (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB: eavAttributeValueList :: Lens' ExpectedAttributeValue [AttributeValue]
+ Network.AWS.DynamoDB: eavComparisonOperator :: Lens' ExpectedAttributeValue (Maybe ComparisonOperator)
+ Network.AWS.DynamoDB: eavExists :: Lens' ExpectedAttributeValue (Maybe Bool)
+ Network.AWS.DynamoDB: eavValue :: Lens' ExpectedAttributeValue (Maybe AttributeValue)
+ Network.AWS.DynamoDB: expectedAttributeValue :: ExpectedAttributeValue
+ Network.AWS.DynamoDB: globalSecondaryIndex :: Text -> NonEmpty KeySchemaElement -> Projection -> ProvisionedThroughput -> GlobalSecondaryIndex
+ Network.AWS.DynamoDB: globalSecondaryIndexDescription :: GlobalSecondaryIndexDescription
+ Network.AWS.DynamoDB: globalSecondaryIndexUpdate :: GlobalSecondaryIndexUpdate
+ Network.AWS.DynamoDB: gsiIndexName :: Lens' GlobalSecondaryIndex Text
+ Network.AWS.DynamoDB: gsiKeySchema :: Lens' GlobalSecondaryIndex (NonEmpty KeySchemaElement)
+ Network.AWS.DynamoDB: gsiProjection :: Lens' GlobalSecondaryIndex Projection
+ Network.AWS.DynamoDB: gsiProvisionedThroughput :: Lens' GlobalSecondaryIndex ProvisionedThroughput
+ Network.AWS.DynamoDB: gsidBackfilling :: Lens' GlobalSecondaryIndexDescription (Maybe Bool)
+ Network.AWS.DynamoDB: gsidIndexARN :: Lens' GlobalSecondaryIndexDescription (Maybe Text)
+ Network.AWS.DynamoDB: gsidIndexName :: Lens' GlobalSecondaryIndexDescription (Maybe Text)
+ Network.AWS.DynamoDB: gsidIndexSizeBytes :: Lens' GlobalSecondaryIndexDescription (Maybe Integer)
+ Network.AWS.DynamoDB: gsidIndexStatus :: Lens' GlobalSecondaryIndexDescription (Maybe IndexStatus)
+ Network.AWS.DynamoDB: gsidItemCount :: Lens' GlobalSecondaryIndexDescription (Maybe Integer)
+ Network.AWS.DynamoDB: gsidKeySchema :: Lens' GlobalSecondaryIndexDescription (Maybe (NonEmpty KeySchemaElement))
+ Network.AWS.DynamoDB: gsidProjection :: Lens' GlobalSecondaryIndexDescription (Maybe Projection)
+ Network.AWS.DynamoDB: gsidProvisionedThroughput :: Lens' GlobalSecondaryIndexDescription (Maybe ProvisionedThroughputDescription)
+ Network.AWS.DynamoDB: gsiuCreate :: Lens' GlobalSecondaryIndexUpdate (Maybe CreateGlobalSecondaryIndexAction)
+ Network.AWS.DynamoDB: gsiuDelete :: Lens' GlobalSecondaryIndexUpdate (Maybe DeleteGlobalSecondaryIndexAction)
+ Network.AWS.DynamoDB: gsiuUpdate :: Lens' GlobalSecondaryIndexUpdate (Maybe UpdateGlobalSecondaryIndexAction)
+ Network.AWS.DynamoDB: icmItemCollectionKey :: Lens' ItemCollectionMetrics (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB: icmSizeEstimateRangeGB :: Lens' ItemCollectionMetrics [Double]
+ Network.AWS.DynamoDB: itemCollectionMetrics :: ItemCollectionMetrics
+ Network.AWS.DynamoDB: kaaAttributesToGet :: Lens' KeysAndAttributes (Maybe (NonEmpty Text))
+ Network.AWS.DynamoDB: kaaConsistentRead :: Lens' KeysAndAttributes (Maybe Bool)
+ Network.AWS.DynamoDB: kaaExpressionAttributeNames :: Lens' KeysAndAttributes (HashMap Text Text)
+ Network.AWS.DynamoDB: kaaKeys :: Lens' KeysAndAttributes (NonEmpty (HashMap Text AttributeValue))
+ Network.AWS.DynamoDB: kaaProjectionExpression :: Lens' KeysAndAttributes (Maybe Text)
+ Network.AWS.DynamoDB: keySchemaElement :: Text -> KeyType -> KeySchemaElement
+ Network.AWS.DynamoDB: keysAndAttributes :: NonEmpty (HashMap Text AttributeValue) -> KeysAndAttributes
+ Network.AWS.DynamoDB: kseAttributeName :: Lens' KeySchemaElement Text
+ Network.AWS.DynamoDB: kseKeyType :: Lens' KeySchemaElement KeyType
+ Network.AWS.DynamoDB: localSecondaryIndex :: Text -> NonEmpty KeySchemaElement -> Projection -> LocalSecondaryIndex
+ Network.AWS.DynamoDB: localSecondaryIndexDescription :: LocalSecondaryIndexDescription
+ Network.AWS.DynamoDB: lsiIndexName :: Lens' LocalSecondaryIndex Text
+ Network.AWS.DynamoDB: lsiKeySchema :: Lens' LocalSecondaryIndex (NonEmpty KeySchemaElement)
+ Network.AWS.DynamoDB: lsiProjection :: Lens' LocalSecondaryIndex Projection
+ Network.AWS.DynamoDB: lsidIndexARN :: Lens' LocalSecondaryIndexDescription (Maybe Text)
+ Network.AWS.DynamoDB: lsidIndexName :: Lens' LocalSecondaryIndexDescription (Maybe Text)
+ Network.AWS.DynamoDB: lsidIndexSizeBytes :: Lens' LocalSecondaryIndexDescription (Maybe Integer)
+ Network.AWS.DynamoDB: lsidItemCount :: Lens' LocalSecondaryIndexDescription (Maybe Integer)
+ Network.AWS.DynamoDB: lsidKeySchema :: Lens' LocalSecondaryIndexDescription (Maybe (NonEmpty KeySchemaElement))
+ Network.AWS.DynamoDB: lsidProjection :: Lens' LocalSecondaryIndexDescription (Maybe Projection)
+ Network.AWS.DynamoDB: pNonKeyAttributes :: Lens' Projection (Maybe (NonEmpty Text))
+ Network.AWS.DynamoDB: pProjectionType :: Lens' Projection (Maybe ProjectionType)
+ Network.AWS.DynamoDB: prItem :: Lens' PutRequest (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB: projection :: Projection
+ Network.AWS.DynamoDB: provisionedThroughput :: Natural -> Natural -> ProvisionedThroughput
+ Network.AWS.DynamoDB: provisionedThroughputDescription :: ProvisionedThroughputDescription
+ Network.AWS.DynamoDB: ptReadCapacityUnits :: Lens' ProvisionedThroughput Natural
+ Network.AWS.DynamoDB: ptWriteCapacityUnits :: Lens' ProvisionedThroughput Natural
+ Network.AWS.DynamoDB: ptdLastDecreaseDateTime :: Lens' ProvisionedThroughputDescription (Maybe UTCTime)
+ Network.AWS.DynamoDB: ptdLastIncreaseDateTime :: Lens' ProvisionedThroughputDescription (Maybe UTCTime)
+ Network.AWS.DynamoDB: ptdNumberOfDecreasesToday :: Lens' ProvisionedThroughputDescription (Maybe Natural)
+ Network.AWS.DynamoDB: ptdReadCapacityUnits :: Lens' ProvisionedThroughputDescription (Maybe Natural)
+ Network.AWS.DynamoDB: ptdWriteCapacityUnits :: Lens' ProvisionedThroughputDescription (Maybe Natural)
+ Network.AWS.DynamoDB: putRequest :: PutRequest
+ Network.AWS.DynamoDB: ssStreamEnabled :: Lens' StreamSpecification (Maybe Bool)
+ Network.AWS.DynamoDB: ssStreamViewType :: Lens' StreamSpecification (Maybe StreamViewType)
+ Network.AWS.DynamoDB: streamSpecification :: StreamSpecification
+ Network.AWS.DynamoDB: tableDescription :: TableDescription
+ Network.AWS.DynamoDB: tableExists :: Wait DescribeTable
+ Network.AWS.DynamoDB: tableNotExists :: Wait DescribeTable
+ Network.AWS.DynamoDB: tdAttributeDefinitions :: Lens' TableDescription [AttributeDefinition]
+ Network.AWS.DynamoDB: tdCreationDateTime :: Lens' TableDescription (Maybe UTCTime)
+ Network.AWS.DynamoDB: tdGlobalSecondaryIndexes :: Lens' TableDescription [GlobalSecondaryIndexDescription]
+ Network.AWS.DynamoDB: tdItemCount :: Lens' TableDescription (Maybe Integer)
+ Network.AWS.DynamoDB: tdKeySchema :: Lens' TableDescription (Maybe (NonEmpty KeySchemaElement))
+ Network.AWS.DynamoDB: tdLatestStreamARN :: Lens' TableDescription (Maybe Text)
+ Network.AWS.DynamoDB: tdLatestStreamLabel :: Lens' TableDescription (Maybe Text)
+ Network.AWS.DynamoDB: tdLocalSecondaryIndexes :: Lens' TableDescription [LocalSecondaryIndexDescription]
+ Network.AWS.DynamoDB: tdProvisionedThroughput :: Lens' TableDescription (Maybe ProvisionedThroughputDescription)
+ Network.AWS.DynamoDB: tdStreamSpecification :: Lens' TableDescription (Maybe StreamSpecification)
+ Network.AWS.DynamoDB: tdTableARN :: Lens' TableDescription (Maybe Text)
+ Network.AWS.DynamoDB: tdTableName :: Lens' TableDescription (Maybe Text)
+ Network.AWS.DynamoDB: tdTableSizeBytes :: Lens' TableDescription (Maybe Integer)
+ Network.AWS.DynamoDB: tdTableStatus :: Lens' TableDescription (Maybe TableStatus)
+ Network.AWS.DynamoDB: ugsiaIndexName :: Lens' UpdateGlobalSecondaryIndexAction Text
+ Network.AWS.DynamoDB: ugsiaProvisionedThroughput :: Lens' UpdateGlobalSecondaryIndexAction ProvisionedThroughput
+ Network.AWS.DynamoDB: updateGlobalSecondaryIndexAction :: Text -> ProvisionedThroughput -> UpdateGlobalSecondaryIndexAction
+ Network.AWS.DynamoDB: wrDeleteRequest :: Lens' WriteRequest (Maybe DeleteRequest)
+ Network.AWS.DynamoDB: wrPutRequest :: Lens' WriteRequest (Maybe PutRequest)
+ Network.AWS.DynamoDB: writeRequest :: WriteRequest
+ Network.AWS.DynamoDB.BatchGetItem: bgirsConsumedCapacity :: Lens' BatchGetItemResponse [ConsumedCapacity]
+ Network.AWS.DynamoDB.BatchGetItem: bgirsResponses :: Lens' BatchGetItemResponse (HashMap Text [HashMap Text AttributeValue])
+ Network.AWS.DynamoDB.BatchGetItem: bgirsStatus :: Lens' BatchGetItemResponse Int
+ Network.AWS.DynamoDB.BatchGetItem: bgirsUnprocessedKeys :: Lens' BatchGetItemResponse (HashMap Text KeysAndAttributes)
+ Network.AWS.DynamoDB.BatchGetItem: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.BatchGetItem.BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance Data.Data.Data Network.AWS.DynamoDB.BatchGetItem.BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance Data.Data.Data Network.AWS.DynamoDB.BatchGetItem.BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.BatchGetItem.BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.BatchGetItem.BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.BatchGetItem.C1_0BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.BatchGetItem.C1_0BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.BatchGetItem.D1BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.BatchGetItem.D1BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.BatchGetItem.BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.BatchGetItem.BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchGetItem.S1_0_0BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchGetItem.S1_0_0BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchGetItem.S1_0_1BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchGetItem.S1_0_1BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchGetItem.S1_0_2BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchGetItem.S1_0_3BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Read.Read Network.AWS.DynamoDB.BatchGetItem.BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Read.Read Network.AWS.DynamoDB.BatchGetItem.BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Show.Show Network.AWS.DynamoDB.BatchGetItem.BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance GHC.Show.Show Network.AWS.DynamoDB.BatchGetItem.BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.BatchGetItem.BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.BatchGetItem.BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.BatchGetItem.BatchGetItem
+ Network.AWS.DynamoDB.BatchGetItem: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.BatchGetItem.BatchGetItem
+ Network.AWS.DynamoDB.BatchWriteItem: bwirsConsumedCapacity :: Lens' BatchWriteItemResponse [ConsumedCapacity]
+ Network.AWS.DynamoDB.BatchWriteItem: bwirsItemCollectionMetrics :: Lens' BatchWriteItemResponse (HashMap Text [ItemCollectionMetrics])
+ Network.AWS.DynamoDB.BatchWriteItem: bwirsStatus :: Lens' BatchWriteItemResponse Int
+ Network.AWS.DynamoDB.BatchWriteItem: bwirsUnprocessedItems :: Lens' BatchWriteItemResponse (HashMap Text (NonEmpty WriteRequest))
+ Network.AWS.DynamoDB.BatchWriteItem: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance Data.Data.Data Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance Data.Data.Data Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.BatchWriteItem.C1_0BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.BatchWriteItem.C1_0BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.BatchWriteItem.D1BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.BatchWriteItem.D1BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchWriteItem.S1_0_0BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchWriteItem.S1_0_0BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchWriteItem.S1_0_1BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchWriteItem.S1_0_1BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchWriteItem.S1_0_2BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchWriteItem.S1_0_2BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.BatchWriteItem.S1_0_3BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Read.Read Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Read.Read Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Show.Show Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance GHC.Show.Show Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItem
+ Network.AWS.DynamoDB.BatchWriteItem: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.BatchWriteItem.BatchWriteItem
+ Network.AWS.DynamoDB.CreateTable: ctStreamSpecification :: Lens' CreateTable (Maybe StreamSpecification)
+ Network.AWS.DynamoDB.CreateTable: ctrsStatus :: Lens' CreateTableResponse Int
+ Network.AWS.DynamoDB.CreateTable: ctrsTableDescription :: Lens' CreateTableResponse (Maybe TableDescription)
+ Network.AWS.DynamoDB.CreateTable: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.CreateTable.CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance Data.Data.Data Network.AWS.DynamoDB.CreateTable.CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance Data.Data.Data Network.AWS.DynamoDB.CreateTable.CreateTableResponse
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Classes.Eq Network.AWS.DynamoDB.CreateTable.CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Classes.Eq Network.AWS.DynamoDB.CreateTable.CreateTableResponse
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Constructor Network.AWS.DynamoDB.CreateTable.C1_0CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Constructor Network.AWS.DynamoDB.CreateTable.C1_0CreateTableResponse
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Datatype Network.AWS.DynamoDB.CreateTable.D1CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Datatype Network.AWS.DynamoDB.CreateTable.D1CreateTableResponse
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Generic Network.AWS.DynamoDB.CreateTable.CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Generic Network.AWS.DynamoDB.CreateTable.CreateTableResponse
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.CreateTable.S1_0_0CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.CreateTable.S1_0_0CreateTableResponse
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.CreateTable.S1_0_1CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.CreateTable.S1_0_1CreateTableResponse
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.CreateTable.S1_0_2CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.CreateTable.S1_0_3CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.CreateTable.S1_0_4CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.CreateTable.S1_0_5CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.CreateTable.S1_0_6CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Read.Read Network.AWS.DynamoDB.CreateTable.CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Read.Read Network.AWS.DynamoDB.CreateTable.CreateTableResponse
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Show.Show Network.AWS.DynamoDB.CreateTable.CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance GHC.Show.Show Network.AWS.DynamoDB.CreateTable.CreateTableResponse
+ Network.AWS.DynamoDB.CreateTable: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.CreateTable.CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.CreateTable.CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.CreateTable.CreateTable
+ Network.AWS.DynamoDB.CreateTable: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.CreateTable.CreateTable
+ Network.AWS.DynamoDB.DeleteItem: dirsAttributes :: Lens' DeleteItemResponse (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB.DeleteItem: dirsConsumedCapacity :: Lens' DeleteItemResponse (Maybe ConsumedCapacity)
+ Network.AWS.DynamoDB.DeleteItem: dirsItemCollectionMetrics :: Lens' DeleteItemResponse (Maybe ItemCollectionMetrics)
+ Network.AWS.DynamoDB.DeleteItem: dirsStatus :: Lens' DeleteItemResponse Int
+ Network.AWS.DynamoDB.DeleteItem: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.DeleteItem.DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance Data.Data.Data Network.AWS.DynamoDB.DeleteItem.DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance Data.Data.Data Network.AWS.DynamoDB.DeleteItem.DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.DeleteItem.DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.DeleteItem.DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.DeleteItem.C1_0DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.DeleteItem.C1_0DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.DeleteItem.D1DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.DeleteItem.D1DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.DeleteItem.DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.DeleteItem.DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_0DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_0DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_1DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_1DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_2DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_2DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_3DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_3DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_4DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_5DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_6DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_7DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_8DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteItem.S1_0_9DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Read.Read Network.AWS.DynamoDB.DeleteItem.DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Read.Read Network.AWS.DynamoDB.DeleteItem.DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Show.Show Network.AWS.DynamoDB.DeleteItem.DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance GHC.Show.Show Network.AWS.DynamoDB.DeleteItem.DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.DeleteItem.DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.DeleteItem.DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.DeleteItem.DeleteItem
+ Network.AWS.DynamoDB.DeleteItem: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.DeleteItem.DeleteItem
+ Network.AWS.DynamoDB.DeleteTable: dtrsStatus :: Lens' DeleteTableResponse Int
+ Network.AWS.DynamoDB.DeleteTable: dtrsTableDescription :: Lens' DeleteTableResponse (Maybe TableDescription)
+ Network.AWS.DynamoDB.DeleteTable: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.DeleteTable.DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance Data.Data.Data Network.AWS.DynamoDB.DeleteTable.DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance Data.Data.Data Network.AWS.DynamoDB.DeleteTable.DeleteTableResponse
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Classes.Eq Network.AWS.DynamoDB.DeleteTable.DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Classes.Eq Network.AWS.DynamoDB.DeleteTable.DeleteTableResponse
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Generics.Constructor Network.AWS.DynamoDB.DeleteTable.C1_0DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Generics.Constructor Network.AWS.DynamoDB.DeleteTable.C1_0DeleteTableResponse
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Generics.Datatype Network.AWS.DynamoDB.DeleteTable.D1DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Generics.Datatype Network.AWS.DynamoDB.DeleteTable.D1DeleteTableResponse
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Generics.Generic Network.AWS.DynamoDB.DeleteTable.DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Generics.Generic Network.AWS.DynamoDB.DeleteTable.DeleteTableResponse
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteTable.S1_0_0DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteTable.S1_0_0DeleteTableResponse
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.DeleteTable.S1_0_1DeleteTableResponse
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Read.Read Network.AWS.DynamoDB.DeleteTable.DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Read.Read Network.AWS.DynamoDB.DeleteTable.DeleteTableResponse
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Show.Show Network.AWS.DynamoDB.DeleteTable.DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance GHC.Show.Show Network.AWS.DynamoDB.DeleteTable.DeleteTableResponse
+ Network.AWS.DynamoDB.DeleteTable: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.DeleteTable.DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.DeleteTable.DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.DeleteTable.DeleteTable
+ Network.AWS.DynamoDB.DeleteTable: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.DeleteTable.DeleteTable
+ Network.AWS.DynamoDB.DescribeTable: dTableName :: Lens' DescribeTable Text
+ Network.AWS.DynamoDB.DescribeTable: drsStatus :: Lens' DescribeTableResponse Int
+ Network.AWS.DynamoDB.DescribeTable: drsTable :: Lens' DescribeTableResponse (Maybe TableDescription)
+ Network.AWS.DynamoDB.DescribeTable: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.DescribeTable.DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance Data.Data.Data Network.AWS.DynamoDB.DescribeTable.DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance Data.Data.Data Network.AWS.DynamoDB.DescribeTable.DescribeTableResponse
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Classes.Eq Network.AWS.DynamoDB.DescribeTable.DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Classes.Eq Network.AWS.DynamoDB.DescribeTable.DescribeTableResponse
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Generics.Constructor Network.AWS.DynamoDB.DescribeTable.C1_0DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Generics.Constructor Network.AWS.DynamoDB.DescribeTable.C1_0DescribeTableResponse
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Generics.Datatype Network.AWS.DynamoDB.DescribeTable.D1DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Generics.Datatype Network.AWS.DynamoDB.DescribeTable.D1DescribeTableResponse
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Generics.Generic Network.AWS.DynamoDB.DescribeTable.DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Generics.Generic Network.AWS.DynamoDB.DescribeTable.DescribeTableResponse
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.DescribeTable.S1_0_0DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.DescribeTable.S1_0_0DescribeTableResponse
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.DescribeTable.S1_0_1DescribeTableResponse
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Read.Read Network.AWS.DynamoDB.DescribeTable.DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Read.Read Network.AWS.DynamoDB.DescribeTable.DescribeTableResponse
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Show.Show Network.AWS.DynamoDB.DescribeTable.DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance GHC.Show.Show Network.AWS.DynamoDB.DescribeTable.DescribeTableResponse
+ Network.AWS.DynamoDB.DescribeTable: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.DescribeTable.DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.DescribeTable.DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.DescribeTable.DescribeTable
+ Network.AWS.DynamoDB.DescribeTable: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.DescribeTable.DescribeTable
+ Network.AWS.DynamoDB.GetItem: girsConsumedCapacity :: Lens' GetItemResponse (Maybe ConsumedCapacity)
+ Network.AWS.DynamoDB.GetItem: girsItem :: Lens' GetItemResponse (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB.GetItem: girsStatus :: Lens' GetItemResponse Int
+ Network.AWS.DynamoDB.GetItem: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.GetItem.GetItem
+ Network.AWS.DynamoDB.GetItem: instance Data.Data.Data Network.AWS.DynamoDB.GetItem.GetItem
+ Network.AWS.DynamoDB.GetItem: instance Data.Data.Data Network.AWS.DynamoDB.GetItem.GetItemResponse
+ Network.AWS.DynamoDB.GetItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.GetItem.GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.GetItem.GetItemResponse
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.GetItem.C1_0GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.GetItem.C1_0GetItemResponse
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.GetItem.D1GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.GetItem.D1GetItemResponse
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.GetItem.GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.GetItem.GetItemResponse
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.GetItem.S1_0_0GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.GetItem.S1_0_0GetItemResponse
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.GetItem.S1_0_1GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.GetItem.S1_0_1GetItemResponse
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.GetItem.S1_0_2GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.GetItem.S1_0_2GetItemResponse
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.GetItem.S1_0_3GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.GetItem.S1_0_4GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.GetItem.S1_0_5GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.GetItem.S1_0_6GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Read.Read Network.AWS.DynamoDB.GetItem.GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Read.Read Network.AWS.DynamoDB.GetItem.GetItemResponse
+ Network.AWS.DynamoDB.GetItem: instance GHC.Show.Show Network.AWS.DynamoDB.GetItem.GetItem
+ Network.AWS.DynamoDB.GetItem: instance GHC.Show.Show Network.AWS.DynamoDB.GetItem.GetItemResponse
+ Network.AWS.DynamoDB.GetItem: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.GetItem.GetItem
+ Network.AWS.DynamoDB.GetItem: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.GetItem.GetItem
+ Network.AWS.DynamoDB.GetItem: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.GetItem.GetItem
+ Network.AWS.DynamoDB.GetItem: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.GetItem.GetItem
+ Network.AWS.DynamoDB.ListTables: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.ListTables.ListTables
+ Network.AWS.DynamoDB.ListTables: instance Data.Data.Data Network.AWS.DynamoDB.ListTables.ListTables
+ Network.AWS.DynamoDB.ListTables: instance Data.Data.Data Network.AWS.DynamoDB.ListTables.ListTablesResponse
+ Network.AWS.DynamoDB.ListTables: instance GHC.Classes.Eq Network.AWS.DynamoDB.ListTables.ListTables
+ Network.AWS.DynamoDB.ListTables: instance GHC.Classes.Eq Network.AWS.DynamoDB.ListTables.ListTablesResponse
+ Network.AWS.DynamoDB.ListTables: instance GHC.Generics.Constructor Network.AWS.DynamoDB.ListTables.C1_0ListTables
+ Network.AWS.DynamoDB.ListTables: instance GHC.Generics.Constructor Network.AWS.DynamoDB.ListTables.C1_0ListTablesResponse
+ Network.AWS.DynamoDB.ListTables: instance GHC.Generics.Datatype Network.AWS.DynamoDB.ListTables.D1ListTables
+ Network.AWS.DynamoDB.ListTables: instance GHC.Generics.Datatype Network.AWS.DynamoDB.ListTables.D1ListTablesResponse
+ Network.AWS.DynamoDB.ListTables: instance GHC.Generics.Generic Network.AWS.DynamoDB.ListTables.ListTables
+ Network.AWS.DynamoDB.ListTables: instance GHC.Generics.Generic Network.AWS.DynamoDB.ListTables.ListTablesResponse
+ Network.AWS.DynamoDB.ListTables: instance GHC.Generics.Selector Network.AWS.DynamoDB.ListTables.S1_0_0ListTables
+ Network.AWS.DynamoDB.ListTables: instance GHC.Generics.Selector Network.AWS.DynamoDB.ListTables.S1_0_0ListTablesResponse
+ Network.AWS.DynamoDB.ListTables: instance GHC.Generics.Selector Network.AWS.DynamoDB.ListTables.S1_0_1ListTables
+ Network.AWS.DynamoDB.ListTables: instance GHC.Generics.Selector Network.AWS.DynamoDB.ListTables.S1_0_1ListTablesResponse
+ Network.AWS.DynamoDB.ListTables: instance GHC.Generics.Selector Network.AWS.DynamoDB.ListTables.S1_0_2ListTablesResponse
+ Network.AWS.DynamoDB.ListTables: instance GHC.Read.Read Network.AWS.DynamoDB.ListTables.ListTables
+ Network.AWS.DynamoDB.ListTables: instance GHC.Read.Read Network.AWS.DynamoDB.ListTables.ListTablesResponse
+ Network.AWS.DynamoDB.ListTables: instance GHC.Show.Show Network.AWS.DynamoDB.ListTables.ListTables
+ Network.AWS.DynamoDB.ListTables: instance GHC.Show.Show Network.AWS.DynamoDB.ListTables.ListTablesResponse
+ Network.AWS.DynamoDB.ListTables: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.ListTables.ListTables
+ Network.AWS.DynamoDB.ListTables: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.ListTables.ListTables
+ Network.AWS.DynamoDB.ListTables: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.ListTables.ListTables
+ Network.AWS.DynamoDB.ListTables: instance Network.AWS.Pager.AWSPager Network.AWS.DynamoDB.ListTables.ListTables
+ Network.AWS.DynamoDB.ListTables: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.ListTables.ListTables
+ Network.AWS.DynamoDB.ListTables: ltrsLastEvaluatedTableName :: Lens' ListTablesResponse (Maybe Text)
+ Network.AWS.DynamoDB.ListTables: ltrsStatus :: Lens' ListTablesResponse Int
+ Network.AWS.DynamoDB.ListTables: ltrsTableNames :: Lens' ListTablesResponse [Text]
+ Network.AWS.DynamoDB.PutItem: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.PutItem.PutItem
+ Network.AWS.DynamoDB.PutItem: instance Data.Data.Data Network.AWS.DynamoDB.PutItem.PutItem
+ Network.AWS.DynamoDB.PutItem: instance Data.Data.Data Network.AWS.DynamoDB.PutItem.PutItemResponse
+ Network.AWS.DynamoDB.PutItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.PutItem.PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.PutItem.PutItemResponse
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.PutItem.C1_0PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.PutItem.C1_0PutItemResponse
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.PutItem.D1PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.PutItem.D1PutItemResponse
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.PutItem.PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.PutItem.PutItemResponse
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_0PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_0PutItemResponse
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_1PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_1PutItemResponse
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_2PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_2PutItemResponse
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_3PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_3PutItemResponse
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_4PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_5PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_6PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_7PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_8PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.PutItem.S1_0_9PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Read.Read Network.AWS.DynamoDB.PutItem.PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Read.Read Network.AWS.DynamoDB.PutItem.PutItemResponse
+ Network.AWS.DynamoDB.PutItem: instance GHC.Show.Show Network.AWS.DynamoDB.PutItem.PutItem
+ Network.AWS.DynamoDB.PutItem: instance GHC.Show.Show Network.AWS.DynamoDB.PutItem.PutItemResponse
+ Network.AWS.DynamoDB.PutItem: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.PutItem.PutItem
+ Network.AWS.DynamoDB.PutItem: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.PutItem.PutItem
+ Network.AWS.DynamoDB.PutItem: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.PutItem.PutItem
+ Network.AWS.DynamoDB.PutItem: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.PutItem.PutItem
+ Network.AWS.DynamoDB.PutItem: pirsAttributes :: Lens' PutItemResponse (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB.PutItem: pirsConsumedCapacity :: Lens' PutItemResponse (Maybe ConsumedCapacity)
+ Network.AWS.DynamoDB.PutItem: pirsItemCollectionMetrics :: Lens' PutItemResponse (Maybe ItemCollectionMetrics)
+ Network.AWS.DynamoDB.PutItem: pirsStatus :: Lens' PutItemResponse Int
+ Network.AWS.DynamoDB.Query: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.Query.Query
+ Network.AWS.DynamoDB.Query: instance Data.Data.Data Network.AWS.DynamoDB.Query.Query
+ Network.AWS.DynamoDB.Query: instance Data.Data.Data Network.AWS.DynamoDB.Query.QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Classes.Eq Network.AWS.DynamoDB.Query.Query
+ Network.AWS.DynamoDB.Query: instance GHC.Classes.Eq Network.AWS.DynamoDB.Query.QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Constructor Network.AWS.DynamoDB.Query.C1_0Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Constructor Network.AWS.DynamoDB.Query.C1_0QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Datatype Network.AWS.DynamoDB.Query.D1Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Datatype Network.AWS.DynamoDB.Query.D1QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Generic Network.AWS.DynamoDB.Query.Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Generic Network.AWS.DynamoDB.Query.QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_0Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_0QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_10Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_11Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_12Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_13Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_14Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_15Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_16Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_1Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_1QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_2Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_2QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_3Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_3QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_4Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_4QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_5Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_5QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_6Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_7Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_8Query
+ Network.AWS.DynamoDB.Query: instance GHC.Generics.Selector Network.AWS.DynamoDB.Query.S1_0_9Query
+ Network.AWS.DynamoDB.Query: instance GHC.Read.Read Network.AWS.DynamoDB.Query.Query
+ Network.AWS.DynamoDB.Query: instance GHC.Read.Read Network.AWS.DynamoDB.Query.QueryResponse
+ Network.AWS.DynamoDB.Query: instance GHC.Show.Show Network.AWS.DynamoDB.Query.Query
+ Network.AWS.DynamoDB.Query: instance GHC.Show.Show Network.AWS.DynamoDB.Query.QueryResponse
+ Network.AWS.DynamoDB.Query: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.Query.Query
+ Network.AWS.DynamoDB.Query: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.Query.Query
+ Network.AWS.DynamoDB.Query: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.Query.Query
+ Network.AWS.DynamoDB.Query: instance Network.AWS.Pager.AWSPager Network.AWS.DynamoDB.Query.Query
+ Network.AWS.DynamoDB.Query: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.Query.Query
+ Network.AWS.DynamoDB.Query: qrsConsumedCapacity :: Lens' QueryResponse (Maybe ConsumedCapacity)
+ Network.AWS.DynamoDB.Query: qrsCount :: Lens' QueryResponse (Maybe Int)
+ Network.AWS.DynamoDB.Query: qrsItems :: Lens' QueryResponse [HashMap Text AttributeValue]
+ Network.AWS.DynamoDB.Query: qrsLastEvaluatedKey :: Lens' QueryResponse (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB.Query: qrsScannedCount :: Lens' QueryResponse (Maybe Int)
+ Network.AWS.DynamoDB.Query: qrsStatus :: Lens' QueryResponse Int
+ Network.AWS.DynamoDB.Scan: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.Scan.Scan
+ Network.AWS.DynamoDB.Scan: instance Data.Data.Data Network.AWS.DynamoDB.Scan.Scan
+ Network.AWS.DynamoDB.Scan: instance Data.Data.Data Network.AWS.DynamoDB.Scan.ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Classes.Eq Network.AWS.DynamoDB.Scan.Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Classes.Eq Network.AWS.DynamoDB.Scan.ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Constructor Network.AWS.DynamoDB.Scan.C1_0Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Constructor Network.AWS.DynamoDB.Scan.C1_0ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Datatype Network.AWS.DynamoDB.Scan.D1Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Datatype Network.AWS.DynamoDB.Scan.D1ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Generic Network.AWS.DynamoDB.Scan.Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Generic Network.AWS.DynamoDB.Scan.ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_0Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_0ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_10Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_11Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_12Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_13Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_14Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_15Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_1Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_1ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_2Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_2ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_3Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_3ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_4Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_4ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_5Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_5ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_6Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_7Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_8Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Generics.Selector Network.AWS.DynamoDB.Scan.S1_0_9Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Read.Read Network.AWS.DynamoDB.Scan.Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Read.Read Network.AWS.DynamoDB.Scan.ScanResponse
+ Network.AWS.DynamoDB.Scan: instance GHC.Show.Show Network.AWS.DynamoDB.Scan.Scan
+ Network.AWS.DynamoDB.Scan: instance GHC.Show.Show Network.AWS.DynamoDB.Scan.ScanResponse
+ Network.AWS.DynamoDB.Scan: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.Scan.Scan
+ Network.AWS.DynamoDB.Scan: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.Scan.Scan
+ Network.AWS.DynamoDB.Scan: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.Scan.Scan
+ Network.AWS.DynamoDB.Scan: instance Network.AWS.Pager.AWSPager Network.AWS.DynamoDB.Scan.Scan
+ Network.AWS.DynamoDB.Scan: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.Scan.Scan
+ Network.AWS.DynamoDB.Scan: sConsistentRead :: Lens' Scan (Maybe Bool)
+ Network.AWS.DynamoDB.Scan: srsConsumedCapacity :: Lens' ScanResponse (Maybe ConsumedCapacity)
+ Network.AWS.DynamoDB.Scan: srsCount :: Lens' ScanResponse (Maybe Int)
+ Network.AWS.DynamoDB.Scan: srsItems :: Lens' ScanResponse [HashMap Text AttributeValue]
+ Network.AWS.DynamoDB.Scan: srsLastEvaluatedKey :: Lens' ScanResponse (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB.Scan: srsScannedCount :: Lens' ScanResponse (Maybe Int)
+ Network.AWS.DynamoDB.Scan: srsStatus :: Lens' ScanResponse Int
+ Network.AWS.DynamoDB.Types: AllNew :: ReturnValue
+ Network.AWS.DynamoDB.Types: AllOld :: ReturnValue
+ Network.AWS.DynamoDB.Types: Delete :: AttributeAction
+ Network.AWS.DynamoDB.Types: EQ' :: ComparisonOperator
+ Network.AWS.DynamoDB.Types: GE :: ComparisonOperator
+ Network.AWS.DynamoDB.Types: GT' :: ComparisonOperator
+ Network.AWS.DynamoDB.Types: IN :: ComparisonOperator
+ Network.AWS.DynamoDB.Types: ISActive :: IndexStatus
+ Network.AWS.DynamoDB.Types: ISCreating :: IndexStatus
+ Network.AWS.DynamoDB.Types: ISDeleting :: IndexStatus
+ Network.AWS.DynamoDB.Types: ISUpdating :: IndexStatus
+ Network.AWS.DynamoDB.Types: LE :: ComparisonOperator
+ Network.AWS.DynamoDB.Types: LT' :: ComparisonOperator
+ Network.AWS.DynamoDB.Types: NE :: ComparisonOperator
+ Network.AWS.DynamoDB.Types: OR :: ConditionalOperator
+ Network.AWS.DynamoDB.Types: RCCIndexes :: ReturnConsumedCapacity
+ Network.AWS.DynamoDB.Types: RCCNone :: ReturnConsumedCapacity
+ Network.AWS.DynamoDB.Types: RCCTotal :: ReturnConsumedCapacity
+ Network.AWS.DynamoDB.Types: SVTKeysOnly :: StreamViewType
+ Network.AWS.DynamoDB.Types: SVTNewAndOldImages :: StreamViewType
+ Network.AWS.DynamoDB.Types: SVTNewImage :: StreamViewType
+ Network.AWS.DynamoDB.Types: SVTOldImage :: StreamViewType
+ Network.AWS.DynamoDB.Types: UpdatedNew :: ReturnValue
+ Network.AWS.DynamoDB.Types: UpdatedOld :: ReturnValue
+ Network.AWS.DynamoDB.Types: _ConditionalCheckFailedException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB.Types: _InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB.Types: _ItemCollectionSizeLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB.Types: _LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB.Types: _ProvisionedThroughputExceededException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB.Types: _ResourceInUseException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB.Types: _ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
+ Network.AWS.DynamoDB.Types: data StreamSpecification
+ Network.AWS.DynamoDB.Types: data StreamViewType
+ Network.AWS.DynamoDB.Types: drKey :: Lens' DeleteRequest (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB.Types: gsidIndexARN :: Lens' GlobalSecondaryIndexDescription (Maybe Text)
+ Network.AWS.DynamoDB.Types: instance Network.AWS.Types.AWSService Network.AWS.DynamoDB.Types.DynamoDB
+ Network.AWS.DynamoDB.Types: lsidIndexARN :: Lens' LocalSecondaryIndexDescription (Maybe Text)
+ Network.AWS.DynamoDB.Types: prItem :: Lens' PutRequest (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB.Types: ssStreamEnabled :: Lens' StreamSpecification (Maybe Bool)
+ Network.AWS.DynamoDB.Types: ssStreamViewType :: Lens' StreamSpecification (Maybe StreamViewType)
+ Network.AWS.DynamoDB.Types: streamSpecification :: StreamSpecification
+ Network.AWS.DynamoDB.Types: tdLatestStreamARN :: Lens' TableDescription (Maybe Text)
+ Network.AWS.DynamoDB.Types: tdLatestStreamLabel :: Lens' TableDescription (Maybe Text)
+ Network.AWS.DynamoDB.Types: tdStreamSpecification :: Lens' TableDescription (Maybe StreamSpecification)
+ Network.AWS.DynamoDB.Types: tdTableARN :: Lens' TableDescription (Maybe Text)
+ Network.AWS.DynamoDB.Types: wrDeleteRequest :: Lens' WriteRequest (Maybe DeleteRequest)
+ Network.AWS.DynamoDB.Types: wrPutRequest :: Lens' WriteRequest (Maybe PutRequest)
+ Network.AWS.DynamoDB.UpdateItem: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.UpdateItem.UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance Data.Data.Data Network.AWS.DynamoDB.UpdateItem.UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance Data.Data.Data Network.AWS.DynamoDB.UpdateItem.UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.UpdateItem.UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Classes.Eq Network.AWS.DynamoDB.UpdateItem.UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.UpdateItem.C1_0UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Constructor Network.AWS.DynamoDB.UpdateItem.C1_0UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.UpdateItem.D1UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Datatype Network.AWS.DynamoDB.UpdateItem.D1UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.UpdateItem.UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Generic Network.AWS.DynamoDB.UpdateItem.UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_0UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_0UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_10UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_11UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_1UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_1UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_2UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_2UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_3UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_3UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_4UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_5UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_6UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_7UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_8UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateItem.S1_0_9UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Read.Read Network.AWS.DynamoDB.UpdateItem.UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Read.Read Network.AWS.DynamoDB.UpdateItem.UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Show.Show Network.AWS.DynamoDB.UpdateItem.UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance GHC.Show.Show Network.AWS.DynamoDB.UpdateItem.UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.UpdateItem.UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.UpdateItem.UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.UpdateItem.UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.UpdateItem.UpdateItem
+ Network.AWS.DynamoDB.UpdateItem: uirsAttributes :: Lens' UpdateItemResponse (HashMap Text AttributeValue)
+ Network.AWS.DynamoDB.UpdateItem: uirsConsumedCapacity :: Lens' UpdateItemResponse (Maybe ConsumedCapacity)
+ Network.AWS.DynamoDB.UpdateItem: uirsItemCollectionMetrics :: Lens' UpdateItemResponse (Maybe ItemCollectionMetrics)
+ Network.AWS.DynamoDB.UpdateItem: uirsStatus :: Lens' UpdateItemResponse Int
+ Network.AWS.DynamoDB.UpdateTable: instance Data.Aeson.Types.Class.ToJSON Network.AWS.DynamoDB.UpdateTable.UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance Data.Data.Data Network.AWS.DynamoDB.UpdateTable.UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance Data.Data.Data Network.AWS.DynamoDB.UpdateTable.UpdateTableResponse
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Classes.Eq Network.AWS.DynamoDB.UpdateTable.UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Classes.Eq Network.AWS.DynamoDB.UpdateTable.UpdateTableResponse
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Constructor Network.AWS.DynamoDB.UpdateTable.C1_0UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Constructor Network.AWS.DynamoDB.UpdateTable.C1_0UpdateTableResponse
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Datatype Network.AWS.DynamoDB.UpdateTable.D1UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Datatype Network.AWS.DynamoDB.UpdateTable.D1UpdateTableResponse
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Generic Network.AWS.DynamoDB.UpdateTable.UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Generic Network.AWS.DynamoDB.UpdateTable.UpdateTableResponse
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateTable.S1_0_0UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateTable.S1_0_0UpdateTableResponse
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateTable.S1_0_1UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateTable.S1_0_1UpdateTableResponse
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateTable.S1_0_2UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateTable.S1_0_3UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Generics.Selector Network.AWS.DynamoDB.UpdateTable.S1_0_4UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Read.Read Network.AWS.DynamoDB.UpdateTable.UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Read.Read Network.AWS.DynamoDB.UpdateTable.UpdateTableResponse
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Show.Show Network.AWS.DynamoDB.UpdateTable.UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance GHC.Show.Show Network.AWS.DynamoDB.UpdateTable.UpdateTableResponse
+ Network.AWS.DynamoDB.UpdateTable: instance Network.AWS.Data.Headers.ToHeaders Network.AWS.DynamoDB.UpdateTable.UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance Network.AWS.Data.Path.ToPath Network.AWS.DynamoDB.UpdateTable.UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance Network.AWS.Data.Query.ToQuery Network.AWS.DynamoDB.UpdateTable.UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: instance Network.AWS.Types.AWSRequest Network.AWS.DynamoDB.UpdateTable.UpdateTable
+ Network.AWS.DynamoDB.UpdateTable: utStreamSpecification :: Lens' UpdateTable (Maybe StreamSpecification)
+ Network.AWS.DynamoDB.UpdateTable: utrsStatus :: Lens' UpdateTableResponse Int
+ Network.AWS.DynamoDB.UpdateTable: utrsTableDescription :: Lens' UpdateTableResponse (Maybe TableDescription)
- Network.AWS.DynamoDB.BatchGetItem: batchGetItemResponse :: BatchGetItemResponse
+ Network.AWS.DynamoDB.BatchGetItem: batchGetItemResponse :: Int -> BatchGetItemResponse
- Network.AWS.DynamoDB.BatchWriteItem: batchWriteItemResponse :: BatchWriteItemResponse
+ Network.AWS.DynamoDB.BatchWriteItem: batchWriteItemResponse :: Int -> BatchWriteItemResponse
- Network.AWS.DynamoDB.CreateTable: createTableResponse :: CreateTableResponse
+ Network.AWS.DynamoDB.CreateTable: createTableResponse :: Int -> CreateTableResponse
- Network.AWS.DynamoDB.DeleteItem: deleteItemResponse :: DeleteItemResponse
+ Network.AWS.DynamoDB.DeleteItem: deleteItemResponse :: Int -> DeleteItemResponse
- Network.AWS.DynamoDB.DeleteTable: deleteTableResponse :: DeleteTableResponse
+ Network.AWS.DynamoDB.DeleteTable: deleteTableResponse :: Int -> DeleteTableResponse
- Network.AWS.DynamoDB.DescribeTable: describeTableResponse :: TableDescription -> DescribeTableResponse
+ Network.AWS.DynamoDB.DescribeTable: describeTableResponse :: Int -> DescribeTableResponse
- Network.AWS.DynamoDB.GetItem: getItem :: Text -> NonEmpty Text -> GetItem
+ Network.AWS.DynamoDB.GetItem: getItem :: Text -> GetItem
- Network.AWS.DynamoDB.GetItem: getItemResponse :: GetItemResponse
+ Network.AWS.DynamoDB.GetItem: getItemResponse :: Int -> GetItemResponse
- Network.AWS.DynamoDB.GetItem: giAttributesToGet :: Lens' GetItem (NonEmpty Text)
+ Network.AWS.DynamoDB.GetItem: giAttributesToGet :: Lens' GetItem (Maybe (NonEmpty Text))
- Network.AWS.DynamoDB.ListTables: listTablesResponse :: ListTablesResponse
+ Network.AWS.DynamoDB.ListTables: listTablesResponse :: Int -> ListTablesResponse
- Network.AWS.DynamoDB.PutItem: putItemResponse :: PutItemResponse
+ Network.AWS.DynamoDB.PutItem: putItemResponse :: Int -> PutItemResponse
- Network.AWS.DynamoDB.Query: qAttributesToGet :: Lens' Query (NonEmpty Text)
+ Network.AWS.DynamoDB.Query: qAttributesToGet :: Lens' Query (Maybe (NonEmpty Text))
- Network.AWS.DynamoDB.Query: query :: Text -> NonEmpty Text -> Query
+ Network.AWS.DynamoDB.Query: query :: Text -> Query
- Network.AWS.DynamoDB.Query: queryResponse :: QueryResponse
+ Network.AWS.DynamoDB.Query: queryResponse :: Int -> QueryResponse
- Network.AWS.DynamoDB.Scan: sAttributesToGet :: Lens' Scan (NonEmpty Text)
+ Network.AWS.DynamoDB.Scan: sAttributesToGet :: Lens' Scan (Maybe (NonEmpty Text))
- Network.AWS.DynamoDB.Scan: scan :: Text -> NonEmpty Text -> Scan
+ Network.AWS.DynamoDB.Scan: scan :: Text -> Scan
- Network.AWS.DynamoDB.Scan: scanResponse :: ScanResponse
+ Network.AWS.DynamoDB.Scan: scanResponse :: Int -> ScanResponse
- Network.AWS.DynamoDB.Types: Active :: IndexStatus
+ Network.AWS.DynamoDB.Types: Active :: TableStatus
- Network.AWS.DynamoDB.Types: Creating :: IndexStatus
+ Network.AWS.DynamoDB.Types: Creating :: TableStatus
- Network.AWS.DynamoDB.Types: Deleting :: IndexStatus
+ Network.AWS.DynamoDB.Types: Deleting :: TableStatus
- Network.AWS.DynamoDB.Types: None :: ReturnConsumedCapacity
+ Network.AWS.DynamoDB.Types: None :: ReturnValue
- Network.AWS.DynamoDB.Types: Updating :: IndexStatus
+ Network.AWS.DynamoDB.Types: Updating :: TableStatus
- Network.AWS.DynamoDB.Types: avB :: Lens' AttributeValue (Maybe Base64)
+ Network.AWS.DynamoDB.Types: avB :: Lens' AttributeValue (Maybe ByteString)
- Network.AWS.DynamoDB.Types: avBS :: Lens' AttributeValue [Base64]
+ Network.AWS.DynamoDB.Types: avBS :: Lens' AttributeValue [ByteString]
- Network.AWS.DynamoDB.Types: globalSecondaryIndexDescription :: NonEmpty KeySchemaElement -> GlobalSecondaryIndexDescription
+ Network.AWS.DynamoDB.Types: globalSecondaryIndexDescription :: GlobalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: gsidKeySchema :: Lens' GlobalSecondaryIndexDescription (NonEmpty KeySchemaElement)
+ Network.AWS.DynamoDB.Types: gsidKeySchema :: Lens' GlobalSecondaryIndexDescription (Maybe (NonEmpty KeySchemaElement))
- Network.AWS.DynamoDB.Types: kaaAttributesToGet :: Lens' KeysAndAttributes (NonEmpty Text)
+ Network.AWS.DynamoDB.Types: kaaAttributesToGet :: Lens' KeysAndAttributes (Maybe (NonEmpty Text))
- Network.AWS.DynamoDB.Types: keysAndAttributes :: NonEmpty (HashMap Text AttributeValue) -> NonEmpty Text -> KeysAndAttributes
+ Network.AWS.DynamoDB.Types: keysAndAttributes :: NonEmpty (HashMap Text AttributeValue) -> KeysAndAttributes
- Network.AWS.DynamoDB.Types: localSecondaryIndexDescription :: NonEmpty KeySchemaElement -> LocalSecondaryIndexDescription
+ Network.AWS.DynamoDB.Types: localSecondaryIndexDescription :: LocalSecondaryIndexDescription
- Network.AWS.DynamoDB.Types: lsidKeySchema :: Lens' LocalSecondaryIndexDescription (NonEmpty KeySchemaElement)
+ Network.AWS.DynamoDB.Types: lsidKeySchema :: Lens' LocalSecondaryIndexDescription (Maybe (NonEmpty KeySchemaElement))
- Network.AWS.DynamoDB.Types: pNonKeyAttributes :: Lens' Projection (NonEmpty Text)
+ Network.AWS.DynamoDB.Types: pNonKeyAttributes :: Lens' Projection (Maybe (NonEmpty Text))
- Network.AWS.DynamoDB.Types: projection :: NonEmpty Text -> Projection
+ Network.AWS.DynamoDB.Types: projection :: Projection
- Network.AWS.DynamoDB.Types: tableDescription :: Text -> NonEmpty KeySchemaElement -> TableStatus -> UTCTime -> ProvisionedThroughputDescription -> Integer -> Integer -> TableDescription
+ Network.AWS.DynamoDB.Types: tableDescription :: TableDescription
- Network.AWS.DynamoDB.Types: tdCreationDateTime :: Lens' TableDescription UTCTime
+ Network.AWS.DynamoDB.Types: tdCreationDateTime :: Lens' TableDescription (Maybe UTCTime)
- Network.AWS.DynamoDB.Types: tdItemCount :: Lens' TableDescription Integer
+ Network.AWS.DynamoDB.Types: tdItemCount :: Lens' TableDescription (Maybe Integer)
- Network.AWS.DynamoDB.Types: tdKeySchema :: Lens' TableDescription (NonEmpty KeySchemaElement)
+ Network.AWS.DynamoDB.Types: tdKeySchema :: Lens' TableDescription (Maybe (NonEmpty KeySchemaElement))
- Network.AWS.DynamoDB.Types: tdProvisionedThroughput :: Lens' TableDescription ProvisionedThroughputDescription
+ Network.AWS.DynamoDB.Types: tdProvisionedThroughput :: Lens' TableDescription (Maybe ProvisionedThroughputDescription)
- Network.AWS.DynamoDB.Types: tdTableName :: Lens' TableDescription Text
+ Network.AWS.DynamoDB.Types: tdTableName :: Lens' TableDescription (Maybe Text)
- Network.AWS.DynamoDB.Types: tdTableSizeBytes :: Lens' TableDescription Integer
+ Network.AWS.DynamoDB.Types: tdTableSizeBytes :: Lens' TableDescription (Maybe Integer)
- Network.AWS.DynamoDB.Types: tdTableStatus :: Lens' TableDescription TableStatus
+ Network.AWS.DynamoDB.Types: tdTableStatus :: Lens' TableDescription (Maybe TableStatus)
- Network.AWS.DynamoDB.UpdateItem: updateItemResponse :: UpdateItemResponse
+ Network.AWS.DynamoDB.UpdateItem: updateItemResponse :: Int -> UpdateItemResponse
- Network.AWS.DynamoDB.UpdateTable: updateTableResponse :: UpdateTableResponse
+ Network.AWS.DynamoDB.UpdateTable: updateTableResponse :: Int -> UpdateTableResponse
Files
- README.md +130/−9
- amazonka-dynamodb.cabal +159/−13
- gen/Network/AWS/DynamoDB.hs +484/−39
- gen/Network/AWS/DynamoDB/BatchGetItem.hs +248/−204
- gen/Network/AWS/DynamoDB/BatchWriteItem.hs +250/−222
- gen/Network/AWS/DynamoDB/CreateTable.hs +250/−187
- gen/Network/AWS/DynamoDB/DeleteItem.hs +459/−403
- gen/Network/AWS/DynamoDB/DeleteTable.hs +108/−81
- gen/Network/AWS/DynamoDB/DescribeTable.hs +103/−88
- gen/Network/AWS/DynamoDB/GetItem.hs +208/−184
- gen/Network/AWS/DynamoDB/ListTables.hs +136/−114
- gen/Network/AWS/DynamoDB/PutItem.hs +476/−416
- gen/Network/AWS/DynamoDB/Query.hs +848/−759
- gen/Network/AWS/DynamoDB/Scan.hs +484/−405
- gen/Network/AWS/DynamoDB/Types.hs +360/−2756
- gen/Network/AWS/DynamoDB/Types/Product.hs +2333/−0
- gen/Network/AWS/DynamoDB/Types/Sum.hs +451/−0
- gen/Network/AWS/DynamoDB/UpdateItem.hs +796/−709
- gen/Network/AWS/DynamoDB/UpdateTable.hs +153/−116
- gen/Network/AWS/DynamoDB/Waiters.hs +36/−29
- test/Main.hs +21/−0
- test/Test/AWS/DynamoDB.hs +26/−0
- test/Test/AWS/DynamoDB/Internal.hs +16/−0
- test/Test/AWS/Gen/DynamoDB.hs +260/−0
README.md view
@@ -1,24 +1,145 @@ # Amazon DynamoDB SDK -> _Warning:_ This is an experimental preview release which is still under heavy development and not intended for public consumption, _caveat emptor_!-+* [Version](#version) * [Description](#description) * [Contribute](#contribute) * [Licence](#licence) ++## Version++`1.0.0`++ ## Description -Amazon DynamoDB is a fully managed NoSQL database service that provides fast-and predictable performance with seamless scalability. You can use Amazon-DynamoDB to create a database table that can store and retrieve any amount of-data, and serve any level of request traffic. Amazon DynamoDB automatically-spreads the data and traffic for the table over a sufficient number of-servers to handle the request capacity specified by the customer and the-amount of data stored, while maintaining consistent and fast performance.+Amazon DynamoDB +__Overview__++This is the Amazon DynamoDB API Reference. This guide provides+descriptions and samples of the low-level DynamoDB API. For information+about DynamoDB application development, see the+<http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ Amazon DynamoDB Developer Guide>.++Instead of making the requests to the low-level DynamoDB API directly+from your application, we recommend that you use the AWS Software+Development Kits (SDKs). The easy-to-use libraries in the AWS SDKs make+it unnecessary to call the low-level DynamoDB API directly from your+application. The libraries take care of request authentication,+serialization, and connection management. For more information, see+<http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/UsingAWSSDK.html Using the AWS SDKs with DynamoDB>+in the /Amazon DynamoDB Developer Guide/.++If you decide to code against the low-level DynamoDB API directly, you+will need to write the necessary code to authenticate your requests. For+more information on signing your requests, see+<http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/API.html Using the DynamoDB API>+in the /Amazon DynamoDB Developer Guide/.++The following are short descriptions of each low-level API action,+organized by function.++__Managing Tables__++- /CreateTable/ - Creates a table with user-specified provisioned+ throughput settings. You must designate one attribute as the hash+ primary key for the table; you can optionally designate a second+ attribute as the range primary key. DynamoDB creates indexes on+ these key attributes for fast data access. Optionally, you can+ create one or more secondary indexes, which provide fast data access+ using non-key attributes.++- /DescribeTable/ - Returns metadata for a table, such as table size,+ status, and index information.++- /UpdateTable/ - Modifies the provisioned throughput settings for a+ table. Optionally, you can modify the provisioned throughput+ settings for global secondary indexes on the table.++- /ListTables/ - Returns a list of all tables associated with the+ current AWS account and endpoint.++- /DeleteTable/ - Deletes a table and all of its indexes.++For conceptual information about managing tables, see+<http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html Working with Tables>+in the /Amazon DynamoDB Developer Guide/.++__Reading Data__++- /GetItem/ - Returns a set of attributes for the item that has a+ given primary key. By default, /GetItem/ performs an eventually+ consistent read; however, applications can request a strongly+ consistent read instead.++- /BatchGetItem/ - Performs multiple /GetItem/ requests for data items+ using their primary keys, from one table or multiple tables. The+ response from /BatchGetItem/ has a size limit of 16 MB and returns a+ maximum of 100 items. Both eventually consistent and strongly+ consistent reads can be used.++- /Query/ - Returns one or more items from a table or a secondary+ index. You must provide a specific hash key value. You can narrow+ the scope of the query using comparison operators against a range+ key value, or on the index key. /Query/ supports either eventual or+ strong consistency. A single response has a size limit of 1 MB.++- /Scan/ - Reads every item in a table; the result set is eventually+ consistent. You can limit the number of items returned by filtering+ the data attributes, using conditional expressions. /Scan/ can be+ used to enable ad-hoc querying of a table against non-key+ attributes; however, since this is a full table scan without using+ an index, /Scan/ should not be used for any application query use+ case that requires predictable performance.++For conceptual information about reading data, see+<http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html Working with Items>+and+<http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html Query and Scan Operations>+in the /Amazon DynamoDB Developer Guide/.++__Modifying Data__++- /PutItem/ - Creates a new item, or replaces an existing item with a+ new item (including all the attributes). By default, if an item in+ the table already exists with the same primary key, the new item+ completely replaces the existing item. You can use conditional+ operators to replace an item only if its attribute values match+ certain conditions, or to insert a new item only if that item+ doesn\'t already exist.++- /UpdateItem/ - Modifies the attributes of an existing item. You can+ also use conditional operators to perform an update only if the+ item\'s attribute values match certain conditions.++- /DeleteItem/ - Deletes an item in a table by primary key. You can+ use conditional operators to perform a delete an item only if the+ item\'s attribute values match certain conditions.++- /BatchWriteItem/ - Performs multiple /PutItem/ and /DeleteItem/+ requests across multiple tables in a single request. A failure of+ any request(s) in the batch will not cause the entire+ /BatchWriteItem/ operation to fail. Supports batches of up to 25+ items to put or delete, with a maximum total request size of 16 MB.++For conceptual information about modifying data, see+<http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html Working with Items>+and+<http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html Query and Scan Operations>+in the /Amazon DynamoDB Developer Guide/.+ Documentation is available via [Hackage](http://hackage.haskell.org/package/amazonka-dynamodb) and the [AWS API Reference](http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/Welcome.html). +The types from this library are intended to be used with [amazonka](http://hackage.haskell.org/package/amazonka),+which provides mechanisms for specifying AuthN/AuthZ information and sending requests.++Use of lenses is required for constructing and manipulating types.+This is due to the amount of nesting of AWS types and transparency regarding+de/serialisation into more palatable Haskell values.+The provided lenses should be compatible with any of the major lens libraries+[lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core). ## Contribute
amazonka-dynamodb.cabal view
@@ -1,31 +1,147 @@ name: amazonka-dynamodb-version: 0.3.6+version: 1.0.0 synopsis: Amazon DynamoDB SDK. homepage: https://github.com/brendanhay/amazonka license: OtherLicense license-file: LICENSE author: Brendan Hay maintainer: Brendan Hay <brendan.g.hay@gmail.com>-copyright: Copyright (c) 2013-2014 Brendan Hay+copyright: Copyright (c) 2013-2015 Brendan Hay category: Network, AWS, Cloud, Distributed Computing build-type: Simple extra-source-files: README.md cabal-version: >= 1.10 description:- Amazon DynamoDB is a fully managed NoSQL database service that provides fast- and predictable performance with seamless scalability. You can use Amazon- DynamoDB to create a database table that can store and retrieve any amount of- data, and serve any level of request traffic. Amazon DynamoDB automatically- spreads the data and traffic for the table over a sufficient number of- servers to handle the request capacity specified by the customer and the- amount of data stored, while maintaining consistent and fast performance.+ Amazon DynamoDB + __Overview__++ This is the Amazon DynamoDB API Reference. This guide provides+ descriptions and samples of the low-level DynamoDB API. For information+ about DynamoDB application development, see the+ <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ Amazon DynamoDB Developer Guide>.++ Instead of making the requests to the low-level DynamoDB API directly+ from your application, we recommend that you use the AWS Software+ Development Kits (SDKs). The easy-to-use libraries in the AWS SDKs make+ it unnecessary to call the low-level DynamoDB API directly from your+ application. The libraries take care of request authentication,+ serialization, and connection management. For more information, see+ <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/UsingAWSSDK.html Using the AWS SDKs with DynamoDB>+ in the /Amazon DynamoDB Developer Guide/.++ If you decide to code against the low-level DynamoDB API directly, you+ will need to write the necessary code to authenticate your requests. For+ more information on signing your requests, see+ <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/API.html Using the DynamoDB API>+ in the /Amazon DynamoDB Developer Guide/.++ The following are short descriptions of each low-level API action,+ organized by function.++ __Managing Tables__++ - /CreateTable/ - Creates a table with user-specified provisioned+ throughput settings. You must designate one attribute as the hash+ primary key for the table; you can optionally designate a second+ attribute as the range primary key. DynamoDB creates indexes on+ these key attributes for fast data access. Optionally, you can+ create one or more secondary indexes, which provide fast data access+ using non-key attributes.++ - /DescribeTable/ - Returns metadata for a table, such as table size,+ status, and index information.++ - /UpdateTable/ - Modifies the provisioned throughput settings for a+ table. Optionally, you can modify the provisioned throughput+ settings for global secondary indexes on the table.++ - /ListTables/ - Returns a list of all tables associated with the+ current AWS account and endpoint.++ - /DeleteTable/ - Deletes a table and all of its indexes.++ For conceptual information about managing tables, see+ <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html Working with Tables>+ in the /Amazon DynamoDB Developer Guide/.++ __Reading Data__++ - /GetItem/ - Returns a set of attributes for the item that has a+ given primary key. By default, /GetItem/ performs an eventually+ consistent read; however, applications can request a strongly+ consistent read instead.++ - /BatchGetItem/ - Performs multiple /GetItem/ requests for data items+ using their primary keys, from one table or multiple tables. The+ response from /BatchGetItem/ has a size limit of 16 MB and returns a+ maximum of 100 items. Both eventually consistent and strongly+ consistent reads can be used.++ - /Query/ - Returns one or more items from a table or a secondary+ index. You must provide a specific hash key value. You can narrow+ the scope of the query using comparison operators against a range+ key value, or on the index key. /Query/ supports either eventual or+ strong consistency. A single response has a size limit of 1 MB.++ - /Scan/ - Reads every item in a table; the result set is eventually+ consistent. You can limit the number of items returned by filtering+ the data attributes, using conditional expressions. /Scan/ can be+ used to enable ad-hoc querying of a table against non-key+ attributes; however, since this is a full table scan without using+ an index, /Scan/ should not be used for any application query use+ case that requires predictable performance.++ For conceptual information about reading data, see+ <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html Working with Items>+ and+ <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html Query and Scan Operations>+ in the /Amazon DynamoDB Developer Guide/.++ __Modifying Data__++ - /PutItem/ - Creates a new item, or replaces an existing item with a+ new item (including all the attributes). By default, if an item in+ the table already exists with the same primary key, the new item+ completely replaces the existing item. You can use conditional+ operators to replace an item only if its attribute values match+ certain conditions, or to insert a new item only if that item+ doesn\'t already exist.++ - /UpdateItem/ - Modifies the attributes of an existing item. You can+ also use conditional operators to perform an update only if the+ item\'s attribute values match certain conditions.++ - /DeleteItem/ - Deletes an item in a table by primary key. You can+ use conditional operators to perform a delete an item only if the+ item\'s attribute values match certain conditions.++ - /BatchWriteItem/ - Performs multiple /PutItem/ and /DeleteItem/+ requests across multiple tables in a single request. A failure of+ any request(s) in the batch will not cause the entire+ /BatchWriteItem/ operation to fail. Supports batches of up to 25+ items to put or delete, with a maximum total request size of 16 MB.++ For conceptual information about modifying data, see+ <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html Working with Items>+ and+ <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html Query and Scan Operations>+ in the /Amazon DynamoDB Developer Guide/. .- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/Welcome.html AWS API Reference>+ The types from this library are intended to be used with+ <http://hackage.haskell.org/package/amazonka amazonka>, which provides+ mechanisms for specifying AuthN/AuthZ information and sending requests. .- /Warning:/ This is an experimental preview release which is still under- heavy development and not intended for public consumption, caveat emptor!+ Use of lenses is required for constructing and manipulating types.+ This is due to the amount of nesting of AWS types and transparency regarding+ de/serialisation into more palatable Haskell values.+ The provided lenses should be compatible with any of the major lens libraries+ such as <http://hackage.haskell.org/package/lens lens> or+ <http://hackage.haskell.org/package/lens-family-core lens-family-core>.+ .+ See "Network.AWS.DynamoDB" and the <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/Welcome.html AWS API Reference>+ to get started. source-repository head type: git@@ -56,7 +172,37 @@ , Network.AWS.DynamoDB.Waiters other-modules:+ Network.AWS.DynamoDB.Types.Product+ , Network.AWS.DynamoDB.Types.Sum build-depends:- amazonka-core == 0.3.6.*+ amazonka-core == 1.0.0.* , base >= 4.7 && < 5++test-suite amazonka-dynamodb-test+ type: exitcode-stdio-1.0+ default-language: Haskell2010+ hs-source-dirs: test+ main-is: Main.hs++ ghc-options: -Wall -threaded++ -- This is not comprehensive if modules have manually been added.+ -- It exists to ensure cabal 'somewhat' detects test module changes.+ other-modules:+ Test.AWS.DynamoDB+ , Test.AWS.Gen.DynamoDB+ , Test.AWS.DynamoDB.Internal++ build-depends:+ amazonka-core == 1.0.0+ , amazonka-test == 1.0.0+ , amazonka-dynamodb == 1.0.0+ , base+ , bytestring+ , lens+ , tasty+ , tasty-hunit+ , text+ , time+ , unordered-containers
gen/Network/AWS/DynamoDB.hs view
@@ -1,52 +1,497 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module : Network.AWS.DynamoDB--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Amazon DynamoDB is a fully managed NoSQL database service that provides fast--- and predictable performance with seamless scalability. You can use Amazon--- DynamoDB to create a database table that can store and retrieve any amount of--- data, and serve any level of request traffic. Amazon DynamoDB automatically--- spreads the data and traffic for the table over a sufficient number of--- servers to handle the request capacity specified by the customer and the--- amount of data stored, while maintaining consistent and fast performance.+-- Amazon DynamoDB+--+-- __Overview__+--+-- This is the Amazon DynamoDB API Reference. This guide provides+-- descriptions and samples of the low-level DynamoDB API. For information+-- about DynamoDB application development, see the+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ Amazon DynamoDB Developer Guide>.+--+-- Instead of making the requests to the low-level DynamoDB API directly+-- from your application, we recommend that you use the AWS Software+-- Development Kits (SDKs). The easy-to-use libraries in the AWS SDKs make+-- it unnecessary to call the low-level DynamoDB API directly from your+-- application. The libraries take care of request authentication,+-- serialization, and connection management. For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/UsingAWSSDK.html Using the AWS SDKs with DynamoDB>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- If you decide to code against the low-level DynamoDB API directly, you+-- will need to write the necessary code to authenticate your requests. For+-- more information on signing your requests, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/API.html Using the DynamoDB API>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- The following are short descriptions of each low-level API action,+-- organized by function.+--+-- __Managing Tables__+--+-- - /CreateTable/ - Creates a table with user-specified provisioned+-- throughput settings. You must designate one attribute as the hash+-- primary key for the table; you can optionally designate a second+-- attribute as the range primary key. DynamoDB creates indexes on+-- these key attributes for fast data access. Optionally, you can+-- create one or more secondary indexes, which provide fast data access+-- using non-key attributes.+--+-- - /DescribeTable/ - Returns metadata for a table, such as table size,+-- status, and index information.+--+-- - /UpdateTable/ - Modifies the provisioned throughput settings for a+-- table. Optionally, you can modify the provisioned throughput+-- settings for global secondary indexes on the table.+--+-- - /ListTables/ - Returns a list of all tables associated with the+-- current AWS account and endpoint.+--+-- - /DeleteTable/ - Deletes a table and all of its indexes.+--+-- For conceptual information about managing tables, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html Working with Tables>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- __Reading Data__+--+-- - /GetItem/ - Returns a set of attributes for the item that has a+-- given primary key. By default, /GetItem/ performs an eventually+-- consistent read; however, applications can request a strongly+-- consistent read instead.+--+-- - /BatchGetItem/ - Performs multiple /GetItem/ requests for data items+-- using their primary keys, from one table or multiple tables. The+-- response from /BatchGetItem/ has a size limit of 16 MB and returns a+-- maximum of 100 items. Both eventually consistent and strongly+-- consistent reads can be used.+--+-- - /Query/ - Returns one or more items from a table or a secondary+-- index. You must provide a specific hash key value. You can narrow+-- the scope of the query using comparison operators against a range+-- key value, or on the index key. /Query/ supports either eventual or+-- strong consistency. A single response has a size limit of 1 MB.+--+-- - /Scan/ - Reads every item in a table; the result set is eventually+-- consistent. You can limit the number of items returned by filtering+-- the data attributes, using conditional expressions. /Scan/ can be+-- used to enable ad-hoc querying of a table against non-key+-- attributes; however, since this is a full table scan without using+-- an index, /Scan/ should not be used for any application query use+-- case that requires predictable performance.+--+-- For conceptual information about reading data, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html Working with Items>+-- and+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html Query and Scan Operations>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- __Modifying Data__+--+-- - /PutItem/ - Creates a new item, or replaces an existing item with a+-- new item (including all the attributes). By default, if an item in+-- the table already exists with the same primary key, the new item+-- completely replaces the existing item. You can use conditional+-- operators to replace an item only if its attribute values match+-- certain conditions, or to insert a new item only if that item+-- doesn\'t already exist.+--+-- - /UpdateItem/ - Modifies the attributes of an existing item. You can+-- also use conditional operators to perform an update only if the+-- item\'s attribute values match certain conditions.+--+-- - /DeleteItem/ - Deletes an item in a table by primary key. You can+-- use conditional operators to perform a delete an item only if the+-- item\'s attribute values match certain conditions.+--+-- - /BatchWriteItem/ - Performs multiple /PutItem/ and /DeleteItem/+-- requests across multiple tables in a single request. A failure of+-- any request(s) in the batch will not cause the entire+-- /BatchWriteItem/ operation to fail. Supports batches of up to 25+-- items to put or delete, with a maximum total request size of 16 MB.+--+-- For conceptual information about modifying data, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html Working with Items>+-- and+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html Query and Scan Operations>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/Welcome.html AWS API Reference> module Network.AWS.DynamoDB- ( module Network.AWS.DynamoDB.BatchGetItem- , module Network.AWS.DynamoDB.BatchWriteItem- , module Network.AWS.DynamoDB.CreateTable+ (+ -- * Service+ DynamoDB++ -- * Errors+ -- $errors++ -- ** ProvisionedThroughputExceededException+ , _ProvisionedThroughputExceededException++ -- ** ConditionalCheckFailedException+ , _ConditionalCheckFailedException++ -- ** ItemCollectionSizeLimitExceededException+ , _ItemCollectionSizeLimitExceededException++ -- ** InternalServerError+ , _InternalServerError++ -- ** ResourceNotFoundException+ , _ResourceNotFoundException++ -- ** ResourceInUseException+ , _ResourceInUseException++ -- ** LimitExceededException+ , _LimitExceededException++ -- * Waiters+ -- $waiters++ -- ** TableNotExists+ , tableNotExists++ -- ** TableExists+ , tableExists++ -- * Operations+ -- $operations++ -- ** UpdateItem+ , module Network.AWS.DynamoDB.UpdateItem++ -- ** DeleteItem , module Network.AWS.DynamoDB.DeleteItem++ -- ** PutItem+ , module Network.AWS.DynamoDB.PutItem++ -- ** DeleteTable , module Network.AWS.DynamoDB.DeleteTable++ -- ** UpdateTable+ , module Network.AWS.DynamoDB.UpdateTable++ -- ** BatchGetItem+ , module Network.AWS.DynamoDB.BatchGetItem++ -- ** DescribeTable , module Network.AWS.DynamoDB.DescribeTable++ -- ** GetItem , module Network.AWS.DynamoDB.GetItem++ -- ** BatchWriteItem+ , module Network.AWS.DynamoDB.BatchWriteItem++ -- ** Scan (Paginated)+ , module Network.AWS.DynamoDB.Scan++ -- ** ListTables (Paginated) , module Network.AWS.DynamoDB.ListTables- , module Network.AWS.DynamoDB.PutItem++ -- ** Query (Paginated) , module Network.AWS.DynamoDB.Query- , module Network.AWS.DynamoDB.Scan- , module Network.AWS.DynamoDB.Types- , module Network.AWS.DynamoDB.UpdateItem- , module Network.AWS.DynamoDB.UpdateTable- , module Network.AWS.DynamoDB.Waiters++ -- ** CreateTable+ , module Network.AWS.DynamoDB.CreateTable++ -- * Types++ -- ** AttributeAction+ , AttributeAction (..)++ -- ** ComparisonOperator+ , ComparisonOperator (..)++ -- ** ConditionalOperator+ , ConditionalOperator (..)++ -- ** IndexStatus+ , IndexStatus (..)++ -- ** KeyType+ , KeyType (..)++ -- ** ProjectionType+ , ProjectionType (..)++ -- ** ReturnConsumedCapacity+ , ReturnConsumedCapacity (..)++ -- ** ReturnItemCollectionMetrics+ , ReturnItemCollectionMetrics (..)++ -- ** ReturnValue+ , ReturnValue (..)++ -- ** ScalarAttributeType+ , ScalarAttributeType (..)++ -- ** Select+ , Select (..)++ -- ** StreamViewType+ , StreamViewType (..)++ -- ** TableStatus+ , TableStatus (..)++ -- ** AttributeDefinition+ , AttributeDefinition+ , attributeDefinition+ , adAttributeName+ , adAttributeType++ -- ** AttributeValue+ , AttributeValue+ , attributeValue+ , avL+ , avM+ , avNS+ , avNULL+ , avN+ , avBS+ , avB+ , avSS+ , avS+ , avBOOL++ -- ** AttributeValueUpdate+ , AttributeValueUpdate+ , attributeValueUpdate+ , avuValue+ , avuAction++ -- ** Capacity+ , Capacity+ , capacity+ , cCapacityUnits++ -- ** Condition+ , Condition+ , condition+ , cAttributeValueList+ , cComparisonOperator++ -- ** ConsumedCapacity+ , ConsumedCapacity+ , consumedCapacity+ , ccCapacityUnits+ , ccGlobalSecondaryIndexes+ , ccLocalSecondaryIndexes+ , ccTable+ , ccTableName++ -- ** CreateGlobalSecondaryIndexAction+ , CreateGlobalSecondaryIndexAction+ , createGlobalSecondaryIndexAction+ , cgsiaIndexName+ , cgsiaKeySchema+ , cgsiaProjection+ , cgsiaProvisionedThroughput++ -- ** DeleteGlobalSecondaryIndexAction+ , DeleteGlobalSecondaryIndexAction+ , deleteGlobalSecondaryIndexAction+ , dgsiaIndexName++ -- ** DeleteRequest+ , DeleteRequest+ , deleteRequest+ , drKey++ -- ** ExpectedAttributeValue+ , ExpectedAttributeValue+ , expectedAttributeValue+ , eavAttributeValueList+ , eavExists+ , eavValue+ , eavComparisonOperator++ -- ** GlobalSecondaryIndex+ , GlobalSecondaryIndex+ , globalSecondaryIndex+ , gsiIndexName+ , gsiKeySchema+ , gsiProjection+ , gsiProvisionedThroughput++ -- ** GlobalSecondaryIndexDescription+ , GlobalSecondaryIndexDescription+ , globalSecondaryIndexDescription+ , gsidBackfilling+ , gsidProvisionedThroughput+ , gsidIndexStatus+ , gsidIndexSizeBytes+ , gsidIndexARN+ , gsidKeySchema+ , gsidProjection+ , gsidItemCount+ , gsidIndexName++ -- ** GlobalSecondaryIndexUpdate+ , GlobalSecondaryIndexUpdate+ , globalSecondaryIndexUpdate+ , gsiuCreate+ , gsiuDelete+ , gsiuUpdate++ -- ** ItemCollectionMetrics+ , ItemCollectionMetrics+ , itemCollectionMetrics+ , icmItemCollectionKey+ , icmSizeEstimateRangeGB++ -- ** KeySchemaElement+ , KeySchemaElement+ , keySchemaElement+ , kseAttributeName+ , kseKeyType++ -- ** KeysAndAttributes+ , KeysAndAttributes+ , keysAndAttributes+ , kaaProjectionExpression+ , kaaConsistentRead+ , kaaExpressionAttributeNames+ , kaaAttributesToGet+ , kaaKeys++ -- ** LocalSecondaryIndex+ , LocalSecondaryIndex+ , localSecondaryIndex+ , lsiIndexName+ , lsiKeySchema+ , lsiProjection++ -- ** LocalSecondaryIndexDescription+ , LocalSecondaryIndexDescription+ , localSecondaryIndexDescription+ , lsidIndexSizeBytes+ , lsidIndexARN+ , lsidKeySchema+ , lsidProjection+ , lsidItemCount+ , lsidIndexName++ -- ** Projection+ , Projection+ , projection+ , pProjectionType+ , pNonKeyAttributes++ -- ** ProvisionedThroughput+ , ProvisionedThroughput+ , provisionedThroughput+ , ptReadCapacityUnits+ , ptWriteCapacityUnits++ -- ** ProvisionedThroughputDescription+ , ProvisionedThroughputDescription+ , provisionedThroughputDescription+ , ptdReadCapacityUnits+ , ptdLastDecreaseDateTime+ , ptdWriteCapacityUnits+ , ptdNumberOfDecreasesToday+ , ptdLastIncreaseDateTime++ -- ** PutRequest+ , PutRequest+ , putRequest+ , prItem++ -- ** StreamSpecification+ , StreamSpecification+ , streamSpecification+ , ssStreamEnabled+ , ssStreamViewType++ -- ** TableDescription+ , TableDescription+ , tableDescription+ , tdProvisionedThroughput+ , tdAttributeDefinitions+ , tdLatestStreamARN+ , tdTableSizeBytes+ , tdTableStatus+ , tdTableARN+ , tdKeySchema+ , tdLatestStreamLabel+ , tdGlobalSecondaryIndexes+ , tdLocalSecondaryIndexes+ , tdCreationDateTime+ , tdItemCount+ , tdTableName+ , tdStreamSpecification++ -- ** UpdateGlobalSecondaryIndexAction+ , UpdateGlobalSecondaryIndexAction+ , updateGlobalSecondaryIndexAction+ , ugsiaIndexName+ , ugsiaProvisionedThroughput++ -- ** WriteRequest+ , WriteRequest+ , writeRequest+ , wrPutRequest+ , wrDeleteRequest ) where -import Network.AWS.DynamoDB.BatchGetItem-import Network.AWS.DynamoDB.BatchWriteItem-import Network.AWS.DynamoDB.CreateTable-import Network.AWS.DynamoDB.DeleteItem-import Network.AWS.DynamoDB.DeleteTable-import Network.AWS.DynamoDB.DescribeTable-import Network.AWS.DynamoDB.GetItem-import Network.AWS.DynamoDB.ListTables-import Network.AWS.DynamoDB.PutItem-import Network.AWS.DynamoDB.Query-import Network.AWS.DynamoDB.Scan-import Network.AWS.DynamoDB.Types-import Network.AWS.DynamoDB.UpdateItem-import Network.AWS.DynamoDB.UpdateTable-import Network.AWS.DynamoDB.Waiters+import Network.AWS.DynamoDB.BatchGetItem+import Network.AWS.DynamoDB.BatchWriteItem+import Network.AWS.DynamoDB.CreateTable+import Network.AWS.DynamoDB.DeleteItem+import Network.AWS.DynamoDB.DeleteTable+import Network.AWS.DynamoDB.DescribeTable+import Network.AWS.DynamoDB.GetItem+import Network.AWS.DynamoDB.ListTables+import Network.AWS.DynamoDB.PutItem+import Network.AWS.DynamoDB.Query+import Network.AWS.DynamoDB.Scan+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.UpdateItem+import Network.AWS.DynamoDB.UpdateTable+import Network.AWS.DynamoDB.Waiters++{- $errors+Error matchers are designed for use with the functions provided by+<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.+This allows catching (and rethrowing) service specific errors returned+by 'DynamoDB'.+-}++{- $operations+Some AWS operations return results that are incomplete and require subsequent+requests in order to obtain the entire result set. The process of sending+subsequent requests to continue where a previous request left off is called+pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to+1000 objects at a time, and you must send subsequent requests with the+appropriate Marker in order to retrieve the next page of results.++Operations that have an 'AWSPager' instance can transparently perform subsequent+requests, correctly setting Markers and other request facets to iterate through+the entire result set of a truncated API operation. Operations which support+this have an additional note in the documentation.++Many operations have the ability to filter results on the server side. See the+individual operation parameters for details.+-}++{- $waiters+Waiters poll by repeatedly sending a request until some remote success condition+configured by the 'Wait' specification is fulfilled. The 'Wait' specification+determines how many attempts should be made, in addition to delay and retry strategies.+-}
gen/Network/AWS/DynamoDB/BatchGetItem.hs view
@@ -1,292 +1,336 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}+{-# 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.DynamoDB.BatchGetItem--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | The /BatchGetItem/ operation returns the attributes of one or more items from--- one or more tables. You identify requested items by primary key.+-- The /BatchGetItem/ operation returns the attributes of one or more items+-- from one or more tables. You identify requested items by primary key. ----- A single operation can retrieve up to 16 MB of data, which can contain as--- many as 100 items. /BatchGetItem/ will return a partial result if the response--- size limit is exceeded, the table's provisioned throughput is exceeded, or an--- internal processing failure occurs. If a partial result is returned, the--- operation returns a value for /UnprocessedKeys/. You can use this value to--- retry the operation starting with the next item to get.+-- A single operation can retrieve up to 16 MB of data, which can contain+-- as many as 100 items. /BatchGetItem/ will return a partial result if the+-- response size limit is exceeded, the table\'s provisioned throughput is+-- exceeded, or an internal processing failure occurs. If a partial result+-- is returned, the operation returns a value for /UnprocessedKeys/. You+-- can use this value to retry the operation starting with the next item to+-- get. ----- For example, if you ask to retrieve 100 items, but each individual item is--- 300 KB in size, the system returns 52 items (so as not to exceed the 16 MB--- limit). It also returns an appropriate /UnprocessedKeys/ value so you can get--- the next page of results. If desired, your application can include its own--- logic to assemble the pages of results into one data set.+-- If you request more than 100 items /BatchGetItem/ will return a+-- /ValidationException/ with the message \"Too many items requested for+-- the BatchGetItem call\". --+-- For example, if you ask to retrieve 100 items, but each individual item+-- is 300 KB in size, the system returns 52 items (so as not to exceed the+-- 16 MB limit). It also returns an appropriate /UnprocessedKeys/ value so+-- you can get the next page of results. If desired, your application can+-- include its own logic to assemble the pages of results into one data+-- set.+-- -- If /none/ of the items can be processed due to insufficient provisioned--- throughput on all of the tables in the request, then /BatchGetItem/ will return--- a /ProvisionedThroughputExceededException/. If /at least one/ of the items is--- successfully processed, then /BatchGetItem/ completes successfully, while--- returning the keys of the unread items in /UnprocessedKeys/.+-- throughput on all of the tables in the request, then /BatchGetItem/ will+-- return a /ProvisionedThroughputExceededException/. If /at least one/ of+-- the items is successfully processed, then /BatchGetItem/ completes+-- successfully, while returning the keys of the unread items in+-- /UnprocessedKeys/. -- -- If DynamoDB returns any unprocessed items, you should retry the batch--- operation on those items. However, /we strongly recommend that you use anexponential backoff algorithm/. If you retry the batch operation immediately,--- the underlying read or write requests can still fail due to throttling on the--- individual tables. If you delay the batch operation using exponential--- backoff, the individual requests in the batch are much more likely to succeed.+-- operation on those items. However, /we strongly recommend that you use+-- an exponential backoff algorithm/. If you retry the batch operation+-- immediately, the underlying read or write requests can still fail due to+-- throttling on the individual tables. If you delay the batch operation+-- using exponential backoff, the individual requests in the batch are much+-- more likely to succeed. ----- For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#BatchOperations Batch Operations and Error Handling> in the /AmazonDynamoDB Developer Guide/.+-- For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#BatchOperations Batch Operations and Error Handling>+-- in the /Amazon DynamoDB Developer Guide/. -- -- By default, /BatchGetItem/ performs eventually consistent reads on every--- table in the request. If you want strongly consistent reads instead, you can--- set /ConsistentRead/ to 'true' for any or all tables.+-- table in the request. If you want strongly consistent reads instead, you+-- can set /ConsistentRead/ to 'true' for any or all tables. -- -- In order to minimize response latency, /BatchGetItem/ retrieves items in -- parallel. ----- When designing your application, keep in mind that DynamoDB does not return--- attributes in any particular order. To help parse the response by item,--- include the primary key values for the items in your request in the /AttributesToGet/ parameter.+-- When designing your application, keep in mind that DynamoDB does not+-- return attributes in any particular order. To help parse the response by+-- item, include the primary key values for the items in your request in+-- the /AttributesToGet/ parameter. -- -- If a requested item does not exist, it is not returned in the result. -- Requests for nonexistent items consume the minimum read capacity units--- according to the type of read. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#CapacityUnitCalculations Capacity UnitsCalculations> in the /Amazon DynamoDB Developer Guide/.+-- according to the type of read. For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#CapacityUnitCalculations Capacity Units Calculations>+-- in the /Amazon DynamoDB Developer Guide/. ----- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html>+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchGetItem.html AWS API Reference> for BatchGetItem. module Network.AWS.DynamoDB.BatchGetItem (- -- * Request- BatchGetItem- -- ** Request constructor- , batchGetItem- -- ** Request lenses- , bgiRequestItems+ -- * Creating a Request+ batchGetItem+ , BatchGetItem+ -- * Request Lenses , bgiReturnConsumedCapacity+ , bgiRequestItems - -- * Response- , BatchGetItemResponse- -- ** Response constructor+ -- * Destructuring the Response , batchGetItemResponse- -- ** Response lenses- , bgirConsumedCapacity- , bgirResponses- , bgirUnprocessedKeys+ , BatchGetItemResponse+ -- * Response Lenses+ , bgirsUnprocessedKeys+ , bgirsResponses+ , bgirsConsumedCapacity+ , bgirsStatus ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts--data BatchGetItem = BatchGetItem- { _bgiRequestItems :: Map Text KeysAndAttributes- , _bgiReturnConsumedCapacity :: Maybe ReturnConsumedCapacity- } deriving (Eq, Read, Show)+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response --- | 'BatchGetItem' constructor.+-- | Represents the input of a /BatchGetItem/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'batchGetItem' smart constructor.+data BatchGetItem = BatchGetItem'+ { _bgiReturnConsumedCapacity :: !(Maybe ReturnConsumedCapacity)+ , _bgiRequestItems :: !(Map Text KeysAndAttributes)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchGetItem' with the minimum fields required to make a request. ----- * 'bgiRequestItems' @::@ 'HashMap' 'Text' 'KeysAndAttributes'+-- Use one of the following lenses to modify other fields as desired: ----- * 'bgiReturnConsumedCapacity' @::@ 'Maybe' 'ReturnConsumedCapacity'+-- * 'bgiReturnConsumedCapacity' ---batchGetItem :: BatchGetItem-batchGetItem = BatchGetItem- { _bgiRequestItems = mempty- , _bgiReturnConsumedCapacity = Nothing+-- * 'bgiRequestItems'+batchGetItem+ :: BatchGetItem+batchGetItem =+ BatchGetItem'+ { _bgiReturnConsumedCapacity = Nothing+ , _bgiRequestItems = mempty } --- | A map of one or more table names and, for each table, a map that describes--- one or more items to retrieve from that table. Each table name can be used--- only once per /BatchGetItem/ request.+-- | Undocumented member.+bgiReturnConsumedCapacity :: Lens' BatchGetItem (Maybe ReturnConsumedCapacity)+bgiReturnConsumedCapacity = lens _bgiReturnConsumedCapacity (\ s a -> s{_bgiReturnConsumedCapacity = a});++-- | A map of one or more table names and, for each table, a map that+-- describes one or more items to retrieve from that table. Each table name+-- can be used only once per /BatchGetItem/ request. -- -- Each element in the map of items to retrieve consists of the following: ----- /ConsistentRead/ - If 'true', a strongly consistent read is used; if 'false'--- (the default), an eventually consistent read is used.------ /ExpressionAttributeNames/ - One or more substitution tokens for attribute--- names in the /ProjectionExpression/ parameter. The following are some use cases--- for using /ExpressionAttributeNames/:+-- - /ConsistentRead/ - If 'true', a strongly consistent read is used; if+-- 'false' (the default), an eventually consistent read is used. ----- To access an attribute whose name conflicts with a DynamoDB reserved word.+-- - /ExpressionAttributeNames/ - One or more substitution tokens for+-- attribute names in the /ProjectionExpression/ parameter. The+-- following are some use cases for using /ExpressionAttributeNames/: ----- To create a placeholder for repeating occurrences of an attribute name in--- an expression.+-- - To access an attribute whose name conflicts with a DynamoDB+-- reserved word. ----- To prevent special characters in an attribute name from being--- misinterpreted in an expression.+-- - To create a placeholder for repeating occurrences of an+-- attribute name in an expression. ----- Use the # character in an expression to dereference an attribute name. For--- example, consider the following attribute name:+-- - To prevent special characters in an attribute name from being+-- misinterpreted in an expression. ----- 'Percentile'+-- Use the __#__ character in an expression to dereference an attribute+-- name. For example, consider the following attribute name: ----- The name of this attribute conflicts with a reserved word, so it cannot be--- used directly in an expression. (For the complete list of reserved words, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around this,--- you could specify the following for /ExpressionAttributeNames/:+-- - 'Percentile' ----- '{"#P":"Percentile"}'+-- The name of this attribute conflicts with a reserved word, so it+-- cannot be used directly in an expression. (For the complete list of+-- reserved words, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words>+-- in the /Amazon DynamoDB Developer Guide/). To work around this, you+-- could specify the following for /ExpressionAttributeNames/: ----- You could then use this substitution in an expression, as in this example:+-- - '{\"#P\":\"Percentile\"}' ----- '#P = :val'+-- You could then use this substitution in an expression, as in this+-- example: ----- Tokens that begin with the : character are /expression attribute values/,--- which are placeholders for the actual value at runtime.+-- - '#P = :val' ----- For more information on expression attribute names, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing ItemAttributes> in the /Amazon DynamoDB Developer Guide/.+-- Tokens that begin with the __:__ character are /expression attribute+-- values/, which are placeholders for the actual value at runtime. ----- /Keys/ - An array of primary key attribute values that define specific items--- in the table. For each primary key, you must provide /all/ of the key--- attributes. For example, with a hash type primary key, you only need to--- provide the hash attribute. For a hash-and-range type primary key, you must--- provide /both/ the hash attribute and the range attribute.+-- For more information on expression attribute names, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/. ----- /ProjectionExpression/ - A string that identifies one or more attributes to--- retrieve from the table. These attributes can include scalars, sets, or--- elements of a JSON document. The attributes in the expression must be--- separated by commas.+-- - /Keys/ - An array of primary key attribute values that define+-- specific items in the table. For each primary key, you must provide+-- /all/ of the key attributes. For example, with a hash type primary+-- key, you only need to provide the hash attribute. For a+-- hash-and-range type primary key, you must provide /both/ the hash+-- attribute and the range attribute. ----- If no attribute names are specified, then all attributes will be returned.--- If any of the requested attributes are not found, they will not appear in the--- result.+-- - /ProjectionExpression/ - A string that identifies one or more+-- attributes to retrieve from the table. These attributes can include+-- scalars, sets, or elements of a JSON document. The attributes in the+-- expression must be separated by commas. ----- For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes> in the /Amazon DynamoDBDeveloper Guide/.+-- If no attribute names are specified, then all attributes will be+-- returned. If any of the requested attributes are not found, they+-- will not appear in the result. ----- /AttributesToGet/ -+-- For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/. ----- This is a legacy parameter, for backward compatibility. New applications--- should use /ProjectionExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.+-- - /AttributesToGet/ - ----- This parameter allows you to retrieve attributes of type List or Map;--- however, it cannot retrieve individual elements within a List or a Map.+-- This is a legacy parameter, for backward compatibility. New+-- applications should use /ProjectionExpression/ instead. Do not+-- combine legacy parameters and expression parameters in a single API+-- call; otherwise, DynamoDB will return a /ValidationException/+-- exception. ----- The names of one or more attributes to retrieve. If no attribute names are--- provided, then all attributes will be returned. If any of the requested--- attributes are not found, they will not appear in the result.+-- This parameter allows you to retrieve attributes of type List or+-- Map; however, it cannot retrieve individual elements within a List+-- or a Map. ----- Note that /AttributesToGet/ has no effect on provisioned throughput--- consumption. DynamoDB determines capacity units consumed based on item size,--- not on the amount of data that is returned to an application.+-- The names of one or more attributes to retrieve. If no attribute+-- names are provided, then all attributes will be returned. If any of+-- the requested attributes are not found, they will not appear in the+-- result. --+-- Note that /AttributesToGet/ has no effect on provisioned throughput+-- consumption. DynamoDB determines capacity units consumed based on+-- item size, not on the amount of data that is returned to an+-- application. -- bgiRequestItems :: Lens' BatchGetItem (HashMap Text KeysAndAttributes)-bgiRequestItems = lens _bgiRequestItems (\s a -> s { _bgiRequestItems = a }) . _Map+bgiRequestItems = lens _bgiRequestItems (\ s a -> s{_bgiRequestItems = a}) . _Map; -bgiReturnConsumedCapacity :: Lens' BatchGetItem (Maybe ReturnConsumedCapacity)-bgiReturnConsumedCapacity =- lens _bgiReturnConsumedCapacity- (\s a -> s { _bgiReturnConsumedCapacity = a })+instance AWSRequest BatchGetItem where+ type Sv BatchGetItem = DynamoDB+ type Rs BatchGetItem = BatchGetItemResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ BatchGetItemResponse' <$>+ (x .?> "UnprocessedKeys" .!@ mempty) <*>+ (x .?> "Responses" .!@ mempty)+ <*> (x .?> "ConsumedCapacity" .!@ mempty)+ <*> (pure (fromEnum s))) -data BatchGetItemResponse = BatchGetItemResponse- { _bgirConsumedCapacity :: List "ConsumedCapacity" ConsumedCapacity- , _bgirResponses :: Map Text (List "Responses" (Map Text AttributeValue))- , _bgirUnprocessedKeys :: Map Text KeysAndAttributes- } deriving (Eq, Read, Show)+instance ToHeaders BatchGetItem where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.BatchGetItem" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)]) --- | 'BatchGetItemResponse' constructor.+instance ToJSON BatchGetItem where+ toJSON BatchGetItem'{..}+ = object+ ["ReturnConsumedCapacity" .=+ _bgiReturnConsumedCapacity,+ "RequestItems" .= _bgiRequestItems]++instance ToPath BatchGetItem where+ toPath = const "/"++instance ToQuery BatchGetItem where+ toQuery = const mempty++-- | Represents the output of a /BatchGetItem/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'batchGetItemResponse' smart constructor.+data BatchGetItemResponse = BatchGetItemResponse'+ { _bgirsUnprocessedKeys :: !(Maybe (Map Text KeysAndAttributes))+ , _bgirsResponses :: !(Maybe (Map Text [Map Text AttributeValue]))+ , _bgirsConsumedCapacity :: !(Maybe [ConsumedCapacity])+ , _bgirsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchGetItemResponse' with the minimum fields required to make a request. ----- * 'bgirConsumedCapacity' @::@ ['ConsumedCapacity']+-- Use one of the following lenses to modify other fields as desired: ----- * 'bgirResponses' @::@ 'HashMap' 'Text' ['HashMap' 'Text' 'AttributeValue']+-- * 'bgirsUnprocessedKeys' ----- * 'bgirUnprocessedKeys' @::@ 'HashMap' 'Text' 'KeysAndAttributes'+-- * 'bgirsResponses' ---batchGetItemResponse :: BatchGetItemResponse-batchGetItemResponse = BatchGetItemResponse- { _bgirResponses = mempty- , _bgirUnprocessedKeys = mempty- , _bgirConsumedCapacity = mempty+-- * 'bgirsConsumedCapacity'+--+-- * 'bgirsStatus'+batchGetItemResponse+ :: Int -- ^ 'bgirsStatus'+ -> BatchGetItemResponse+batchGetItemResponse pStatus_ =+ BatchGetItemResponse'+ { _bgirsUnprocessedKeys = Nothing+ , _bgirsResponses = Nothing+ , _bgirsConsumedCapacity = Nothing+ , _bgirsStatus = pStatus_ } --- | The read capacity units consumed by the operation.+-- | A map of tables and their respective keys that were not processed with+-- the current response. The /UnprocessedKeys/ value is in the same form as+-- /RequestItems/, so the value can be provided directly to a subsequent+-- /BatchGetItem/ operation. For more information, see /RequestItems/ in+-- the Request Parameters section. -- -- Each element consists of: ----- /TableName/ - The table that consumed the provisioned throughput.+-- - /Keys/ - An array of primary key attribute values that define+-- specific items in the table. ----- /CapacityUnits/ - The total number of capacity units consumed.+-- - /AttributesToGet/ - One or more attributes to be retrieved from the+-- table or index. By default, all attributes are returned. If a+-- requested attribute is not found, it does not appear in the result. --+-- - /ConsistentRead/ - The consistency of a read operation. If set to+-- 'true', then a strongly consistent read is used; otherwise, an+-- eventually consistent read is used. ---bgirConsumedCapacity :: Lens' BatchGetItemResponse [ConsumedCapacity]-bgirConsumedCapacity =- lens _bgirConsumedCapacity (\s a -> s { _bgirConsumedCapacity = a })- . _List+-- If there are no unprocessed keys remaining, the response contains an+-- empty /UnprocessedKeys/ map.+bgirsUnprocessedKeys :: Lens' BatchGetItemResponse (HashMap Text KeysAndAttributes)+bgirsUnprocessedKeys = lens _bgirsUnprocessedKeys (\ s a -> s{_bgirsUnprocessedKeys = a}) . _Default . _Map; --- | A map of table name to a list of items. Each object in /Responses/ consists of--- a table name, along with a map of attribute data consisting of the data type--- and attribute value.-bgirResponses :: Lens' BatchGetItemResponse (HashMap Text [HashMap Text AttributeValue])-bgirResponses = lens _bgirResponses (\s a -> s { _bgirResponses = a }) . _Map+-- | A map of table name to a list of items. Each object in /Responses/+-- consists of a table name, along with a map of attribute data consisting+-- of the data type and attribute value.+bgirsResponses :: Lens' BatchGetItemResponse (HashMap Text [HashMap Text AttributeValue])+bgirsResponses = lens _bgirsResponses (\ s a -> s{_bgirsResponses = a}) . _Default . _Map; --- | A map of tables and their respective keys that were not processed with the--- current response. The /UnprocessedKeys/ value is in the same form as /RequestItems/, so the value can be provided directly to a subsequent /BatchGetItem/--- operation. For more information, see /RequestItems/ in the Request Parameters--- section.+-- | The read capacity units consumed by the operation. -- -- Each element consists of: ----- /Keys/ - An array of primary key attribute values that define specific items--- in the table.------ /AttributesToGet/ - One or more attributes to be retrieved from the table or--- index. By default, all attributes are returned. If a requested attribute is--- not found, it does not appear in the result.+-- - /TableName/ - The table that consumed the provisioned throughput. ----- /ConsistentRead/ - The consistency of a read operation. If set to 'true', then--- a strongly consistent read is used; otherwise, an eventually consistent read--- is used.+-- - /CapacityUnits/ - The total number of capacity units consumed. ----- If there are no unprocessed keys remaining, the response contains an empty /UnprocessedKeys/ map.-bgirUnprocessedKeys :: Lens' BatchGetItemResponse (HashMap Text KeysAndAttributes)-bgirUnprocessedKeys =- lens _bgirUnprocessedKeys (\s a -> s { _bgirUnprocessedKeys = a })- . _Map--instance ToPath BatchGetItem where- toPath = const "/"--instance ToQuery BatchGetItem where- toQuery = const mempty--instance ToHeaders BatchGetItem--instance ToJSON BatchGetItem where- toJSON BatchGetItem{..} = object- [ "RequestItems" .= _bgiRequestItems- , "ReturnConsumedCapacity" .= _bgiReturnConsumedCapacity- ]--instance AWSRequest BatchGetItem where- type Sv BatchGetItem = DynamoDB- type Rs BatchGetItem = BatchGetItemResponse-- request = post "BatchGetItem"- response = jsonResponse+bgirsConsumedCapacity :: Lens' BatchGetItemResponse [ConsumedCapacity]+bgirsConsumedCapacity = lens _bgirsConsumedCapacity (\ s a -> s{_bgirsConsumedCapacity = a}) . _Default . _Coerce; -instance FromJSON BatchGetItemResponse where- parseJSON = withObject "BatchGetItemResponse" $ \o -> BatchGetItemResponse- <$> o .:? "ConsumedCapacity" .!= mempty- <*> o .:? "Responses" .!= mempty- <*> o .:? "UnprocessedKeys" .!= mempty+-- | The response status code.+bgirsStatus :: Lens' BatchGetItemResponse Int+bgirsStatus = lens _bgirsStatus (\ s a -> s{_bgirsStatus = a});
gen/Network/AWS/DynamoDB/BatchWriteItem.hs view
@@ -1,309 +1,337 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}+{-# 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.DynamoDB.BatchWriteItem--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | The /BatchWriteItem/ operation puts or deletes multiple items in one or more--- tables. A single call to /BatchWriteItem/ can write up to 16 MB of data, which--- can comprise as many as 25 put or delete requests. Individual items to be--- written can be as large as 400 KB.+-- The /BatchWriteItem/ operation puts or deletes multiple items in one or+-- more tables. A single call to /BatchWriteItem/ can write up to 16 MB of+-- data, which can comprise as many as 25 put or delete requests.+-- Individual items to be written can be as large as 400 KB. ----- /BatchWriteItem/ cannot update items. To update items, use the /UpdateItem/ API.+-- /BatchWriteItem/ cannot update items. To update items, use the+-- /UpdateItem/ API. ----- The individual /PutItem/ and /DeleteItem/ operations specified in /BatchWriteItem/--- are atomic; however /BatchWriteItem/ as a whole is not. If any requested--- operations fail because the table's provisioned throughput is exceeded or an--- internal processing failure occurs, the failed operations are returned in the /UnprocessedItems/ response parameter. You can investigate and optionally--- resend the requests. Typically, you would call /BatchWriteItem/ in a loop. Each--- iteration would check for unprocessed items and submit a new /BatchWriteItem/--- request with those unprocessed items until all items have been processed.+-- The individual /PutItem/ and /DeleteItem/ operations specified in+-- /BatchWriteItem/ are atomic; however /BatchWriteItem/ as a whole is not.+-- If any requested operations fail because the table\'s provisioned+-- throughput is exceeded or an internal processing failure occurs, the+-- failed operations are returned in the /UnprocessedItems/ response+-- parameter. You can investigate and optionally resend the requests.+-- Typically, you would call /BatchWriteItem/ in a loop. Each iteration+-- would check for unprocessed items and submit a new /BatchWriteItem/+-- request with those unprocessed items until all items have been+-- processed. -- -- Note that if /none/ of the items can be processed due to insufficient--- provisioned throughput on all of the tables in the request, then /BatchWriteItem/ will return a /ProvisionedThroughputExceededException/.+-- provisioned throughput on all of the tables in the request, then+-- /BatchWriteItem/ will return a /ProvisionedThroughputExceededException/. -- -- If DynamoDB returns any unprocessed items, you should retry the batch--- operation on those items. However, /we strongly recommend that you use anexponential backoff algorithm/. If you retry the batch operation immediately,--- the underlying read or write requests can still fail due to throttling on the--- individual tables. If you delay the batch operation using exponential--- backoff, the individual requests in the batch are much more likely to succeed.+-- operation on those items. However, /we strongly recommend that you use+-- an exponential backoff algorithm/. If you retry the batch operation+-- immediately, the underlying read or write requests can still fail due to+-- throttling on the individual tables. If you delay the batch operation+-- using exponential backoff, the individual requests in the batch are much+-- more likely to succeed. ----- For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#BatchOperations Batch Operations and Error Handling> in the /AmazonDynamoDB Developer Guide/.+-- For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#BatchOperations Batch Operations and Error Handling>+-- in the /Amazon DynamoDB Developer Guide/. ----- With /BatchWriteItem/, you can efficiently write or delete large amounts of--- data, such as from Amazon Elastic MapReduce (EMR), or copy data from another--- database into DynamoDB. In order to improve performance with these--- large-scale operations, /BatchWriteItem/ does not behave in the same way as--- individual /PutItem/ and /DeleteItem/ calls would. For example, you cannot--- specify conditions on individual put and delete requests, and /BatchWriteItem/--- does not return deleted items in the response.+-- With /BatchWriteItem/, you can efficiently write or delete large amounts+-- of data, such as from Amazon Elastic MapReduce (EMR), or copy data from+-- another database into DynamoDB. In order to improve performance with+-- these large-scale operations, /BatchWriteItem/ does not behave in the+-- same way as individual /PutItem/ and /DeleteItem/ calls would. For+-- example, you cannot specify conditions on individual put and delete+-- requests, and /BatchWriteItem/ does not return deleted items in the+-- response. ----- If you use a programming language that supports concurrency, such as Java,--- you can use threads to write items in parallel. Your application must include--- the necessary logic to manage the threads. With languages that don't support--- threading, such as PHP, you must update or delete the specified items one at--- a time. In both situations, /BatchWriteItem/ provides an alternative where the--- API performs the specified put and delete operations in parallel, giving you--- the power of the thread pool approach without having to introduce complexity--- into your application.+-- If you use a programming language that supports concurrency, you can use+-- threads to write items in parallel. Your application must include the+-- necessary logic to manage the threads. With languages that don\'t+-- support threading, you must update or delete the specified items one at+-- a time. In both situations, /BatchWriteItem/ provides an alternative+-- where the API performs the specified put and delete operations in+-- parallel, giving you the power of the thread pool approach without+-- having to introduce complexity into your application. -- -- Parallel processing reduces latency, but each specified put and delete -- request consumes the same number of write capacity units whether it is--- processed in parallel or not. Delete operations on nonexistent items consume--- one write capacity unit.------ If one or more of the following is true, DynamoDB rejects the entire batch--- write operation:+-- processed in parallel or not. Delete operations on nonexistent items+-- consume one write capacity unit. ----- One or more tables specified in the /BatchWriteItem/ request does not exist.+-- If one or more of the following is true, DynamoDB rejects the entire+-- batch write operation: ----- Primary key attributes specified on an item in the request do not match--- those in the corresponding table's primary key schema.+-- - One or more tables specified in the /BatchWriteItem/ request does+-- not exist. ----- You try to perform multiple operations on the same item in the same /BatchWriteItem/ request. For example, you cannot put and delete the same item in the same /BatchWriteItem/ request.+-- - Primary key attributes specified on an item in the request do not+-- match those in the corresponding table\'s primary key schema. ----- There are more than 25 requests in the batch.+-- - You try to perform multiple operations on the same item in the same+-- /BatchWriteItem/ request. For example, you cannot put and delete the+-- same item in the same /BatchWriteItem/ request. ----- Any individual item in a batch exceeds 400 KB.+-- - There are more than 25 requests in the batch. ----- The total request size exceeds 16 MB.+-- - Any individual item in a batch exceeds 400 KB. --+-- - The total request size exceeds 16 MB. -- ----- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html>+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_BatchWriteItem.html AWS API Reference> for BatchWriteItem. module Network.AWS.DynamoDB.BatchWriteItem (- -- * Request- BatchWriteItem- -- ** Request constructor- , batchWriteItem- -- ** Request lenses- , bwiRequestItems+ -- * Creating a Request+ batchWriteItem+ , BatchWriteItem+ -- * Request Lenses , bwiReturnConsumedCapacity , bwiReturnItemCollectionMetrics+ , bwiRequestItems - -- * Response- , BatchWriteItemResponse- -- ** Response constructor+ -- * Destructuring the Response , batchWriteItemResponse- -- ** Response lenses- , bwirConsumedCapacity- , bwirItemCollectionMetrics- , bwirUnprocessedItems+ , BatchWriteItemResponse+ -- * Response Lenses+ , bwirsConsumedCapacity+ , bwirsItemCollectionMetrics+ , bwirsUnprocessedItems+ , bwirsStatus ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts--data BatchWriteItem = BatchWriteItem- { _bwiRequestItems :: Map Text (List1 "RequestItems" WriteRequest)- , _bwiReturnConsumedCapacity :: Maybe ReturnConsumedCapacity- , _bwiReturnItemCollectionMetrics :: Maybe ReturnItemCollectionMetrics- } deriving (Eq, Read, Show)+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response --- | 'BatchWriteItem' constructor.+-- | Represents the input of a /BatchWriteItem/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'batchWriteItem' smart constructor.+data BatchWriteItem = BatchWriteItem'+ { _bwiReturnConsumedCapacity :: !(Maybe ReturnConsumedCapacity)+ , _bwiReturnItemCollectionMetrics :: !(Maybe ReturnItemCollectionMetrics)+ , _bwiRequestItems :: !(Map Text (List1 WriteRequest))+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchWriteItem' with the minimum fields required to make a request. ----- * 'bwiRequestItems' @::@ 'HashMap' 'Text' ('NonEmpty' 'WriteRequest')+-- Use one of the following lenses to modify other fields as desired: ----- * 'bwiReturnConsumedCapacity' @::@ 'Maybe' 'ReturnConsumedCapacity'+-- * 'bwiReturnConsumedCapacity' ----- * 'bwiReturnItemCollectionMetrics' @::@ 'Maybe' 'ReturnItemCollectionMetrics'+-- * 'bwiReturnItemCollectionMetrics' ---batchWriteItem :: BatchWriteItem-batchWriteItem = BatchWriteItem- { _bwiRequestItems = mempty- , _bwiReturnConsumedCapacity = Nothing+-- * 'bwiRequestItems'+batchWriteItem+ :: BatchWriteItem+batchWriteItem =+ BatchWriteItem'+ { _bwiReturnConsumedCapacity = Nothing , _bwiReturnItemCollectionMetrics = Nothing+ , _bwiRequestItems = mempty } --- | A map of one or more table names and, for each table, a list of operations to--- be performed (/DeleteRequest/ or /PutRequest/). Each element in the map consists--- of the following:------ /DeleteRequest/ - Perform a /DeleteItem/ operation on the specified item. The--- item to be deleted is identified by a /Key/ subelement:+-- | Undocumented member.+bwiReturnConsumedCapacity :: Lens' BatchWriteItem (Maybe ReturnConsumedCapacity)+bwiReturnConsumedCapacity = lens _bwiReturnConsumedCapacity (\ s a -> s{_bwiReturnConsumedCapacity = a});++-- | Determines whether item collection metrics are returned. If set to+-- 'SIZE', the response includes statistics about item collections, if any,+-- that were modified during the operation are returned in the response. If+-- set to 'NONE' (the default), no statistics are returned.+bwiReturnItemCollectionMetrics :: Lens' BatchWriteItem (Maybe ReturnItemCollectionMetrics)+bwiReturnItemCollectionMetrics = lens _bwiReturnItemCollectionMetrics (\ s a -> s{_bwiReturnItemCollectionMetrics = a});++-- | A map of one or more table names and, for each table, a list of+-- operations to be performed (/DeleteRequest/ or /PutRequest/). Each+-- element in the map consists of the following: ----- /Key/ - A map of primary key attribute values that uniquely identify the !--- item. Each entry in this map consists of an attribute name and an attribute--- value. For each primary key, you must provide /all/ of the key attributes. For--- example, with a hash type primary key, you only need to provide the hash--- attribute. For a hash-and-range type primary key, you must provide /both/ the--- hash attribute and the range attribute.+-- - /DeleteRequest/ - Perform a /DeleteItem/ operation on the specified+-- item. The item to be deleted is identified by a /Key/ subelement: ----- /PutRequest/ - Perform a /PutItem/ operation on the specified item. The item--- to be put is identified by an /Item/ subelement:+-- - /Key/ - A map of primary key attribute values that uniquely+-- identify the ! item. Each entry in this map consists of an+-- attribute name and an attribute value. For each primary key, you+-- must provide /all/ of the key attributes. For example, with a+-- hash type primary key, you only need to provide the hash+-- attribute. For a hash-and-range type primary key, you must+-- provide /both/ the hash attribute and the range attribute. ----- /Item/ - A map of attributes and their values. Each entry in this map--- consists of an attribute name and an attribute value. Attribute values must--- not be null; string and binary type attributes must have lengths greater than--- zero; and set type attributes must not be empty. Requests that contain empty--- values will be rejected with a /ValidationException/ exception.+-- - /PutRequest/ - Perform a /PutItem/ operation on the specified item.+-- The item to be put is identified by an /Item/ subelement: ----- If you specify any attributes that are part of an index key, then the data--- types for those attributes must match those of the schema in the table's--- attribute definition.+-- - /Item/ - A map of attributes and their values. Each entry in+-- this map consists of an attribute name and an attribute value.+-- Attribute values must not be null; string and binary type+-- attributes must have lengths greater than zero; and set type+-- attributes must not be empty. Requests that contain empty values+-- will be rejected with a /ValidationException/ exception. --+-- If you specify any attributes that are part of an index key,+-- then the data types for those attributes must match those of the+-- schema in the table\'s attribute definition. -- bwiRequestItems :: Lens' BatchWriteItem (HashMap Text (NonEmpty WriteRequest))-bwiRequestItems = lens _bwiRequestItems (\s a -> s { _bwiRequestItems = a }) . _Map+bwiRequestItems = lens _bwiRequestItems (\ s a -> s{_bwiRequestItems = a}) . _Map; -bwiReturnConsumedCapacity :: Lens' BatchWriteItem (Maybe ReturnConsumedCapacity)-bwiReturnConsumedCapacity =- lens _bwiReturnConsumedCapacity- (\s a -> s { _bwiReturnConsumedCapacity = a })+instance AWSRequest BatchWriteItem where+ type Sv BatchWriteItem = DynamoDB+ type Rs BatchWriteItem = BatchWriteItemResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ BatchWriteItemResponse' <$>+ (x .?> "ConsumedCapacity" .!@ mempty) <*>+ (x .?> "ItemCollectionMetrics" .!@ mempty)+ <*> (x .?> "UnprocessedItems" .!@ mempty)+ <*> (pure (fromEnum s))) --- | A value that if set to 'SIZE', the response includes statistics about item--- collections, if any, that were modified during the operation are returned in--- the response. If set to 'NONE' (the default), no statistics are returned.-bwiReturnItemCollectionMetrics :: Lens' BatchWriteItem (Maybe ReturnItemCollectionMetrics)-bwiReturnItemCollectionMetrics =- lens _bwiReturnItemCollectionMetrics- (\s a -> s { _bwiReturnItemCollectionMetrics = a })+instance ToHeaders BatchWriteItem where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.BatchWriteItem" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)]) -data BatchWriteItemResponse = BatchWriteItemResponse- { _bwirConsumedCapacity :: List "ConsumedCapacity" ConsumedCapacity- , _bwirItemCollectionMetrics :: Map Text (List "ItemCollectionMetrics" ItemCollectionMetrics)- , _bwirUnprocessedItems :: Map Text (List1 "UnprocessedItems" WriteRequest)- } deriving (Eq, Read, Show)+instance ToJSON BatchWriteItem where+ toJSON BatchWriteItem'{..}+ = object+ ["ReturnConsumedCapacity" .=+ _bwiReturnConsumedCapacity,+ "ReturnItemCollectionMetrics" .=+ _bwiReturnItemCollectionMetrics,+ "RequestItems" .= _bwiRequestItems] --- | 'BatchWriteItemResponse' constructor.+instance ToPath BatchWriteItem where+ toPath = const "/"++instance ToQuery BatchWriteItem where+ toQuery = const mempty++-- | Represents the output of a /BatchWriteItem/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'batchWriteItemResponse' smart constructor.+data BatchWriteItemResponse = BatchWriteItemResponse'+ { _bwirsConsumedCapacity :: !(Maybe [ConsumedCapacity])+ , _bwirsItemCollectionMetrics :: !(Maybe (Map Text [ItemCollectionMetrics]))+ , _bwirsUnprocessedItems :: !(Maybe (Map Text (List1 WriteRequest)))+ , _bwirsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'BatchWriteItemResponse' with the minimum fields required to make a request. ----- * 'bwirConsumedCapacity' @::@ ['ConsumedCapacity']+-- Use one of the following lenses to modify other fields as desired: ----- * 'bwirItemCollectionMetrics' @::@ 'HashMap' 'Text' ['ItemCollectionMetrics']+-- * 'bwirsConsumedCapacity' ----- * 'bwirUnprocessedItems' @::@ 'HashMap' 'Text' ('NonEmpty' 'WriteRequest')+-- * 'bwirsItemCollectionMetrics' ---batchWriteItemResponse :: BatchWriteItemResponse-batchWriteItemResponse = BatchWriteItemResponse- { _bwirUnprocessedItems = mempty- , _bwirItemCollectionMetrics = mempty- , _bwirConsumedCapacity = mempty+-- * 'bwirsUnprocessedItems'+--+-- * 'bwirsStatus'+batchWriteItemResponse+ :: Int -- ^ 'bwirsStatus'+ -> BatchWriteItemResponse+batchWriteItemResponse pStatus_ =+ BatchWriteItemResponse'+ { _bwirsConsumedCapacity = Nothing+ , _bwirsItemCollectionMetrics = Nothing+ , _bwirsUnprocessedItems = Nothing+ , _bwirsStatus = pStatus_ } -- | The capacity units consumed by the operation. -- -- Each element consists of: ----- /TableName/ - The table that consumed the provisioned throughput.------ /CapacityUnits/ - The total number of capacity units consumed.+-- - /TableName/ - The table that consumed the provisioned throughput. --+-- - /CapacityUnits/ - The total number of capacity units consumed. ---bwirConsumedCapacity :: Lens' BatchWriteItemResponse [ConsumedCapacity]-bwirConsumedCapacity =- lens _bwirConsumedCapacity (\s a -> s { _bwirConsumedCapacity = a })- . _List+bwirsConsumedCapacity :: Lens' BatchWriteItemResponse [ConsumedCapacity]+bwirsConsumedCapacity = lens _bwirsConsumedCapacity (\ s a -> s{_bwirsConsumedCapacity = a}) . _Default . _Coerce; --- | A list of tables that were processed by /BatchWriteItem/ and, for each table,--- information about any item collections that were affected by individual /DeleteItem/ or /PutItem/ operations.+-- | A list of tables that were processed by /BatchWriteItem/ and, for each+-- table, information about any item collections that were affected by+-- individual /DeleteItem/ or /PutItem/ operations. -- -- Each entry consists of the following subelements: ----- /ItemCollectionKey/ - The hash key value of the item collection. This is the--- same as the hash key of the item.------ /SizeEstimateRange/ - An estimate of item collection size, expressed in GB.--- This is a two-element array containing a lower bound and an upper bound for--- the estimate. The estimate includes the size of all the items in the table,--- plus the size of all attributes projected into all of the local secondary--- indexes on the table. Use this estimate to measure whether a local secondary--- index is approaching its size limit.+-- - /ItemCollectionKey/ - The hash key value of the item collection.+-- This is the same as the hash key of the item. ----- The estimate is subject to change over time; therefore, do not rely on the--- precision or accuracy of the estimate.+-- - /SizeEstimateRange/ - An estimate of item collection size, expressed+-- in GB. This is a two-element array containing a lower bound and an+-- upper bound for the estimate. The estimate includes the size of all+-- the items in the table, plus the size of all attributes projected+-- into all of the local secondary indexes on the table. Use this+-- estimate to measure whether a local secondary index is approaching+-- its size limit. --+-- The estimate is subject to change over time; therefore, do not rely+-- on the precision or accuracy of the estimate. ---bwirItemCollectionMetrics :: Lens' BatchWriteItemResponse (HashMap Text [ItemCollectionMetrics])-bwirItemCollectionMetrics =- lens _bwirItemCollectionMetrics- (\s a -> s { _bwirItemCollectionMetrics = a })- . _Map+bwirsItemCollectionMetrics :: Lens' BatchWriteItemResponse (HashMap Text [ItemCollectionMetrics])+bwirsItemCollectionMetrics = lens _bwirsItemCollectionMetrics (\ s a -> s{_bwirsItemCollectionMetrics = a}) . _Default . _Map; --- | A map of tables and requests against those tables that were not processed.--- The /UnprocessedItems/ value is in the same form as /RequestItems/, so you can--- provide this value directly to a subsequent /BatchGetItem/ operation. For more--- information, see /RequestItems/ in the Request Parameters section.+-- | A map of tables and requests against those tables that were not+-- processed. The /UnprocessedItems/ value is in the same form as+-- /RequestItems/, so you can provide this value directly to a subsequent+-- /BatchGetItem/ operation. For more information, see /RequestItems/ in+-- the Request Parameters section. ----- Each /UnprocessedItems/ entry consists of a table name and, for that table, a--- list of operations to perform (/DeleteRequest/ or /PutRequest/).+-- Each /UnprocessedItems/ entry consists of a table name and, for that+-- table, a list of operations to perform (/DeleteRequest/ or+-- /PutRequest/). ----- /DeleteRequest/ - Perform a /DeleteItem/ operation on the specified item. The--- item to be deleted is identified by a /Key/ subelement:+-- - /DeleteRequest/ - Perform a /DeleteItem/ operation on the specified+-- item. The item to be deleted is identified by a /Key/ subelement: ----- /Key/ - A map of primary key attribute values that uniquely identify the--- item. Each entry in this map consists of an attribute name and an attribute--- value.+-- - /Key/ - A map of primary key attribute values that uniquely+-- identify the item. Each entry in this map consists of an+-- attribute name and an attribute value. ----- /PutRequest/ - Perform a /PutItem/ operation on the specified item. The item--- to be put is identified by an /Item/ subelement:+-- - /PutRequest/ - Perform a /PutItem/ operation on the specified item.+-- The item to be put is identified by an /Item/ subelement: ----- /Item/ - A map of attributes and their values. Each entry in this map--- consists of an attribute name and an attribute value. Attribute values must--- not be null; string and binary type attributes must have lengths greater than--- zero; and set type attributes must not be empty. Requests that contain empty--- values will be rejected with a /ValidationException/ exception.+-- - /Item/ - A map of attributes and their values. Each entry in+-- this map consists of an attribute name and an attribute value.+-- Attribute values must not be null; string and binary type+-- attributes must have lengths greater than zero; and set type+-- attributes must not be empty. Requests that contain empty values+-- will be rejected with a /ValidationException/ exception. ----- If you specify any attributes that are part of an index key, then the data--- types for those attributes must match those of the schema in the table's--- attribute definition.+-- If you specify any attributes that are part of an index key,+-- then the data types for those attributes must match those of the+-- schema in the table\'s attribute definition. -- -- If there are no unprocessed items remaining, the response contains an -- empty /UnprocessedItems/ map.-bwirUnprocessedItems :: Lens' BatchWriteItemResponse (HashMap Text (NonEmpty WriteRequest))-bwirUnprocessedItems =- lens _bwirUnprocessedItems (\s a -> s { _bwirUnprocessedItems = a })- . _Map--instance ToPath BatchWriteItem where- toPath = const "/"--instance ToQuery BatchWriteItem where- toQuery = const mempty--instance ToHeaders BatchWriteItem--instance ToJSON BatchWriteItem where- toJSON BatchWriteItem{..} = object- [ "RequestItems" .= _bwiRequestItems- , "ReturnConsumedCapacity" .= _bwiReturnConsumedCapacity- , "ReturnItemCollectionMetrics" .= _bwiReturnItemCollectionMetrics- ]--instance AWSRequest BatchWriteItem where- type Sv BatchWriteItem = DynamoDB- type Rs BatchWriteItem = BatchWriteItemResponse-- request = post "BatchWriteItem"- response = jsonResponse+bwirsUnprocessedItems :: Lens' BatchWriteItemResponse (HashMap Text (NonEmpty WriteRequest))+bwirsUnprocessedItems = lens _bwirsUnprocessedItems (\ s a -> s{_bwirsUnprocessedItems = a}) . _Default . _Map; -instance FromJSON BatchWriteItemResponse where- parseJSON = withObject "BatchWriteItemResponse" $ \o -> BatchWriteItemResponse- <$> o .:? "ConsumedCapacity" .!= mempty- <*> o .:? "ItemCollectionMetrics" .!= mempty- <*> o .:? "UnprocessedItems" .!= mempty+-- | The response status code.+bwirsStatus :: Lens' BatchWriteItemResponse Int+bwirsStatus = lens _bwirsStatus (\ s a -> s{_bwirsStatus = a});
gen/Network/AWS/DynamoDB/CreateTable.hs view
@@ -1,266 +1,329 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}+{-# 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.DynamoDB.CreateTable--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | The /CreateTable/ operation adds a new table to your account. In an AWS--- account, table names must be unique within each region. That is, you can have--- two tables with same name if you create the tables in different regions.+-- The /CreateTable/ operation adds a new table to your account. In an AWS+-- account, table names must be unique within each region. That is, you can+-- have two tables with same name if you create the tables in different+-- regions. ----- /CreateTable/ is an asynchronous operation. Upon receiving a /CreateTable/--- request, DynamoDB immediately returns a response with a /TableStatus/ of 'CREATING'. After the table is created, DynamoDB sets the /TableStatus/ to 'ACTIVE'. You--- can perform read and write operations only on an 'ACTIVE' table.+-- /CreateTable/ is an asynchronous operation. Upon receiving a+-- /CreateTable/ request, DynamoDB immediately returns a response with a+-- /TableStatus/ of 'CREATING'. After the table is created, DynamoDB sets+-- the /TableStatus/ to 'ACTIVE'. You can perform read and write operations+-- only on an 'ACTIVE' table. ----- You can optionally define secondary indexes on the new table, as part of the /CreateTable/ operation. If you want to create multiple tables with secondary--- indexes on them, you must create the tables sequentially. Only one table with--- secondary indexes can be in the 'CREATING' state at any given time.+-- You can optionally define secondary indexes on the new table, as part of+-- the /CreateTable/ operation. If you want to create multiple tables with+-- secondary indexes on them, you must create the tables sequentially. Only+-- one table with secondary indexes can be in the 'CREATING' state at any+-- given time. -- -- You can use the /DescribeTable/ API to check the table status. ----- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html>+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html AWS API Reference> for CreateTable. module Network.AWS.DynamoDB.CreateTable (- -- * Request- CreateTable- -- ** Request constructor- , createTable- -- ** Request lenses- , ctAttributeDefinitions+ -- * Creating a Request+ createTable+ , CreateTable+ -- * Request Lenses , ctGlobalSecondaryIndexes- , ctKeySchema , ctLocalSecondaryIndexes- , ctProvisionedThroughput+ , ctStreamSpecification+ , ctAttributeDefinitions , ctTableName+ , ctKeySchema+ , ctProvisionedThroughput - -- * Response- , CreateTableResponse- -- ** Response constructor+ -- * Destructuring the Response , createTableResponse- -- ** Response lenses- , ctrTableDescription+ , CreateTableResponse+ -- * Response Lenses+ , ctrsTableDescription+ , ctrsStatus ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -data CreateTable = CreateTable- { _ctAttributeDefinitions :: List "AttributeDefinitions" AttributeDefinition- , _ctGlobalSecondaryIndexes :: List "GlobalSecondaryIndexes" GlobalSecondaryIndex- , _ctKeySchema :: List1 "KeySchema" KeySchemaElement- , _ctLocalSecondaryIndexes :: List "LocalSecondaryIndexes" LocalSecondaryIndex- , _ctProvisionedThroughput :: ProvisionedThroughput- , _ctTableName :: Text- } deriving (Eq, Read, Show)+-- | Represents the input of a /CreateTable/ operation.+--+-- /See:/ 'createTable' smart constructor.+data CreateTable = CreateTable'+ { _ctGlobalSecondaryIndexes :: !(Maybe [GlobalSecondaryIndex])+ , _ctLocalSecondaryIndexes :: !(Maybe [LocalSecondaryIndex])+ , _ctStreamSpecification :: !(Maybe StreamSpecification)+ , _ctAttributeDefinitions :: ![AttributeDefinition]+ , _ctTableName :: !Text+ , _ctKeySchema :: !(List1 KeySchemaElement)+ , _ctProvisionedThroughput :: !ProvisionedThroughput+ } deriving (Eq,Read,Show,Data,Typeable,Generic) --- | 'CreateTable' constructor.+-- | Creates a value of 'CreateTable' with the minimum fields required to make a request. ----- The fields accessible through corresponding lenses are:+-- Use one of the following lenses to modify other fields as desired: ----- * 'ctAttributeDefinitions' @::@ ['AttributeDefinition']+-- * 'ctGlobalSecondaryIndexes' ----- * 'ctGlobalSecondaryIndexes' @::@ ['GlobalSecondaryIndex']+-- * 'ctLocalSecondaryIndexes' ----- * 'ctKeySchema' @::@ 'NonEmpty' 'KeySchemaElement'+-- * 'ctStreamSpecification' ----- * 'ctLocalSecondaryIndexes' @::@ ['LocalSecondaryIndex']+-- * 'ctAttributeDefinitions' ----- * 'ctProvisionedThroughput' @::@ 'ProvisionedThroughput'+-- * 'ctTableName' ----- * 'ctTableName' @::@ 'Text'+-- * 'ctKeySchema' ---createTable :: Text -- ^ 'ctTableName'- -> NonEmpty KeySchemaElement -- ^ 'ctKeySchema'- -> ProvisionedThroughput -- ^ 'ctProvisionedThroughput'- -> CreateTable-createTable p1 p2 p3 = CreateTable- { _ctTableName = p1- , _ctKeySchema = withIso _List1 (const id) p2- , _ctProvisionedThroughput = p3- , _ctAttributeDefinitions = mempty- , _ctLocalSecondaryIndexes = mempty- , _ctGlobalSecondaryIndexes = mempty+-- * 'ctProvisionedThroughput'+createTable+ :: Text -- ^ 'ctTableName'+ -> NonEmpty KeySchemaElement -- ^ 'ctKeySchema'+ -> ProvisionedThroughput -- ^ 'ctProvisionedThroughput'+ -> CreateTable+createTable pTableName_ pKeySchema_ pProvisionedThroughput_ =+ CreateTable'+ { _ctGlobalSecondaryIndexes = Nothing+ , _ctLocalSecondaryIndexes = Nothing+ , _ctStreamSpecification = Nothing+ , _ctAttributeDefinitions = mempty+ , _ctTableName = pTableName_+ , _ctKeySchema = _List1 # pKeySchema_+ , _ctProvisionedThroughput = pProvisionedThroughput_ } --- | An array of attributes that describe the key schema for the table and indexes.-ctAttributeDefinitions :: Lens' CreateTable [AttributeDefinition]-ctAttributeDefinitions =- lens _ctAttributeDefinitions (\s a -> s { _ctAttributeDefinitions = a })- . _List---- | One or more global secondary indexes (the maximum is five) to be created on--- the table. Each global secondary index in the array includes the following:------ /IndexName/ - The name of the global secondary index. Must be unique only--- for this table.------+-- | One or more global secondary indexes (the maximum is five) to be created+-- on the table. Each global secondary index in the array includes the+-- following: ----- /KeySchema/ - Specifies the key schema for the global secondary index.+-- - /IndexName/ - The name of the global secondary index. Must be unique+-- only for this table. ----- /Projection/ - Specifies attributes that are copied (projected) from the--- table into the index. These are in addition to the primary key attributes and--- index key attributes, which are automatically projected. Each attribute--- specification is composed of:+-- - /KeySchema/ - Specifies the key schema for the global secondary+-- index. ----- /ProjectionType/ - One of the following:+-- - /Projection/ - Specifies attributes that are copied (projected) from+-- the table into the index. These are in addition to the primary key+-- attributes and index key attributes, which are automatically+-- projected. Each attribute specification is composed of: ----- 'KEYS_ONLY' - Only the index and primary keys are projected into the index.+-- - /ProjectionType/ - One of the following: ----- 'INCLUDE' - Only the specified table attributes are projected into the--- index. The list of projected attributes are in /NonKeyAttributes/.+-- - 'KEYS_ONLY' - Only the index and primary keys are projected+-- into the index. ----- 'ALL' - All of the table attributes are projected into the index.+-- - 'INCLUDE' - Only the specified table attributes are+-- projected into the index. The list of projected attributes+-- are in /NonKeyAttributes/. ----- /NonKeyAttributes/ - A list of one or more non-key attribute names that--- are projected into the secondary index. The total count of attributes--- provided in /NonKeyAttributes/, summed across all of the secondary indexes,--- must not exceed 20. If you project the same attribute into two different--- indexes, this counts as two distinct attributes when determining the total.+-- - 'ALL' - All of the table attributes are projected into the+-- index. ----- /ProvisionedThroughput/ - The provisioned throughput settings for the--- global secondary index, consisting of read and write capacity units.+-- - /NonKeyAttributes/ - A list of one or more non-key attribute+-- names that are projected into the secondary index. The total+-- count of attributes provided in /NonKeyAttributes/, summed+-- across all of the secondary indexes, must not exceed 20. If you+-- project the same attribute into two different indexes, this+-- counts as two distinct attributes when determining the total. --+-- - /ProvisionedThroughput/ - The provisioned throughput settings for+-- the global secondary index, consisting of read and write capacity+-- units. -- ctGlobalSecondaryIndexes :: Lens' CreateTable [GlobalSecondaryIndex]-ctGlobalSecondaryIndexes =- lens _ctGlobalSecondaryIndexes- (\s a -> s { _ctGlobalSecondaryIndexes = a })- . _List+ctGlobalSecondaryIndexes = lens _ctGlobalSecondaryIndexes (\ s a -> s{_ctGlobalSecondaryIndexes = a}) . _Default . _Coerce; --- | Specifies the attributes that make up the primary key for a table or an--- index. The attributes in /KeySchema/ must also be defined in the /AttributeDefinitions/ array. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html Data Model> in the /Amazon DynamoDB DeveloperGuide/.------ Each /KeySchemaElement/ in the array is composed of:------ /AttributeName/ - The name of this key attribute.+-- | One or more local secondary indexes (the maximum is five) to be created+-- on the table. Each index is scoped to a given hash key value. There is a+-- 10 GB size limit per hash key; otherwise, the size of a local secondary+-- index is unconstrained. ----- /KeyType/ - Determines whether the key attribute is 'HASH' or 'RANGE'.+-- Each local secondary index in the array includes the following: ----- For a primary key that consists of a hash attribute, you must provide--- exactly one element with a /KeyType/ of 'HASH'.+-- - /IndexName/ - The name of the local secondary index. Must be unique+-- only for this table. ----- For a primary key that consists of hash and range attributes, you must--- provide exactly two elements, in this order: The first element must have a /KeyType/ of 'HASH', and the second element must have a /KeyType/ of 'RANGE'.+-- - /KeySchema/ - Specifies the key schema for the local secondary+-- index. The key schema must begin with the same hash key attribute as+-- the table. ----- For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key Specifying the Primary Key> in the /Amazon DynamoDBDeveloper Guide/.-ctKeySchema :: Lens' CreateTable (NonEmpty KeySchemaElement)-ctKeySchema = lens _ctKeySchema (\s a -> s { _ctKeySchema = a }) . _List1---- | One or more local secondary indexes (the maximum is five) to be created on--- the table. Each index is scoped to a given hash key value. There is a 10 GB--- size limit per hash key; otherwise, the size of a local secondary index is--- unconstrained.+-- - /Projection/ - Specifies attributes that are copied (projected) from+-- the table into the index. These are in addition to the primary key+-- attributes and index key attributes, which are automatically+-- projected. Each attribute specification is composed of: ----- Each local secondary index in the array includes the following:+-- - /ProjectionType/ - One of the following: ----- /IndexName/ - The name of the local secondary index. Must be unique only for--- this table.+-- - 'KEYS_ONLY' - Only the index and primary keys are projected+-- into the index. --+-- - 'INCLUDE' - Only the specified table attributes are+-- projected into the index. The list of projected attributes+-- are in /NonKeyAttributes/. --+-- - 'ALL' - All of the table attributes are projected into the+-- index. ----- /KeySchema/ - Specifies the key schema for the local secondary index. The--- key schema must begin with the same hash key attribute as the table.+-- - /NonKeyAttributes/ - A list of one or more non-key attribute+-- names that are projected into the secondary index. The total+-- count of attributes provided in /NonKeyAttributes/, summed+-- across all of the secondary indexes, must not exceed 20. If you+-- project the same attribute into two different indexes, this+-- counts as two distinct attributes when determining the total. ----- /Projection/ - Specifies attributes that are copied (projected) from the--- table into the index. These are in addition to the primary key attributes and--- index key attributes, which are automatically projected. Each attribute--- specification is composed of:+ctLocalSecondaryIndexes :: Lens' CreateTable [LocalSecondaryIndex]+ctLocalSecondaryIndexes = lens _ctLocalSecondaryIndexes (\ s a -> s{_ctLocalSecondaryIndexes = a}) . _Default . _Coerce;++-- | The settings for DynamoDB Streams on the table. These settings consist+-- of: ----- /ProjectionType/ - One of the following:+-- - /StreamEnabled/ - Indicates whether Streams is to be enabled (true)+-- or disabled (false). ----- 'KEYS_ONLY' - Only the index and primary keys are projected into the index.+-- - /StreamViewType/ - When an item in the table is modified,+-- /StreamViewType/ determines what information is written to the+-- table\'s stream. Valid values for /StreamViewType/ are: ----- 'INCLUDE' - Only the specified table attributes are projected into the--- index. The list of projected attributes are in /NonKeyAttributes/.+-- - /KEYS_ONLY/ - Only the key attributes of the modified item are+-- written to the stream. ----- 'ALL' - All of the table attributes are projected into the index.+-- - /NEW_IMAGE/ - The entire item, as it appears after it was+-- modified, is written to the stream. ----- /NonKeyAttributes/ - A list of one or more non-key attribute names that--- are projected into the secondary index. The total count of attributes--- provided in /NonKeyAttributes/, summed across all of the secondary indexes,--- must not exceed 20. If you project the same attribute into two different--- indexes, this counts as two distinct attributes when determining the total.+-- - /OLD_IMAGE/ - The entire item, as it appeared before it was+-- modified, is written to the stream. --+-- - /NEW_AND_OLD_IMAGES/ - Both the new and the old item images of+-- the item are written to the stream. ---ctLocalSecondaryIndexes :: Lens' CreateTable [LocalSecondaryIndex]-ctLocalSecondaryIndexes =- lens _ctLocalSecondaryIndexes (\s a -> s { _ctLocalSecondaryIndexes = a })- . _List+ctStreamSpecification :: Lens' CreateTable (Maybe StreamSpecification)+ctStreamSpecification = lens _ctStreamSpecification (\ s a -> s{_ctStreamSpecification = a}); -ctProvisionedThroughput :: Lens' CreateTable ProvisionedThroughput-ctProvisionedThroughput =- lens _ctProvisionedThroughput (\s a -> s { _ctProvisionedThroughput = a })+-- | An array of attributes that describe the key schema for the table and+-- indexes.+ctAttributeDefinitions :: Lens' CreateTable [AttributeDefinition]+ctAttributeDefinitions = lens _ctAttributeDefinitions (\ s a -> s{_ctAttributeDefinitions = a}) . _Coerce; -- | The name of the table to create. ctTableName :: Lens' CreateTable Text-ctTableName = lens _ctTableName (\s a -> s { _ctTableName = a })--newtype CreateTableResponse = CreateTableResponse- { _ctrTableDescription :: Maybe TableDescription- } deriving (Eq, Read, Show)+ctTableName = lens _ctTableName (\ s a -> s{_ctTableName = a}); --- | 'CreateTableResponse' constructor.+-- | Specifies the attributes that make up the primary key for a table or an+-- index. The attributes in /KeySchema/ must also be defined in the+-- /AttributeDefinitions/ array. For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html Data Model>+-- in the /Amazon DynamoDB Developer Guide/. ----- The fields accessible through corresponding lenses are:+-- Each /KeySchemaElement/ in the array is composed of: ----- * 'ctrTableDescription' @::@ 'Maybe' 'TableDescription'+-- - /AttributeName/ - The name of this key attribute. ---createTableResponse :: CreateTableResponse-createTableResponse = CreateTableResponse- { _ctrTableDescription = Nothing- }+-- - /KeyType/ - Determines whether the key attribute is 'HASH' or+-- 'RANGE'.+--+-- For a primary key that consists of a hash attribute, you must provide+-- exactly one element with a /KeyType/ of 'HASH'.+--+-- For a primary key that consists of hash and range attributes, you must+-- provide exactly two elements, in this order: The first element must have+-- a /KeyType/ of 'HASH', and the second element must have a /KeyType/ of+-- 'RANGE'.+--+-- For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key Specifying the Primary Key>+-- in the /Amazon DynamoDB Developer Guide/.+ctKeySchema :: Lens' CreateTable (NonEmpty KeySchemaElement)+ctKeySchema = lens _ctKeySchema (\ s a -> s{_ctKeySchema = a}) . _List1; -ctrTableDescription :: Lens' CreateTableResponse (Maybe TableDescription)-ctrTableDescription =- lens _ctrTableDescription (\s a -> s { _ctrTableDescription = a })+-- | Undocumented member.+ctProvisionedThroughput :: Lens' CreateTable ProvisionedThroughput+ctProvisionedThroughput = lens _ctProvisionedThroughput (\ s a -> s{_ctProvisionedThroughput = a}); +instance AWSRequest CreateTable where+ type Sv CreateTable = DynamoDB+ type Rs CreateTable = CreateTableResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ CreateTableResponse' <$>+ (x .?> "TableDescription") <*> (pure (fromEnum s)))++instance ToHeaders CreateTable where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.CreateTable" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)])++instance ToJSON CreateTable where+ toJSON CreateTable'{..}+ = object+ ["GlobalSecondaryIndexes" .=+ _ctGlobalSecondaryIndexes,+ "LocalSecondaryIndexes" .= _ctLocalSecondaryIndexes,+ "StreamSpecification" .= _ctStreamSpecification,+ "AttributeDefinitions" .= _ctAttributeDefinitions,+ "TableName" .= _ctTableName,+ "KeySchema" .= _ctKeySchema,+ "ProvisionedThroughput" .= _ctProvisionedThroughput]+ instance ToPath CreateTable where- toPath = const "/"+ toPath = const "/" instance ToQuery CreateTable where- toQuery = const mempty--instance ToHeaders CreateTable+ toQuery = const mempty -instance ToJSON CreateTable where- toJSON CreateTable{..} = object- [ "AttributeDefinitions" .= _ctAttributeDefinitions- , "TableName" .= _ctTableName- , "KeySchema" .= _ctKeySchema- , "LocalSecondaryIndexes" .= _ctLocalSecondaryIndexes- , "GlobalSecondaryIndexes" .= _ctGlobalSecondaryIndexes- , "ProvisionedThroughput" .= _ctProvisionedThroughput- ]+-- | Represents the output of a /CreateTable/ operation.+--+-- /See:/ 'createTableResponse' smart constructor.+data CreateTableResponse = CreateTableResponse'+ { _ctrsTableDescription :: !(Maybe TableDescription)+ , _ctrsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest CreateTable where- type Sv CreateTable = DynamoDB- type Rs CreateTable = CreateTableResponse+-- | Creates a value of 'CreateTableResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ctrsTableDescription'+--+-- * 'ctrsStatus'+createTableResponse+ :: Int -- ^ 'ctrsStatus'+ -> CreateTableResponse+createTableResponse pStatus_ =+ CreateTableResponse'+ { _ctrsTableDescription = Nothing+ , _ctrsStatus = pStatus_+ } - request = post "CreateTable"- response = jsonResponse+-- | Undocumented member.+ctrsTableDescription :: Lens' CreateTableResponse (Maybe TableDescription)+ctrsTableDescription = lens _ctrsTableDescription (\ s a -> s{_ctrsTableDescription = a}); -instance FromJSON CreateTableResponse where- parseJSON = withObject "CreateTableResponse" $ \o -> CreateTableResponse- <$> o .:? "TableDescription"+-- | The response status code.+ctrsStatus :: Lens' CreateTableResponse Int+ctrsStatus = lens _ctrsStatus (\ s a -> s{_ctrsStatus = a});
gen/Network/AWS/DynamoDB/DeleteItem.hs view
@@ -1,555 +1,611 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}+{-# 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.DynamoDB.DeleteItem--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Deletes a single item in a table by primary key. You can perform a--- conditional delete operation that deletes the item if it exists, or if it has--- an expected attribute value.+-- Deletes a single item in a table by primary key. You can perform a+-- conditional delete operation that deletes the item if it exists, or if+-- it has an expected attribute value. ----- In addition to deleting an item, you can also return the item's attribute--- values in the same operation, using the /ReturnValues/ parameter.+-- In addition to deleting an item, you can also return the item\'s+-- attribute values in the same operation, using the /ReturnValues/+-- parameter. ----- Unless you specify conditions, the /DeleteItem/ is an idempotent operation;--- running it multiple times on the same item or attribute does /not/ result in an--- error response.+-- Unless you specify conditions, the /DeleteItem/ is an idempotent+-- operation; running it multiple times on the same item or attribute does+-- /not/ result in an error response. -- -- Conditional deletes are useful for deleting items only if specific -- conditions are met. If those conditions are met, DynamoDB performs the -- delete. Otherwise, the item is not deleted. ----- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html>+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html AWS API Reference> for DeleteItem. module Network.AWS.DynamoDB.DeleteItem (- -- * Request- DeleteItem- -- ** Request constructor- , deleteItem- -- ** Request lenses- , diConditionExpression- , diConditionalOperator- , diExpected+ -- * Creating a Request+ deleteItem+ , DeleteItem+ -- * Request Lenses+ , diReturnValues , diExpressionAttributeNames- , diExpressionAttributeValues- , diKey , diReturnConsumedCapacity+ , diExpressionAttributeValues , diReturnItemCollectionMetrics- , diReturnValues+ , diConditionExpression+ , diConditionalOperator+ , diExpected , diTableName+ , diKey - -- * Response- , DeleteItemResponse- -- ** Response constructor+ -- * Destructuring the Response , deleteItemResponse- -- ** Response lenses- , dirAttributes- , dirConsumedCapacity- , dirItemCollectionMetrics+ , DeleteItemResponse+ -- * Response Lenses+ , dirsConsumedCapacity+ , dirsItemCollectionMetrics+ , dirsAttributes+ , dirsStatus ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts--data DeleteItem = DeleteItem- { _diConditionExpression :: Maybe Text- , _diConditionalOperator :: Maybe ConditionalOperator- , _diExpected :: Map Text ExpectedAttributeValue- , _diExpressionAttributeNames :: Map Text Text- , _diExpressionAttributeValues :: Map Text AttributeValue- , _diKey :: Map Text AttributeValue- , _diReturnConsumedCapacity :: Maybe ReturnConsumedCapacity- , _diReturnItemCollectionMetrics :: Maybe ReturnItemCollectionMetrics- , _diReturnValues :: Maybe ReturnValue- , _diTableName :: Text- } deriving (Eq, Read, Show)+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response --- | 'DeleteItem' constructor.+-- | Represents the input of a /DeleteItem/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'deleteItem' smart constructor.+data DeleteItem = DeleteItem'+ { _diReturnValues :: !(Maybe ReturnValue)+ , _diExpressionAttributeNames :: !(Maybe (Map Text Text))+ , _diReturnConsumedCapacity :: !(Maybe ReturnConsumedCapacity)+ , _diExpressionAttributeValues :: !(Maybe (Map Text AttributeValue))+ , _diReturnItemCollectionMetrics :: !(Maybe ReturnItemCollectionMetrics)+ , _diConditionExpression :: !(Maybe Text)+ , _diConditionalOperator :: !(Maybe ConditionalOperator)+ , _diExpected :: !(Maybe (Map Text ExpectedAttributeValue))+ , _diTableName :: !Text+ , _diKey :: !(Map Text AttributeValue)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteItem' with the minimum fields required to make a request. ----- * 'diConditionExpression' @::@ 'Maybe' 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'diConditionalOperator' @::@ 'Maybe' 'ConditionalOperator'+-- * 'diReturnValues' ----- * 'diExpected' @::@ 'HashMap' 'Text' 'ExpectedAttributeValue'+-- * 'diExpressionAttributeNames' ----- * 'diExpressionAttributeNames' @::@ 'HashMap' 'Text' 'Text'+-- * 'diReturnConsumedCapacity' ----- * 'diExpressionAttributeValues' @::@ 'HashMap' 'Text' 'AttributeValue'+-- * 'diExpressionAttributeValues' ----- * 'diKey' @::@ 'HashMap' 'Text' 'AttributeValue'+-- * 'diReturnItemCollectionMetrics' ----- * 'diReturnConsumedCapacity' @::@ 'Maybe' 'ReturnConsumedCapacity'+-- * 'diConditionExpression' ----- * 'diReturnItemCollectionMetrics' @::@ 'Maybe' 'ReturnItemCollectionMetrics'+-- * 'diConditionalOperator' ----- * 'diReturnValues' @::@ 'Maybe' 'ReturnValue'+-- * 'diExpected' ----- * 'diTableName' @::@ 'Text'+-- * 'diTableName' ---deleteItem :: Text -- ^ 'diTableName'- -> DeleteItem-deleteItem p1 = DeleteItem- { _diTableName = p1- , _diKey = mempty- , _diExpected = mempty- , _diConditionalOperator = Nothing- , _diReturnValues = Nothing- , _diReturnConsumedCapacity = Nothing+-- * 'diKey'+deleteItem+ :: Text -- ^ 'diTableName'+ -> DeleteItem+deleteItem pTableName_ =+ DeleteItem'+ { _diReturnValues = Nothing+ , _diExpressionAttributeNames = Nothing+ , _diReturnConsumedCapacity = Nothing+ , _diExpressionAttributeValues = Nothing , _diReturnItemCollectionMetrics = Nothing- , _diConditionExpression = Nothing- , _diExpressionAttributeNames = mempty- , _diExpressionAttributeValues = mempty+ , _diConditionExpression = Nothing+ , _diConditionalOperator = Nothing+ , _diExpected = Nothing+ , _diTableName = pTableName_+ , _diKey = mempty } --- | A condition that must be satisfied in order for a conditional /DeleteItem/ to--- succeed.------ An expression can contain any of the following:------ Boolean functions: 'attribute_exists | attribute_not_exists | contains |begins_with'------ These function names are case-sensitive.------ Comparison operators: ' = | <> | < | > | <= | >= | BETWEEN | IN'------ Logical operators: 'AND | OR | NOT'+-- | Use /ReturnValues/ if you want to get the item attributes as they+-- appeared before they were deleted. For /DeleteItem/, the valid values+-- are: ----- For more information on condition expressions, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions>--- in the /Amazon DynamoDB Developer Guide/.+-- - 'NONE' - If /ReturnValues/ is not specified, or if its value is+-- 'NONE', then nothing is returned. (This setting is the default for+-- /ReturnValues/.) ----- /ConditionExpression/ replaces the legacy /ConditionalOperator/ and /Expected/--- parameters.+-- - 'ALL_OLD' - The content of the old item is returned. ---diConditionExpression :: Lens' DeleteItem (Maybe Text)-diConditionExpression =- lens _diConditionExpression (\s a -> s { _diConditionExpression = a })+diReturnValues :: Lens' DeleteItem (Maybe ReturnValue)+diReturnValues = lens _diReturnValues (\ s a -> s{_diReturnValues = a}); --- | This is a legacy parameter, for backward compatibility. New applications--- should use /ConditionExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.------ A logical operator to apply to the conditions in the /Expected/ map:------ 'AND' - If all of the conditions evaluate to true, then the entire map--- evaluates to true.+-- | One or more substitution tokens for attribute names in an expression.+-- The following are some use cases for using /ExpressionAttributeNames/: ----- 'OR' - If at least one of the conditions evaluate to true, then the entire map--- evaluates to true.+-- - To access an attribute whose name conflicts with a DynamoDB reserved+-- word. ----- If you omit /ConditionalOperator/, then 'AND' is the default.+-- - To create a placeholder for repeating occurrences of an attribute+-- name in an expression. ----- The operation will succeed only if the entire map evaluates to true.+-- - To prevent special characters in an attribute name from being+-- misinterpreted in an expression. ----- This parameter does not support attributes of type List or Map.+-- Use the __#__ character in an expression to dereference an attribute+-- name. For example, consider the following attribute name: ---diConditionalOperator :: Lens' DeleteItem (Maybe ConditionalOperator)-diConditionalOperator =- lens _diConditionalOperator (\s a -> s { _diConditionalOperator = a })---- | This is a legacy parameter, for backward compatibility. New applications--- should use /ConditionExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.+-- - 'Percentile' ----- A map of attribute/condition pairs. /Expected/ provides a conditional block--- for the /DeleteItem/ operation.+-- The name of this attribute conflicts with a reserved word, so it cannot+-- be used directly in an expression. (For the complete list of reserved+-- words, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words>+-- in the /Amazon DynamoDB Developer Guide/). To work around this, you+-- could specify the following for /ExpressionAttributeNames/: ----- Each element of /Expected/ consists of an attribute name, a comparison--- operator, and one or more values. DynamoDB compares the attribute with the--- value(s) you supplied, using the comparison operator. For each /Expected/--- element, the result of the evaluation is either true or false.+-- - '{\"#P\":\"Percentile\"}' ----- If you specify more than one element in the /Expected/ map, then by default--- all of the conditions must evaluate to true. In other words, the conditions--- are ANDed together. (You can use the /ConditionalOperator/ parameter to OR the--- conditions instead. If you do this, then at least one of the conditions must--- evaluate to true, rather than all of them.)+-- You could then use this substitution in an expression, as in this+-- example: ----- If the /Expected/ map evaluates to true, then the conditional operation--- succeeds; otherwise, it fails.+-- - '#P = :val' ----- /Expected/ contains the following:+-- Tokens that begin with the __:__ character are /expression attribute+-- values/, which are placeholders for the actual value at runtime. ----- /AttributeValueList/ - One or more values to evaluate against the supplied--- attribute. The number of values in the list depends on the /ComparisonOperator/--- being used.+-- For more information on expression attribute names, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/.+diExpressionAttributeNames :: Lens' DeleteItem (HashMap Text Text)+diExpressionAttributeNames = lens _diExpressionAttributeNames (\ s a -> s{_diExpressionAttributeNames = a}) . _Default . _Map;++-- | Undocumented member.+diReturnConsumedCapacity :: Lens' DeleteItem (Maybe ReturnConsumedCapacity)+diReturnConsumedCapacity = lens _diReturnConsumedCapacity (\ s a -> s{_diReturnConsumedCapacity = a});++-- | One or more values that can be substituted in an expression. ----- For type Number, value comparisons are numeric.+-- Use the __:__ (colon) character in an expression to dereference an+-- attribute value. For example, suppose that you wanted to check whether+-- the value of the /ProductStatus/ attribute was one of the following: ----- String value comparisons for greater than, equals, or less than are based on--- ASCII character code values. For example, 'a' is greater than 'A', and 'a' is--- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.+-- 'Available | Backordered | Discontinued' ----- For type Binary, DynamoDB treats each byte of the binary data as unsigned--- when it compares binary values.+-- You would first need to specify /ExpressionAttributeValues/ as follows: ----- /ComparisonOperator/ - A comparator for evaluating attributes in the /AttributeValueList/. When performing the comparison, DynamoDB uses strongly consistent reads.+-- '{ \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"} }' ----- The following comparison operators are available:+-- You could then use these values in an expression, such as this: ----- 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |BEGINS_WITH | IN | BETWEEN'+-- 'ProductStatus IN (:avail, :back, :disc)' ----- The following are descriptions of each comparison operator.+-- For more information on expression attribute values, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions>+-- in the /Amazon DynamoDB Developer Guide/.+diExpressionAttributeValues :: Lens' DeleteItem (HashMap Text AttributeValue)+diExpressionAttributeValues = lens _diExpressionAttributeValues (\ s a -> s{_diExpressionAttributeValues = a}) . _Default . _Map;++-- | Determines whether item collection metrics are returned. If set to+-- 'SIZE', the response includes statistics about item collections, if any,+-- that were modified during the operation are returned in the response. If+-- set to 'NONE' (the default), no statistics are returned.+diReturnItemCollectionMetrics :: Lens' DeleteItem (Maybe ReturnItemCollectionMetrics)+diReturnItemCollectionMetrics = lens _diReturnItemCollectionMetrics (\ s a -> s{_diReturnItemCollectionMetrics = a});++-- | A condition that must be satisfied in order for a conditional+-- /DeleteItem/ to succeed. ----- 'EQ' : Equal. 'EQ' is supported for all datatypes, including lists and maps.+-- An expression can contain any of the following: ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, Binary, String Set, Number Set, or Binary Set. If an item--- contains an /AttributeValue/ element of a different type than the one provided--- in the request, the value does not match. For example, '{"S":"6"}' does not--- equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.+-- - Functions:+-- 'attribute_exists | attribute_not_exists | attribute_type | contains | begins_with | size' --+-- These function names are case-sensitive. --+-- - Comparison operators: ' = | \<> | \< | > | \<= | >= | BETWEEN | IN' ----- 'NE' : Not equal. 'NE' is supported for all datatypes, including lists and--- maps.+-- - Logical operators: 'AND | OR | NOT' ----- /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one provided in the request, the--- value does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.+-- For more information on condition expressions, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions>+-- in the /Amazon DynamoDB Developer Guide/. --+-- /ConditionExpression/ replaces the legacy /ConditionalOperator/ and+-- /Expected/ parameters.+diConditionExpression :: Lens' DeleteItem (Maybe Text)+diConditionExpression = lens _diConditionExpression (\ s a -> s{_diConditionExpression = a});++-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /ConditionExpression/ instead. Do not combine legacy+-- parameters and expression parameters in a single API call; otherwise,+-- DynamoDB will return a /ValidationException/ exception. --+-- A logical operator to apply to the conditions in the /Expected/ map: ----- 'LE' : Less than or equal.+-- - 'AND' - If all of the conditions evaluate to true, then the entire+-- map evaluates to true. ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.+-- - 'OR' - If at least one of the conditions evaluate to true, then the+-- entire map evaluates to true. --+-- If you omit /ConditionalOperator/, then 'AND' is the default. --+-- The operation will succeed only if the entire map evaluates to true. ----- 'LT' : Less than.+-- This parameter does not support attributes of type List or Map.+diConditionalOperator :: Lens' DeleteItem (Maybe ConditionalOperator)+diConditionalOperator = lens _diConditionalOperator (\ s a -> s{_diConditionalOperator = a});++-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /ConditionExpression/ instead. Do not combine legacy+-- parameters and expression parameters in a single API call; otherwise,+-- DynamoDB will return a /ValidationException/ exception. ----- /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, or Binary (not a set type). If an item contains an /AttributeValue/--- element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.+-- A map of attribute\/condition pairs. /Expected/ provides a conditional+-- block for the /DeleteItem/ operation. --+-- Each element of /Expected/ consists of an attribute name, a comparison+-- operator, and one or more values. DynamoDB compares the attribute with+-- the value(s) you supplied, using the comparison operator. For each+-- /Expected/ element, the result of the evaluation is either true or+-- false. --+-- If you specify more than one element in the /Expected/ map, then by+-- default all of the conditions must evaluate to true. In other words, the+-- conditions are ANDed together. (You can use the /ConditionalOperator/+-- parameter to OR the conditions instead. If you do this, then at least+-- one of the conditions must evaluate to true, rather than all of them.) ----- 'GE' : Greater than or equal.+-- If the /Expected/ map evaluates to true, then the conditional operation+-- succeeds; otherwise, it fails. ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.+-- /Expected/ contains the following: --+-- - /AttributeValueList/ - One or more values to evaluate against the+-- supplied attribute. The number of values in the list depends on the+-- /ComparisonOperator/ being used. --+-- For type Number, value comparisons are numeric. ----- 'GT' : Greater than.+-- String value comparisons for greater than, equals, or less than are+-- based on ASCII character code values. For example, 'a' is greater+-- than 'A', and 'a' is greater than 'B'. For a list of code values,+-- see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>. ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.+-- For type Binary, DynamoDB treats each byte of the binary data as+-- unsigned when it compares binary values. --+-- - /ComparisonOperator/ - A comparator for evaluating attributes in the+-- /AttributeValueList/. When performing the comparison, DynamoDB uses+-- strongly consistent reads. --+-- The following comparison operators are available: ----- 'NOT_NULL' : The attribute exists. 'NOT_NULL' is supported for all datatypes,--- including lists and maps.+-- 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN' ----- This operator tests for the existence of an attribute, not its data type. If--- the data type of attribute "'a'" is null, and you evaluate it using 'NOT_NULL',--- the result is a Boolean /true/. This result is because the attribute "'a'"--- exists; its data type is not relevant to the 'NOT_NULL' comparison operator.+-- The following are descriptions of each comparison operator. ----- 'NULL' : The attribute does not exist. 'NULL' is supported for all datatypes,--- including lists and maps.+-- - 'EQ' : Equal. 'EQ' is supported for all datatypes, including+-- lists and maps. ----- This operator tests for the nonexistence of an attribute, not its data type.--- If the data type of attribute "'a'" is null, and you evaluate it using 'NULL',--- the result is a Boolean /false/. This is because the attribute "'a'" exists; its--- data type is not relevant to the 'NULL' comparison operator.+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, Binary, String Set, Number Set,+-- or Binary Set. If an item contains an /AttributeValue/ element+-- of a different type than the one provided in the request, the+-- value does not match. For example, '{\"S\":\"6\"}' does not+-- equal '{\"N\":\"6\"}'. Also, '{\"N\":\"6\"}' does not equal+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. ----- 'CONTAINS' : Checks for a subsequence, or value in a set.+-- - 'NE' : Not equal. 'NE' is supported for all datatypes, including+-- lists and maps. ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If the target attribute of the--- comparison is of type String, then the operator checks for a substring match.--- If the target attribute of the comparison is of type Binary, then the--- operator looks for a subsequence of the target that matches the input. If the--- target attribute of the comparison is a set ("'SS'", "'NS'", or "'BS'"), then the--- operator evaluates to true if it finds an exact match with any member of the--- set.+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String, Number, Binary, String Set, Number Set, or Binary+-- Set. If an item contains an /AttributeValue/ of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not equal+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. ----- CONTAINS is supported for lists: When evaluating "'a CONTAINS b'", "'a'" can be--- a list; however, "'b'" cannot be a set, a map, or a list.+-- - 'LE' : Less than or equal. ----- 'NOT_CONTAINS' : Checks for absence of a subsequence, or absence of a value--- in a set.+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If the target attribute of the--- comparison is a String, then the operator checks for the absence of a--- substring match. If the target attribute of the comparison is Binary, then--- the operator checks for the absence of a subsequence of the target that--- matches the input. If the target attribute of the comparison is a set ("'SS'", "'NS'", or "'BS'"), then the operator evaluates to true if it /does not/ find an--- exact match with any member of the set.+-- - 'LT' : Less than. ----- NOT_CONTAINS is supported for lists: When evaluating "'a NOT CONTAINS b'", "'a'"--- can be a list; however, "'b'" cannot be a set, a map, or a list.+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String, Number, or Binary (not a set type). If an item+-- contains an /AttributeValue/ element of a different type than+-- the one provided in the request, the value does not match. For+-- example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. ----- 'BEGINS_WITH' : Checks for a prefix.+-- - 'GE' : Greater than or equal. ----- /AttributeValueList/ can contain only one /AttributeValue/ of type String or--- Binary (not a Number or a set type). The target attribute of the comparison--- must be of type String or Binary (not a Number or a set type).+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. --+-- - 'GT' : Greater than. --+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. ----- 'IN' : Checks for matching elements within two sets.+-- - 'NOT_NULL' : The attribute exists. 'NOT_NULL' is supported for+-- all datatypes, including lists and maps. ----- /AttributeValueList/ can contain one or more /AttributeValue/ elements of type--- String, Number, or Binary (not a set type). These attributes are compared--- against an existing set type attribute of an item. If any elements of the--- input set are present in the item attribute, the expression evaluates to true.+-- This operator tests for the existence of an attribute, not its+-- data type. If the data type of attribute \"'a'\" is null, and+-- you evaluate it using 'NOT_NULL', the result is a Boolean+-- /true/. This result is because the attribute \"'a'\" exists; its+-- data type is not relevant to the 'NOT_NULL' comparison operator. ----- 'BETWEEN' : Greater than or equal to the first value, and less than or equal--- to the second value.+-- - 'NULL' : The attribute does not exist. 'NULL' is supported for+-- all datatypes, including lists and maps. ----- /AttributeValueList/ must contain two /AttributeValue/ elements of the same--- type, either String, Number, or Binary (not a set type). A target attribute--- matches if the target value is greater than, or equal to, the first element--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'+-- This operator tests for the nonexistence of an attribute, not+-- its data type. If the data type of attribute \"'a'\" is null,+-- and you evaluate it using 'NULL', the result is a Boolean+-- /false/. This is because the attribute \"'a'\" exists; its data+-- type is not relevant to the 'NULL' comparison operator. ----- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters> in the /Amazon DynamoDB Developer Guide/.+-- - 'CONTAINS' : Checks for a subsequence, or value in a set. ----- For backward compatibility with previous DynamoDB releases, the following--- parameters can be used instead of /AttributeValueList/ and /ComparisonOperator/:+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- the target attribute of the comparison is of type String, then+-- the operator checks for a substring match. If the target+-- attribute of the comparison is of type Binary, then the operator+-- looks for a subsequence of the target that matches the input. If+-- the target attribute of the comparison is a set (\"'SS'\",+-- \"'NS'\", or \"'BS'\"), then the operator evaluates to true if+-- it finds an exact match with any member of the set. ----- /Value/ - A value for DynamoDB to compare with an attribute.+-- CONTAINS is supported for lists: When evaluating+-- \"'a CONTAINS b'\", \"'a'\" can be a list; however, \"'b'\"+-- cannot be a set, a map, or a list. ----- /Exists/ - A Boolean value that causes DynamoDB to evaluate the value before--- attempting the conditional operation:+-- - 'NOT_CONTAINS' : Checks for absence of a subsequence, or absence+-- of a value in a set. ----- If /Exists/ is 'true', DynamoDB will check to see if that attribute value--- already exists in the table. If it is found, then the condition evaluates to--- true; otherwise the condition evaluate to false.+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- the target attribute of the comparison is a String, then the+-- operator checks for the absence of a substring match. If the+-- target attribute of the comparison is Binary, then the operator+-- checks for the absence of a subsequence of the target that+-- matches the input. If the target attribute of the comparison is+-- a set (\"'SS'\", \"'NS'\", or \"'BS'\"), then the operator+-- evaluates to true if it /does not/ find an exact match with any+-- member of the set. ----- If /Exists/ is 'false', DynamoDB assumes that the attribute value does /not/--- exist in the table. If in fact the value does not exist, then the assumption--- is valid and the condition evaluates to true. If the value is found, despite--- the assumption that it does not exist, the condition evaluates to false.+-- NOT_CONTAINS is supported for lists: When evaluating+-- \"'a NOT CONTAINS b'\", \"'a'\" can be a list; however, \"'b'\"+-- cannot be a set, a map, or a list. ----- Note that the default value for /Exists/ is 'true'.+-- - 'BEGINS_WITH' : Checks for a prefix. ----- The /Value/ and /Exists/ parameters are incompatible with /AttributeValueList/--- and /ComparisonOperator/. Note that if you use both sets of parameters at once,--- DynamoDB will return a /ValidationException/ exception.+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String or Binary (not a Number or a set type). The target+-- attribute of the comparison must be of type String or Binary+-- (not a Number or a set type). ----- This parameter does not support attributes of type List or Map.+-- - 'IN' : Checks for matching elements within two sets. ---diExpected :: Lens' DeleteItem (HashMap Text ExpectedAttributeValue)-diExpected = lens _diExpected (\s a -> s { _diExpected = a }) . _Map---- | One or more substitution tokens for attribute names in an expression. The--- following are some use cases for using /ExpressionAttributeNames/:+-- /AttributeValueList/ can contain one or more /AttributeValue/+-- elements of type String, Number, or Binary (not a set type).+-- These attributes are compared against an existing set type+-- attribute of an item. If any elements of the input set are+-- present in the item attribute, the expression evaluates to true. ----- To access an attribute whose name conflicts with a DynamoDB reserved word.+-- - 'BETWEEN' : Greater than or equal to the first value, and less+-- than or equal to the second value. ----- To create a placeholder for repeating occurrences of an attribute name in--- an expression.+-- /AttributeValueList/ must contain two /AttributeValue/ elements+-- of the same type, either String, Number, or Binary (not a set+-- type). A target attribute matches if the target value is greater+-- than, or equal to, the first element and less than, or equal to,+-- the second element. If an item contains an /AttributeValue/+-- element of a different type than the one provided in the+-- request, the value does not match. For example, '{\"S\":\"6\"}'+-- does not compare to '{\"N\":\"6\"}'. Also, '{\"N\":\"6\"}' does+-- not compare to '{\"NS\":[\"6\", \"2\", \"1\"]}' ----- To prevent special characters in an attribute name from being--- misinterpreted in an expression.+-- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters>+-- in the /Amazon DynamoDB Developer Guide/. ----- Use the # character in an expression to dereference an attribute name. For--- example, consider the following attribute name:+-- For backward compatibility with previous DynamoDB releases, the+-- following parameters can be used instead of /AttributeValueList/ and+-- /ComparisonOperator/: ----- 'Percentile'+-- - /Value/ - A value for DynamoDB to compare with an attribute. ----- The name of this attribute conflicts with a reserved word, so it cannot be--- used directly in an expression. (For the complete list of reserved words, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around this,--- you could specify the following for /ExpressionAttributeNames/:+-- - /Exists/ - A Boolean value that causes DynamoDB to evaluate the+-- value before attempting the conditional operation: ----- '{"#P":"Percentile"}'+-- - If /Exists/ is 'true', DynamoDB will check to see if that+-- attribute value already exists in the table. If it is found,+-- then the condition evaluates to true; otherwise the condition+-- evaluate to false. ----- You could then use this substitution in an expression, as in this example:+-- - If /Exists/ is 'false', DynamoDB assumes that the attribute+-- value does /not/ exist in the table. If in fact the value does+-- not exist, then the assumption is valid and the condition+-- evaluates to true. If the value is found, despite the assumption+-- that it does not exist, the condition evaluates to false. ----- '#P = :val'+-- Note that the default value for /Exists/ is 'true'. ----- Tokens that begin with the : character are /expression attribute values/,--- which are placeholders for the actual value at runtime.+-- The /Value/ and /Exists/ parameters are incompatible with+-- /AttributeValueList/ and /ComparisonOperator/. Note that if you use both+-- sets of parameters at once, DynamoDB will return a /ValidationException/+-- exception. ----- For more information on expression attribute names, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.-diExpressionAttributeNames :: Lens' DeleteItem (HashMap Text Text)-diExpressionAttributeNames =- lens _diExpressionAttributeNames- (\s a -> s { _diExpressionAttributeNames = a })- . _Map+-- This parameter does not support attributes of type List or Map.+diExpected :: Lens' DeleteItem (HashMap Text ExpectedAttributeValue)+diExpected = lens _diExpected (\ s a -> s{_diExpected = a}) . _Default . _Map; --- | One or more values that can be substituted in an expression.------ Use the : (colon) character in an expression to dereference an attribute--- value. For example, suppose that you wanted to check whether the value of the /ProductStatus/ attribute was one of the following:------ 'Available | Backordered | Discontinued'------ You would first need to specify /ExpressionAttributeValues/ as follows:------ '{ ":avail":{"S":"Available"}, ":back":{"S":"Backordered"},":disc":{"S":"Discontinued"} }'------ You could then use these values in an expression, such as this:------ 'ProductStatus IN (:avail, :back, :disc)'------ For more information on expression attribute values, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.-diExpressionAttributeValues :: Lens' DeleteItem (HashMap Text AttributeValue)-diExpressionAttributeValues =- lens _diExpressionAttributeValues- (\s a -> s { _diExpressionAttributeValues = a })- . _Map+-- | The name of the table from which to delete the item.+diTableName :: Lens' DeleteItem Text+diTableName = lens _diTableName (\ s a -> s{_diTableName = a}); --- | A map of attribute names to /AttributeValue/ objects, representing the primary--- key of the item to delete.+-- | A map of attribute names to /AttributeValue/ objects, representing the+-- primary key of the item to delete. ----- For the primary key, you must provide all of the attributes. For example,--- with a hash type primary key, you only need to provide the hash attribute.--- For a hash-and-range type primary key, you must provide both the hash--- attribute and the range attribute.+-- For the primary key, you must provide all of the attributes. For+-- example, with a hash type primary key, you only need to provide the hash+-- attribute. For a hash-and-range type primary key, you must provide both+-- the hash attribute and the range attribute. diKey :: Lens' DeleteItem (HashMap Text AttributeValue)-diKey = lens _diKey (\s a -> s { _diKey = a }) . _Map+diKey = lens _diKey (\ s a -> s{_diKey = a}) . _Map; -diReturnConsumedCapacity :: Lens' DeleteItem (Maybe ReturnConsumedCapacity)-diReturnConsumedCapacity =- lens _diReturnConsumedCapacity- (\s a -> s { _diReturnConsumedCapacity = a })+instance AWSRequest DeleteItem where+ type Sv DeleteItem = DynamoDB+ type Rs DeleteItem = DeleteItemResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ DeleteItemResponse' <$>+ (x .?> "ConsumedCapacity") <*>+ (x .?> "ItemCollectionMetrics")+ <*> (x .?> "Attributes" .!@ mempty)+ <*> (pure (fromEnum s))) --- | A value that if set to 'SIZE', the response includes statistics about item--- collections, if any, that were modified during the operation are returned in--- the response. If set to 'NONE' (the default), no statistics are returned.-diReturnItemCollectionMetrics :: Lens' DeleteItem (Maybe ReturnItemCollectionMetrics)-diReturnItemCollectionMetrics =- lens _diReturnItemCollectionMetrics- (\s a -> s { _diReturnItemCollectionMetrics = a })+instance ToHeaders DeleteItem where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.DeleteItem" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)]) --- | Use /ReturnValues/ if you want to get the item attributes as they appeared--- before they were deleted. For /DeleteItem/, the valid values are:------ 'NONE' - If /ReturnValues/ is not specified, or if its value is 'NONE', then--- nothing is returned. (This setting is the default for /ReturnValues/.)------ 'ALL_OLD' - The content of the old item is returned.-------diReturnValues :: Lens' DeleteItem (Maybe ReturnValue)-diReturnValues = lens _diReturnValues (\s a -> s { _diReturnValues = a })+instance ToJSON DeleteItem where+ toJSON DeleteItem'{..}+ = object+ ["ReturnValues" .= _diReturnValues,+ "ExpressionAttributeNames" .=+ _diExpressionAttributeNames,+ "ReturnConsumedCapacity" .=+ _diReturnConsumedCapacity,+ "ExpressionAttributeValues" .=+ _diExpressionAttributeValues,+ "ReturnItemCollectionMetrics" .=+ _diReturnItemCollectionMetrics,+ "ConditionExpression" .= _diConditionExpression,+ "ConditionalOperator" .= _diConditionalOperator,+ "Expected" .= _diExpected,+ "TableName" .= _diTableName, "Key" .= _diKey] --- | The name of the table from which to delete the item.-diTableName :: Lens' DeleteItem Text-diTableName = lens _diTableName (\s a -> s { _diTableName = a })+instance ToPath DeleteItem where+ toPath = const "/" -data DeleteItemResponse = DeleteItemResponse- { _dirAttributes :: Map Text AttributeValue- , _dirConsumedCapacity :: Maybe ConsumedCapacity- , _dirItemCollectionMetrics :: Maybe ItemCollectionMetrics- } deriving (Eq, Read, Show)+instance ToQuery DeleteItem where+ toQuery = const mempty --- | 'DeleteItemResponse' constructor.+-- | Represents the output of a /DeleteItem/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'deleteItemResponse' smart constructor.+data DeleteItemResponse = DeleteItemResponse'+ { _dirsConsumedCapacity :: !(Maybe ConsumedCapacity)+ , _dirsItemCollectionMetrics :: !(Maybe ItemCollectionMetrics)+ , _dirsAttributes :: !(Maybe (Map Text AttributeValue))+ , _dirsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteItemResponse' with the minimum fields required to make a request. ----- * 'dirAttributes' @::@ 'HashMap' 'Text' 'AttributeValue'+-- Use one of the following lenses to modify other fields as desired: ----- * 'dirConsumedCapacity' @::@ 'Maybe' 'ConsumedCapacity'+-- * 'dirsConsumedCapacity' ----- * 'dirItemCollectionMetrics' @::@ 'Maybe' 'ItemCollectionMetrics'+-- * 'dirsItemCollectionMetrics' ---deleteItemResponse :: DeleteItemResponse-deleteItemResponse = DeleteItemResponse- { _dirAttributes = mempty- , _dirConsumedCapacity = Nothing- , _dirItemCollectionMetrics = Nothing+-- * 'dirsAttributes'+--+-- * 'dirsStatus'+deleteItemResponse+ :: Int -- ^ 'dirsStatus'+ -> DeleteItemResponse+deleteItemResponse pStatus_ =+ DeleteItemResponse'+ { _dirsConsumedCapacity = Nothing+ , _dirsItemCollectionMetrics = Nothing+ , _dirsAttributes = Nothing+ , _dirsStatus = pStatus_ } --- | A map of attribute names to /AttributeValue/ objects, representing the item as--- it appeared before the /DeleteItem/ operation. This map appears in the response--- only if /ReturnValues/ was specified as 'ALL_OLD' in the request.-dirAttributes :: Lens' DeleteItemResponse (HashMap Text AttributeValue)-dirAttributes = lens _dirAttributes (\s a -> s { _dirAttributes = a }) . _Map--dirConsumedCapacity :: Lens' DeleteItemResponse (Maybe ConsumedCapacity)-dirConsumedCapacity =- lens _dirConsumedCapacity (\s a -> s { _dirConsumedCapacity = a })+-- | Undocumented member.+dirsConsumedCapacity :: Lens' DeleteItemResponse (Maybe ConsumedCapacity)+dirsConsumedCapacity = lens _dirsConsumedCapacity (\ s a -> s{_dirsConsumedCapacity = a}); -- | Information about item collections, if any, that were affected by the--- operation. /ItemCollectionMetrics/ is only returned if the request asked for--- it. If the table does not have any local secondary indexes, this information--- is not returned in the response.+-- operation. /ItemCollectionMetrics/ is only returned if the request asked+-- for it. If the table does not have any local secondary indexes, this+-- information is not returned in the response. -- -- Each /ItemCollectionMetrics/ element consists of: ----- /ItemCollectionKey/ - The hash key value of the item collection. This is the--- same as the hash key of the item.------ /SizeEstimateRange/ - An estimate of item collection size, in gigabytes. This--- value is a two-element array containing a lower bound and an upper bound for--- the estimate. The estimate includes the size of all the items in the table,--- plus the size of all attributes projected into all of the local secondary--- indexes on that table. Use this estimate to measure whether a local secondary--- index is approaching its size limit.+-- - /ItemCollectionKey/ - The hash key value of the item collection.+-- This is the same as the hash key of the item. ----- The estimate is subject to change over time; therefore, do not rely on the--- precision or accuracy of the estimate.+-- - /SizeEstimateRange/ - An estimate of item collection size, in+-- gigabytes. This value is a two-element array containing a lower+-- bound and an upper bound for the estimate. The estimate includes the+-- size of all the items in the table, plus the size of all attributes+-- projected into all of the local secondary indexes on that table. Use+-- this estimate to measure whether a local secondary index is+-- approaching its size limit. --+-- The estimate is subject to change over time; therefore, do not rely+-- on the precision or accuracy of the estimate. ---dirItemCollectionMetrics :: Lens' DeleteItemResponse (Maybe ItemCollectionMetrics)-dirItemCollectionMetrics =- lens _dirItemCollectionMetrics- (\s a -> s { _dirItemCollectionMetrics = a })--instance ToPath DeleteItem where- toPath = const "/"--instance ToQuery DeleteItem where- toQuery = const mempty--instance ToHeaders DeleteItem--instance ToJSON DeleteItem where- toJSON DeleteItem{..} = object- [ "TableName" .= _diTableName- , "Key" .= _diKey- , "Expected" .= _diExpected- , "ConditionalOperator" .= _diConditionalOperator- , "ReturnValues" .= _diReturnValues- , "ReturnConsumedCapacity" .= _diReturnConsumedCapacity- , "ReturnItemCollectionMetrics" .= _diReturnItemCollectionMetrics- , "ConditionExpression" .= _diConditionExpression- , "ExpressionAttributeNames" .= _diExpressionAttributeNames- , "ExpressionAttributeValues" .= _diExpressionAttributeValues- ]--instance AWSRequest DeleteItem where- type Sv DeleteItem = DynamoDB- type Rs DeleteItem = DeleteItemResponse+dirsItemCollectionMetrics :: Lens' DeleteItemResponse (Maybe ItemCollectionMetrics)+dirsItemCollectionMetrics = lens _dirsItemCollectionMetrics (\ s a -> s{_dirsItemCollectionMetrics = a}); - request = post "DeleteItem"- response = jsonResponse+-- | A map of attribute names to /AttributeValue/ objects, representing the+-- item as it appeared before the /DeleteItem/ operation. This map appears+-- in the response only if /ReturnValues/ was specified as 'ALL_OLD' in the+-- request.+dirsAttributes :: Lens' DeleteItemResponse (HashMap Text AttributeValue)+dirsAttributes = lens _dirsAttributes (\ s a -> s{_dirsAttributes = a}) . _Default . _Map; -instance FromJSON DeleteItemResponse where- parseJSON = withObject "DeleteItemResponse" $ \o -> DeleteItemResponse- <$> o .:? "Attributes" .!= mempty- <*> o .:? "ConsumedCapacity"- <*> o .:? "ItemCollectionMetrics"+-- | The response status code.+dirsStatus :: Lens' DeleteItemResponse Int+dirsStatus = lens _dirsStatus (\ s a -> s{_dirsStatus = a});
gen/Network/AWS/DynamoDB/DeleteTable.hs view
@@ -1,121 +1,148 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}+{-# 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.DynamoDB.DeleteTable--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | The /DeleteTable/ operation deletes a table and all of its items. After a /DeleteTable/ request, the specified table is in the 'DELETING' state until DynamoDB--- completes the deletion. If the table is in the 'ACTIVE' state, you can delete--- it. If a table is in 'CREATING' or 'UPDATING' states, then DynamoDB returns a /ResourceInUseException/. If the specified table does not exist, DynamoDB returns a /ResourceNotFoundException/. If table is already in the 'DELETING' state, no error is returned.+-- The /DeleteTable/ operation deletes a table and all of its items. After+-- a /DeleteTable/ request, the specified table is in the 'DELETING' state+-- until DynamoDB completes the deletion. If the table is in the 'ACTIVE'+-- state, you can delete it. If a table is in 'CREATING' or 'UPDATING'+-- states, then DynamoDB returns a /ResourceInUseException/. If the+-- specified table does not exist, DynamoDB returns a+-- /ResourceNotFoundException/. If table is already in the 'DELETING'+-- state, no error is returned. ----- DynamoDB might continue to accept data read and write operations, such as /GetItem/ and /PutItem/, on a table in the 'DELETING' state until the table deletion is--- complete.+-- DynamoDB might continue to accept data read and write operations, such+-- as /GetItem/ and /PutItem/, on a table in the 'DELETING' state until the+-- table deletion is complete. -- -- When you delete a table, any indexes on that table are also deleted. --+-- If you have DynamoDB Streams enabled on the table, then the+-- corresponding stream on that table goes into the 'DISABLED' state, and+-- the stream is automatically deleted after 24 hours.+-- -- Use the /DescribeTable/ API to check the status of the table. ----- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteTable.html>+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteTable.html AWS API Reference> for DeleteTable. module Network.AWS.DynamoDB.DeleteTable (- -- * Request- DeleteTable- -- ** Request constructor- , deleteTable- -- ** Request lenses+ -- * Creating a Request+ deleteTable+ , DeleteTable+ -- * Request Lenses , dtTableName - -- * Response- , DeleteTableResponse- -- ** Response constructor+ -- * Destructuring the Response , deleteTableResponse- -- ** Response lenses- , dtrTableDescription+ , DeleteTableResponse+ -- * Response Lenses+ , dtrsTableDescription+ , dtrsStatus ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -newtype DeleteTable = DeleteTable+-- | Represents the input of a /DeleteTable/ operation.+--+-- /See:/ 'deleteTable' smart constructor.+newtype DeleteTable = DeleteTable' { _dtTableName :: Text- } deriving (Eq, Ord, Read, Show, Monoid, IsString)+ } deriving (Eq,Read,Show,Data,Typeable,Generic) --- | 'DeleteTable' constructor.------ The fields accessible through corresponding lenses are:+-- | Creates a value of 'DeleteTable' with the minimum fields required to make a request. ----- * 'dtTableName' @::@ 'Text'+-- Use one of the following lenses to modify other fields as desired: ---deleteTable :: Text -- ^ 'dtTableName'- -> DeleteTable-deleteTable p1 = DeleteTable- { _dtTableName = p1+-- * 'dtTableName'+deleteTable+ :: Text -- ^ 'dtTableName'+ -> DeleteTable+deleteTable pTableName_ =+ DeleteTable'+ { _dtTableName = pTableName_ } -- | The name of the table to delete. dtTableName :: Lens' DeleteTable Text-dtTableName = lens _dtTableName (\s a -> s { _dtTableName = a })+dtTableName = lens _dtTableName (\ s a -> s{_dtTableName = a}); -newtype DeleteTableResponse = DeleteTableResponse- { _dtrTableDescription :: Maybe TableDescription- } deriving (Eq, Read, Show)+instance AWSRequest DeleteTable where+ type Sv DeleteTable = DynamoDB+ type Rs DeleteTable = DeleteTableResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ DeleteTableResponse' <$>+ (x .?> "TableDescription") <*> (pure (fromEnum s))) --- | 'DeleteTableResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'dtrTableDescription' @::@ 'Maybe' 'TableDescription'----deleteTableResponse :: DeleteTableResponse-deleteTableResponse = DeleteTableResponse- { _dtrTableDescription = Nothing- }+instance ToHeaders DeleteTable where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.DeleteTable" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)]) -dtrTableDescription :: Lens' DeleteTableResponse (Maybe TableDescription)-dtrTableDescription =- lens _dtrTableDescription (\s a -> s { _dtrTableDescription = a })+instance ToJSON DeleteTable where+ toJSON DeleteTable'{..}+ = object ["TableName" .= _dtTableName] instance ToPath DeleteTable where- toPath = const "/"+ toPath = const "/" instance ToQuery DeleteTable where- toQuery = const mempty--instance ToHeaders DeleteTable+ toQuery = const mempty -instance ToJSON DeleteTable where- toJSON DeleteTable{..} = object- [ "TableName" .= _dtTableName- ]+-- | Represents the output of a /DeleteTable/ operation.+--+-- /See:/ 'deleteTableResponse' smart constructor.+data DeleteTableResponse = DeleteTableResponse'+ { _dtrsTableDescription :: !(Maybe TableDescription)+ , _dtrsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest DeleteTable where- type Sv DeleteTable = DynamoDB- type Rs DeleteTable = DeleteTableResponse+-- | Creates a value of 'DeleteTableResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dtrsTableDescription'+--+-- * 'dtrsStatus'+deleteTableResponse+ :: Int -- ^ 'dtrsStatus'+ -> DeleteTableResponse+deleteTableResponse pStatus_ =+ DeleteTableResponse'+ { _dtrsTableDescription = Nothing+ , _dtrsStatus = pStatus_+ } - request = post "DeleteTable"- response = jsonResponse+-- | Undocumented member.+dtrsTableDescription :: Lens' DeleteTableResponse (Maybe TableDescription)+dtrsTableDescription = lens _dtrsTableDescription (\ s a -> s{_dtrsTableDescription = a}); -instance FromJSON DeleteTableResponse where- parseJSON = withObject "DeleteTableResponse" $ \o -> DeleteTableResponse- <$> o .:? "TableDescription"+-- | The response status code.+dtrsStatus :: Lens' DeleteTableResponse Int+dtrsStatus = lens _dtrsStatus (\ s a -> s{_dtrsStatus = a});
gen/Network/AWS/DynamoDB/DescribeTable.hs view
@@ -1,122 +1,137 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}+{-# 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.DynamoDB.DescribeTable--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Returns information about the table, including the current status of the--- table, when it was created, the primary key schema, and any indexes on the--- table.+-- Returns information about the table, including the current status of the+-- table, when it was created, the primary key schema, and any indexes on+-- the table. -- -- If you issue a DescribeTable request immediately after a CreateTable--- request, DynamoDB might return a ResourceNotFoundException. This is because--- DescribeTable uses an eventually consistent query, and the metadata for your--- table might not be available at that moment. Wait for a few seconds, and then--- try the DescribeTable request again.------+-- request, DynamoDB might return a ResourceNotFoundException. This is+-- because DescribeTable uses an eventually consistent query, and the+-- metadata for your table might not be available at that moment. Wait for+-- a few seconds, and then try the DescribeTable request again. ----- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html>+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DescribeTable.html AWS API Reference> for DescribeTable. module Network.AWS.DynamoDB.DescribeTable (- -- * Request- DescribeTable- -- ** Request constructor- , describeTable- -- ** Request lenses- , dt1TableName+ -- * Creating a Request+ describeTable+ , DescribeTable+ -- * Request Lenses+ , dTableName - -- * Response- , DescribeTableResponse- -- ** Response constructor+ -- * Destructuring the Response , describeTableResponse- -- ** Response lenses- , dtrTable+ , DescribeTableResponse+ -- * Response Lenses+ , drsTable+ , drsStatus ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts--newtype DescribeTable = DescribeTable- { _dt1TableName :: Text- } deriving (Eq, Ord, Read, Show, Monoid, IsString)+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response --- | 'DescribeTable' constructor.+-- | Represents the input of a /DescribeTable/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'describeTable' smart constructor.+newtype DescribeTable = DescribeTable'+ { _dTableName :: Text+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DescribeTable' with the minimum fields required to make a request. ----- * 'dt1TableName' @::@ 'Text'+-- Use one of the following lenses to modify other fields as desired: ---describeTable :: Text -- ^ 'dt1TableName'- -> DescribeTable-describeTable p1 = DescribeTable- { _dt1TableName = p1+-- * 'dTableName'+describeTable+ :: Text -- ^ 'dTableName'+ -> DescribeTable+describeTable pTableName_ =+ DescribeTable'+ { _dTableName = pTableName_ } -- | The name of the table to describe.-dt1TableName :: Lens' DescribeTable Text-dt1TableName = lens _dt1TableName (\s a -> s { _dt1TableName = a })+dTableName :: Lens' DescribeTable Text+dTableName = lens _dTableName (\ s a -> s{_dTableName = a}); -newtype DescribeTableResponse = DescribeTableResponse- { _dtrTable :: TableDescription- } deriving (Eq, Read, Show)+instance AWSRequest DescribeTable where+ type Sv DescribeTable = DynamoDB+ type Rs DescribeTable = DescribeTableResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ DescribeTableResponse' <$>+ (x .?> "Table") <*> (pure (fromEnum s))) --- | 'DescribeTableResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'dtrTable' @::@ 'TableDescription'----describeTableResponse :: TableDescription -- ^ 'dtrTable'- -> DescribeTableResponse-describeTableResponse p1 = DescribeTableResponse- { _dtrTable = p1- }+instance ToHeaders DescribeTable where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.DescribeTable" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)]) -dtrTable :: Lens' DescribeTableResponse TableDescription-dtrTable = lens _dtrTable (\s a -> s { _dtrTable = a })+instance ToJSON DescribeTable where+ toJSON DescribeTable'{..}+ = object ["TableName" .= _dTableName] instance ToPath DescribeTable where- toPath = const "/"+ toPath = const "/" instance ToQuery DescribeTable where- toQuery = const mempty--instance ToHeaders DescribeTable+ toQuery = const mempty -instance ToJSON DescribeTable where- toJSON DescribeTable{..} = object- [ "TableName" .= _dt1TableName- ]+-- | Represents the output of a /DescribeTable/ operation.+--+-- /See:/ 'describeTableResponse' smart constructor.+data DescribeTableResponse = DescribeTableResponse'+ { _drsTable :: !(Maybe TableDescription)+ , _drsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest DescribeTable where- type Sv DescribeTable = DynamoDB- type Rs DescribeTable = DescribeTableResponse+-- | Creates a value of 'DescribeTableResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drsTable'+--+-- * 'drsStatus'+describeTableResponse+ :: Int -- ^ 'drsStatus'+ -> DescribeTableResponse+describeTableResponse pStatus_ =+ DescribeTableResponse'+ { _drsTable = Nothing+ , _drsStatus = pStatus_+ } - request = post "DescribeTable"- response = jsonResponse+-- | Undocumented member.+drsTable :: Lens' DescribeTableResponse (Maybe TableDescription)+drsTable = lens _drsTable (\ s a -> s{_drsTable = a}); -instance FromJSON DescribeTableResponse where- parseJSON = withObject "DescribeTableResponse" $ \o -> DescribeTableResponse- <$> o .: "Table"+-- | The response status code.+drsStatus :: Lens' DescribeTableResponse Int+drsStatus = lens _drsStatus (\ s a -> s{_drsStatus = a});
gen/Network/AWS/DynamoDB/GetItem.hs view
@@ -1,256 +1,280 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}+{-# 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.DynamoDB.GetItem--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | The /GetItem/ operation returns a set of attributes for the item with the given--- primary key. If there is no matching item, /GetItem/ does not return any data.+-- The /GetItem/ operation returns a set of attributes for the item with+-- the given primary key. If there is no matching item, /GetItem/ does not+-- return any data. -- -- /GetItem/ provides an eventually consistent read by default. If your--- application requires a strongly consistent read, set /ConsistentRead/ to 'true'.--- Although a strongly consistent read might take more time than an eventually--- consistent read, it always returns the last updated value.+-- application requires a strongly consistent read, set /ConsistentRead/ to+-- 'true'. Although a strongly consistent read might take more time than an+-- eventually consistent read, it always returns the last updated value. ----- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html>+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html AWS API Reference> for GetItem. module Network.AWS.DynamoDB.GetItem (- -- * Request- GetItem- -- ** Request constructor- , getItem- -- ** Request lenses- , giAttributesToGet+ -- * Creating a Request+ getItem+ , GetItem+ -- * Request Lenses+ , giProjectionExpression , giConsistentRead , giExpressionAttributeNames- , giKey- , giProjectionExpression+ , giAttributesToGet , giReturnConsumedCapacity , giTableName+ , giKey - -- * Response- , GetItemResponse- -- ** Response constructor+ -- * Destructuring the Response , getItemResponse- -- ** Response lenses- , girConsumedCapacity- , girItem+ , GetItemResponse+ -- * Response Lenses+ , girsConsumedCapacity+ , girsItem+ , girsStatus ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts--data GetItem = GetItem- { _giAttributesToGet :: List1 "AttributesToGet" Text- , _giConsistentRead :: Maybe Bool- , _giExpressionAttributeNames :: Map Text Text- , _giKey :: Map Text AttributeValue- , _giProjectionExpression :: Maybe Text- , _giReturnConsumedCapacity :: Maybe ReturnConsumedCapacity- , _giTableName :: Text- } deriving (Eq, Read, Show)+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response --- | 'GetItem' constructor.+-- | Represents the input of a /GetItem/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'getItem' smart constructor.+data GetItem = GetItem'+ { _giProjectionExpression :: !(Maybe Text)+ , _giConsistentRead :: !(Maybe Bool)+ , _giExpressionAttributeNames :: !(Maybe (Map Text Text))+ , _giAttributesToGet :: !(Maybe (List1 Text))+ , _giReturnConsumedCapacity :: !(Maybe ReturnConsumedCapacity)+ , _giTableName :: !Text+ , _giKey :: !(Map Text AttributeValue)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'GetItem' with the minimum fields required to make a request. ----- * 'giAttributesToGet' @::@ 'NonEmpty' 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'giConsistentRead' @::@ 'Maybe' 'Bool'+-- * 'giProjectionExpression' ----- * 'giExpressionAttributeNames' @::@ 'HashMap' 'Text' 'Text'+-- * 'giConsistentRead' ----- * 'giKey' @::@ 'HashMap' 'Text' 'AttributeValue'+-- * 'giExpressionAttributeNames' ----- * 'giProjectionExpression' @::@ 'Maybe' 'Text'+-- * 'giAttributesToGet' ----- * 'giReturnConsumedCapacity' @::@ 'Maybe' 'ReturnConsumedCapacity'+-- * 'giReturnConsumedCapacity' ----- * 'giTableName' @::@ 'Text'+-- * 'giTableName' ---getItem :: Text -- ^ 'giTableName'- -> NonEmpty Text -- ^ 'giAttributesToGet'- -> GetItem-getItem p1 p2 = GetItem- { _giTableName = p1- , _giAttributesToGet = withIso _List1 (const id) p2- , _giKey = mempty- , _giConsistentRead = Nothing- , _giReturnConsumedCapacity = Nothing- , _giProjectionExpression = Nothing- , _giExpressionAttributeNames = mempty+-- * 'giKey'+getItem+ :: Text -- ^ 'giTableName'+ -> GetItem+getItem pTableName_ =+ GetItem'+ { _giProjectionExpression = Nothing+ , _giConsistentRead = Nothing+ , _giExpressionAttributeNames = Nothing+ , _giAttributesToGet = Nothing+ , _giReturnConsumedCapacity = Nothing+ , _giTableName = pTableName_+ , _giKey = mempty } --- | This is a legacy parameter, for backward compatibility. New applications--- should use /ProjectionExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.+-- | A string that identifies one or more attributes to retrieve from the+-- table. These attributes can include scalars, sets, or elements of a JSON+-- document. The attributes in the expression must be separated by commas. ----- This parameter allows you to retrieve attributes of type List or Map;--- however, it cannot retrieve individual elements within a List or a Map.+-- If no attribute names are specified, then all attributes will be+-- returned. If any of the requested attributes are not found, they will+-- not appear in the result. ----- The names of one or more attributes to retrieve. If no attribute names are--- provided, then all attributes will be returned. If any of the requested--- attributes are not found, they will not appear in the result.+-- For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/. ----- Note that /AttributesToGet/ has no effect on provisioned throughput--- consumption. DynamoDB determines capacity units consumed based on item size,--- not on the amount of data that is returned to an application.-giAttributesToGet :: Lens' GetItem (NonEmpty Text)-giAttributesToGet =- lens _giAttributesToGet (\s a -> s { _giAttributesToGet = a })- . _List1+-- /ProjectionExpression/ replaces the legacy /AttributesToGet/ parameter.+giProjectionExpression :: Lens' GetItem (Maybe Text)+giProjectionExpression = lens _giProjectionExpression (\ s a -> s{_giProjectionExpression = a}); --- | A value that if set to 'true', then the operation uses strongly consistent--- reads; otherwise, eventually consistent reads are used.+-- | Determines the read consistency model: If set to 'true', then the+-- operation uses strongly consistent reads; otherwise, the operation uses+-- eventually consistent reads. giConsistentRead :: Lens' GetItem (Maybe Bool)-giConsistentRead = lens _giConsistentRead (\s a -> s { _giConsistentRead = a })+giConsistentRead = lens _giConsistentRead (\ s a -> s{_giConsistentRead = a}); --- | One or more substitution tokens for attribute names in an expression. The--- following are some use cases for using /ExpressionAttributeNames/:+-- | One or more substitution tokens for attribute names in an expression.+-- The following are some use cases for using /ExpressionAttributeNames/: ----- To access an attribute whose name conflicts with a DynamoDB reserved word.+-- - To access an attribute whose name conflicts with a DynamoDB reserved+-- word. ----- To create a placeholder for repeating occurrences of an attribute name in--- an expression.+-- - To create a placeholder for repeating occurrences of an attribute+-- name in an expression. ----- To prevent special characters in an attribute name from being--- misinterpreted in an expression.+-- - To prevent special characters in an attribute name from being+-- misinterpreted in an expression. ----- Use the # character in an expression to dereference an attribute name. For--- example, consider the following attribute name:+-- Use the __#__ character in an expression to dereference an attribute+-- name. For example, consider the following attribute name: ----- 'Percentile'+-- - 'Percentile' ----- The name of this attribute conflicts with a reserved word, so it cannot be--- used directly in an expression. (For the complete list of reserved words, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around this,--- you could specify the following for /ExpressionAttributeNames/:+-- The name of this attribute conflicts with a reserved word, so it cannot+-- be used directly in an expression. (For the complete list of reserved+-- words, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words>+-- in the /Amazon DynamoDB Developer Guide/). To work around this, you+-- could specify the following for /ExpressionAttributeNames/: ----- '{"#P":"Percentile"}'+-- - '{\"#P\":\"Percentile\"}' ----- You could then use this substitution in an expression, as in this example:+-- You could then use this substitution in an expression, as in this+-- example: ----- '#P = :val'+-- - '#P = :val' ----- Tokens that begin with the : character are /expression attribute values/,--- which are placeholders for the actual value at runtime.+-- Tokens that begin with the __:__ character are /expression attribute+-- values/, which are placeholders for the actual value at runtime. ----- For more information on expression attribute names, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.+-- For more information on expression attribute names, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/. giExpressionAttributeNames :: Lens' GetItem (HashMap Text Text)-giExpressionAttributeNames =- lens _giExpressionAttributeNames- (\s a -> s { _giExpressionAttributeNames = a })- . _Map---- | A map of attribute names to /AttributeValue/ objects, representing the primary--- key of the item to retrieve.------ For the primary key, you must provide all of the attributes. For example,--- with a hash type primary key, you only need to provide the hash attribute.--- For a hash-and-range type primary key, you must provide both the hash--- attribute and the range attribute.-giKey :: Lens' GetItem (HashMap Text AttributeValue)-giKey = lens _giKey (\s a -> s { _giKey = a }) . _Map+giExpressionAttributeNames = lens _giExpressionAttributeNames (\ s a -> s{_giExpressionAttributeNames = a}) . _Default . _Map; --- | A string that identifies one or more attributes to retrieve from the table.--- These attributes can include scalars, sets, or elements of a JSON document.--- The attributes in the expression must be separated by commas.------ If no attribute names are specified, then all attributes will be returned.--- If any of the requested attributes are not found, they will not appear in the--- result.+-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /ProjectionExpression/ instead. Do not combine legacy+-- parameters and expression parameters in a single API call; otherwise,+-- DynamoDB will return a /ValidationException/ exception. ----- For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes> in the /Amazon DynamoDBDeveloper Guide/.+-- This parameter allows you to retrieve attributes of type List or Map;+-- however, it cannot retrieve individual elements within a List or a Map. ----- /ProjectionExpression/ replaces the legacy /AttributesToGet/ parameter.+-- The names of one or more attributes to retrieve. If no attribute names+-- are provided, then all attributes will be returned. If any of the+-- requested attributes are not found, they will not appear in the result. ---giProjectionExpression :: Lens' GetItem (Maybe Text)-giProjectionExpression =- lens _giProjectionExpression (\s a -> s { _giProjectionExpression = a })+-- Note that /AttributesToGet/ has no effect on provisioned throughput+-- consumption. DynamoDB determines capacity units consumed based on item+-- size, not on the amount of data that is returned to an application.+giAttributesToGet :: Lens' GetItem (Maybe (NonEmpty Text))+giAttributesToGet = lens _giAttributesToGet (\ s a -> s{_giAttributesToGet = a}) . mapping _List1; +-- | Undocumented member. giReturnConsumedCapacity :: Lens' GetItem (Maybe ReturnConsumedCapacity)-giReturnConsumedCapacity =- lens _giReturnConsumedCapacity- (\s a -> s { _giReturnConsumedCapacity = a })+giReturnConsumedCapacity = lens _giReturnConsumedCapacity (\ s a -> s{_giReturnConsumedCapacity = a}); -- | The name of the table containing the requested item. giTableName :: Lens' GetItem Text-giTableName = lens _giTableName (\s a -> s { _giTableName = a })--data GetItemResponse = GetItemResponse- { _girConsumedCapacity :: Maybe ConsumedCapacity- , _girItem :: Map Text AttributeValue- } deriving (Eq, Read, Show)+giTableName = lens _giTableName (\ s a -> s{_giTableName = a}); --- | 'GetItemResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'girConsumedCapacity' @::@ 'Maybe' 'ConsumedCapacity'------ * 'girItem' @::@ 'HashMap' 'Text' 'AttributeValue'+-- | A map of attribute names to /AttributeValue/ objects, representing the+-- primary key of the item to retrieve. ---getItemResponse :: GetItemResponse-getItemResponse = GetItemResponse- { _girItem = mempty- , _girConsumedCapacity = Nothing- }+-- For the primary key, you must provide all of the attributes. For+-- example, with a hash type primary key, you only need to provide the hash+-- attribute. For a hash-and-range type primary key, you must provide both+-- the hash attribute and the range attribute.+giKey :: Lens' GetItem (HashMap Text AttributeValue)+giKey = lens _giKey (\ s a -> s{_giKey = a}) . _Map; -girConsumedCapacity :: Lens' GetItemResponse (Maybe ConsumedCapacity)-girConsumedCapacity =- lens _girConsumedCapacity (\s a -> s { _girConsumedCapacity = a })+instance AWSRequest GetItem where+ type Sv GetItem = DynamoDB+ type Rs GetItem = GetItemResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ GetItemResponse' <$>+ (x .?> "ConsumedCapacity") <*>+ (x .?> "Item" .!@ mempty)+ <*> (pure (fromEnum s))) --- | A map of attribute names to /AttributeValue/ objects, as specified by /AttributesToGet/.-girItem :: Lens' GetItemResponse (HashMap Text AttributeValue)-girItem = lens _girItem (\s a -> s { _girItem = a }) . _Map+instance ToHeaders GetItem where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.GetItem" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)]) +instance ToJSON GetItem where+ toJSON GetItem'{..}+ = object+ ["ProjectionExpression" .= _giProjectionExpression,+ "ConsistentRead" .= _giConsistentRead,+ "ExpressionAttributeNames" .=+ _giExpressionAttributeNames,+ "AttributesToGet" .= _giAttributesToGet,+ "ReturnConsumedCapacity" .=+ _giReturnConsumedCapacity,+ "TableName" .= _giTableName, "Key" .= _giKey]+ instance ToPath GetItem where- toPath = const "/"+ toPath = const "/" instance ToQuery GetItem where- toQuery = const mempty+ toQuery = const mempty -instance ToHeaders GetItem+-- | Represents the output of a /GetItem/ operation.+--+-- /See:/ 'getItemResponse' smart constructor.+data GetItemResponse = GetItemResponse'+ { _girsConsumedCapacity :: !(Maybe ConsumedCapacity)+ , _girsItem :: !(Maybe (Map Text AttributeValue))+ , _girsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance ToJSON GetItem where- toJSON GetItem{..} = object- [ "TableName" .= _giTableName- , "Key" .= _giKey- , "AttributesToGet" .= _giAttributesToGet- , "ConsistentRead" .= _giConsistentRead- , "ReturnConsumedCapacity" .= _giReturnConsumedCapacity- , "ProjectionExpression" .= _giProjectionExpression- , "ExpressionAttributeNames" .= _giExpressionAttributeNames- ]+-- | Creates a value of 'GetItemResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'girsConsumedCapacity'+--+-- * 'girsItem'+--+-- * 'girsStatus'+getItemResponse+ :: Int -- ^ 'girsStatus'+ -> GetItemResponse+getItemResponse pStatus_ =+ GetItemResponse'+ { _girsConsumedCapacity = Nothing+ , _girsItem = Nothing+ , _girsStatus = pStatus_+ } -instance AWSRequest GetItem where- type Sv GetItem = DynamoDB- type Rs GetItem = GetItemResponse+-- | Undocumented member.+girsConsumedCapacity :: Lens' GetItemResponse (Maybe ConsumedCapacity)+girsConsumedCapacity = lens _girsConsumedCapacity (\ s a -> s{_girsConsumedCapacity = a}); - request = post "GetItem"- response = jsonResponse+-- | A map of attribute names to /AttributeValue/ objects, as specified by+-- /AttributesToGet/.+girsItem :: Lens' GetItemResponse (HashMap Text AttributeValue)+girsItem = lens _girsItem (\ s a -> s{_girsItem = a}) . _Default . _Map; -instance FromJSON GetItemResponse where- parseJSON = withObject "GetItemResponse" $ \o -> GetItemResponse- <$> o .:? "ConsumedCapacity"- <*> o .:? "Item" .!= mempty+-- | The response status code.+girsStatus :: Lens' GetItemResponse Int+girsStatus = lens _girsStatus (\ s a -> s{_girsStatus = a});
gen/Network/AWS/DynamoDB/ListTables.hs view
@@ -1,156 +1,178 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}+{-# 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.DynamoDB.ListTables--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Returns an array of table names associated with the current account and--- endpoint. The output from /ListTables/ is paginated, with each page returning a--- maximum of 100 table names.+-- Returns an array of table names associated with the current account and+-- endpoint. The output from /ListTables/ is paginated, with each page+-- returning a maximum of 100 table names. ----- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTables.html>+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_ListTables.html AWS API Reference> for ListTables.+--+-- This operation returns paginated results. module Network.AWS.DynamoDB.ListTables (- -- * Request- ListTables- -- ** Request constructor- , listTables- -- ** Request lenses+ -- * Creating a Request+ listTables+ , ListTables+ -- * Request Lenses , ltExclusiveStartTableName , ltLimit - -- * Response- , ListTablesResponse- -- ** Response constructor+ -- * Destructuring the Response , listTablesResponse- -- ** Response lenses- , ltrLastEvaluatedTableName- , ltrTableNames+ , ListTablesResponse+ -- * Response Lenses+ , ltrsLastEvaluatedTableName+ , ltrsTableNames+ , ltrsStatus ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts--data ListTables = ListTables- { _ltExclusiveStartTableName :: Maybe Text- , _ltLimit :: Maybe Nat- } deriving (Eq, Ord, Read, Show)+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Pager+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response --- | 'ListTables' constructor.+-- | Represents the input of a /ListTables/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'listTables' smart constructor.+data ListTables = ListTables'+ { _ltExclusiveStartTableName :: !(Maybe Text)+ , _ltLimit :: !(Maybe Nat)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ListTables' with the minimum fields required to make a request. ----- * 'ltExclusiveStartTableName' @::@ 'Maybe' 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'ltLimit' @::@ 'Maybe' 'Natural'+-- * 'ltExclusiveStartTableName' ---listTables :: ListTables-listTables = ListTables+-- * 'ltLimit'+listTables+ :: ListTables+listTables =+ ListTables' { _ltExclusiveStartTableName = Nothing- , _ltLimit = Nothing+ , _ltLimit = Nothing } --- | The first table name that this operation will evaluate. Use the value that--- was returned for /LastEvaluatedTableName/ in a previous operation, so that you--- can obtain the next page of results.+-- | The first table name that this operation will evaluate. Use the value+-- that was returned for /LastEvaluatedTableName/ in a previous operation,+-- so that you can obtain the next page of results. ltExclusiveStartTableName :: Lens' ListTables (Maybe Text)-ltExclusiveStartTableName =- lens _ltExclusiveStartTableName- (\s a -> s { _ltExclusiveStartTableName = a })+ltExclusiveStartTableName = lens _ltExclusiveStartTableName (\ s a -> s{_ltExclusiveStartTableName = a}); -- | A maximum number of table names to return. If this parameter is not -- specified, the limit is 100. ltLimit :: Lens' ListTables (Maybe Natural)-ltLimit = lens _ltLimit (\s a -> s { _ltLimit = a }) . mapping _Nat+ltLimit = lens _ltLimit (\ s a -> s{_ltLimit = a}) . mapping _Nat; -data ListTablesResponse = ListTablesResponse- { _ltrLastEvaluatedTableName :: Maybe Text- , _ltrTableNames :: List "TableNames" Text- } deriving (Eq, Ord, Read, Show)+instance AWSPager ListTables where+ page rq rs+ | stop (rs ^. ltrsLastEvaluatedTableName) = Nothing+ | stop (rs ^. ltrsTableNames) = Nothing+ | otherwise =+ Just $ rq &+ ltExclusiveStartTableName .~+ rs ^. ltrsLastEvaluatedTableName --- | 'ListTablesResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'ltrLastEvaluatedTableName' @::@ 'Maybe' 'Text'------ * 'ltrTableNames' @::@ ['Text']----listTablesResponse :: ListTablesResponse-listTablesResponse = ListTablesResponse- { _ltrTableNames = mempty- , _ltrLastEvaluatedTableName = Nothing- }+instance AWSRequest ListTables where+ type Sv ListTables = DynamoDB+ type Rs ListTables = ListTablesResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ ListTablesResponse' <$>+ (x .?> "LastEvaluatedTableName") <*>+ (x .?> "TableNames" .!@ mempty)+ <*> (pure (fromEnum s))) --- | The name of the last table in the current page of results. Use this value as--- the /ExclusiveStartTableName/ in a new request to obtain the next page of--- results, until all the table names are returned.------ If you do not receive a /LastEvaluatedTableName/ value in the response, this--- means that there are no more table names to be retrieved.-ltrLastEvaluatedTableName :: Lens' ListTablesResponse (Maybe Text)-ltrLastEvaluatedTableName =- lens _ltrLastEvaluatedTableName- (\s a -> s { _ltrLastEvaluatedTableName = a })+instance ToHeaders ListTables where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.ListTables" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)]) --- | The names of the tables associated with the current account at the current--- endpoint. The maximum size of this array is 100.------ If /LastEvaluatedTableName/ also appears in the output, you can use this value--- as the /ExclusiveStartTableName/ parameter in a subsequent /ListTables/ request--- and obtain the next page of results.-ltrTableNames :: Lens' ListTablesResponse [Text]-ltrTableNames = lens _ltrTableNames (\s a -> s { _ltrTableNames = a }) . _List+instance ToJSON ListTables where+ toJSON ListTables'{..}+ = object+ ["ExclusiveStartTableName" .=+ _ltExclusiveStartTableName,+ "Limit" .= _ltLimit] instance ToPath ListTables where- toPath = const "/"+ toPath = const "/" instance ToQuery ListTables where- toQuery = const mempty--instance ToHeaders ListTables+ toQuery = const mempty -instance ToJSON ListTables where- toJSON ListTables{..} = object- [ "ExclusiveStartTableName" .= _ltExclusiveStartTableName- , "Limit" .= _ltLimit- ]+-- | Represents the output of a /ListTables/ operation.+--+-- /See:/ 'listTablesResponse' smart constructor.+data ListTablesResponse = ListTablesResponse'+ { _ltrsLastEvaluatedTableName :: !(Maybe Text)+ , _ltrsTableNames :: !(Maybe [Text])+ , _ltrsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest ListTables where- type Sv ListTables = DynamoDB- type Rs ListTables = ListTablesResponse+-- | Creates a value of 'ListTablesResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ltrsLastEvaluatedTableName'+--+-- * 'ltrsTableNames'+--+-- * 'ltrsStatus'+listTablesResponse+ :: Int -- ^ 'ltrsStatus'+ -> ListTablesResponse+listTablesResponse pStatus_ =+ ListTablesResponse'+ { _ltrsLastEvaluatedTableName = Nothing+ , _ltrsTableNames = Nothing+ , _ltrsStatus = pStatus_+ } - request = post "ListTables"- response = jsonResponse+-- | The name of the last table in the current page of results. Use this+-- value as the /ExclusiveStartTableName/ in a new request to obtain the+-- next page of results, until all the table names are returned.+--+-- If you do not receive a /LastEvaluatedTableName/ value in the response,+-- this means that there are no more table names to be retrieved.+ltrsLastEvaluatedTableName :: Lens' ListTablesResponse (Maybe Text)+ltrsLastEvaluatedTableName = lens _ltrsLastEvaluatedTableName (\ s a -> s{_ltrsLastEvaluatedTableName = a}); -instance FromJSON ListTablesResponse where- parseJSON = withObject "ListTablesResponse" $ \o -> ListTablesResponse- <$> o .:? "LastEvaluatedTableName"- <*> o .:? "TableNames" .!= mempty+-- | The names of the tables associated with the current account at the+-- current endpoint. The maximum size of this array is 100.+--+-- If /LastEvaluatedTableName/ also appears in the output, you can use this+-- value as the /ExclusiveStartTableName/ parameter in a subsequent+-- /ListTables/ request and obtain the next page of results.+ltrsTableNames :: Lens' ListTablesResponse [Text]+ltrsTableNames = lens _ltrsTableNames (\ s a -> s{_ltrsTableNames = a}) . _Default . _Coerce; -instance AWSPager ListTables where- page rq rs- | stop (rs ^. ltrLastEvaluatedTableName) = Nothing- | otherwise = (\x -> rq & ltExclusiveStartTableName ?~ x)- <$> (rs ^. ltrLastEvaluatedTableName)+-- | The response status code.+ltrsStatus :: Lens' ListTablesResponse Int+ltrsStatus = lens _ltrsStatus (\ s a -> s{_ltrsStatus = a});
gen/Network/AWS/DynamoDB/PutItem.hs view
@@ -1,576 +1,636 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}+{-# 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.DynamoDB.PutItem--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Creates a new item, or replaces an old item with a new item. If an item that--- has the same primary key as the new item already exists in the specified--- table, the new item completely replaces the existing item. You can perform a--- conditional put operation (add a new item if one with the specified primary--- key doesn't exist), or replace an existing item if it has certain attribute--- values.+-- Creates a new item, or replaces an old item with a new item. If an item+-- that has the same primary key as the new item already exists in the+-- specified table, the new item completely replaces the existing item. You+-- can perform a conditional put operation (add a new item if one with the+-- specified primary key doesn\'t exist), or replace an existing item if it+-- has certain attribute values. ----- In addition to putting an item, you can also return the item's attribute--- values in the same operation, using the /ReturnValues/ parameter.+-- In addition to putting an item, you can also return the item\'s+-- attribute values in the same operation, using the /ReturnValues/+-- parameter. -- -- When you add an item, the primary key attribute(s) are the only required -- attributes. Attribute values cannot be null. String and Binary type--- attributes must have lengths greater than zero. Set type attributes cannot be--- empty. Requests with empty values will be rejected with a /ValidationException/--- exception.+-- attributes must have lengths greater than zero. Set type attributes+-- cannot be empty. Requests with empty values will be rejected with a+-- /ValidationException/ exception. -- -- You can request that /PutItem/ return either a copy of the original item--- (before the update) or a copy of the updated item (after the update). For--- more information, see the /ReturnValues/ description below.+-- (before the update) or a copy of the updated item (after the update).+-- For more information, see the /ReturnValues/ description below. -- -- To prevent a new item from replacing an existing item, use a conditional--- put operation with /ComparisonOperator/ set to 'NULL' for the primary key--- attribute, or attributes.+-- put operation with /ComparisonOperator/ set to 'NULL' for the primary+-- key attribute, or attributes. ----- For more information about using this API, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html Working with Items> in the /Amazon DynamoDB Developer Guide/.+-- For more information about using this API, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html Working with Items>+-- in the /Amazon DynamoDB Developer Guide/. ----- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html>+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html AWS API Reference> for PutItem. module Network.AWS.DynamoDB.PutItem (- -- * Request- PutItem- -- ** Request constructor- , putItem- -- ** Request lenses- , piConditionExpression- , piConditionalOperator- , piExpected+ -- * Creating a Request+ putItem+ , PutItem+ -- * Request Lenses+ , piReturnValues , piExpressionAttributeNames- , piExpressionAttributeValues- , piItem , piReturnConsumedCapacity+ , piExpressionAttributeValues , piReturnItemCollectionMetrics- , piReturnValues+ , piConditionExpression+ , piConditionalOperator+ , piExpected , piTableName+ , piItem - -- * Response- , PutItemResponse- -- ** Response constructor+ -- * Destructuring the Response , putItemResponse- -- ** Response lenses- , pirAttributes- , pirConsumedCapacity- , pirItemCollectionMetrics+ , PutItemResponse+ -- * Response Lenses+ , pirsConsumedCapacity+ , pirsItemCollectionMetrics+ , pirsAttributes+ , pirsStatus ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts--data PutItem = PutItem- { _piConditionExpression :: Maybe Text- , _piConditionalOperator :: Maybe ConditionalOperator- , _piExpected :: Map Text ExpectedAttributeValue- , _piExpressionAttributeNames :: Map Text Text- , _piExpressionAttributeValues :: Map Text AttributeValue- , _piItem :: Map Text AttributeValue- , _piReturnConsumedCapacity :: Maybe ReturnConsumedCapacity- , _piReturnItemCollectionMetrics :: Maybe ReturnItemCollectionMetrics- , _piReturnValues :: Maybe ReturnValue- , _piTableName :: Text- } deriving (Eq, Read, Show)+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response --- | 'PutItem' constructor.+-- | Represents the input of a /PutItem/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'putItem' smart constructor.+data PutItem = PutItem'+ { _piReturnValues :: !(Maybe ReturnValue)+ , _piExpressionAttributeNames :: !(Maybe (Map Text Text))+ , _piReturnConsumedCapacity :: !(Maybe ReturnConsumedCapacity)+ , _piExpressionAttributeValues :: !(Maybe (Map Text AttributeValue))+ , _piReturnItemCollectionMetrics :: !(Maybe ReturnItemCollectionMetrics)+ , _piConditionExpression :: !(Maybe Text)+ , _piConditionalOperator :: !(Maybe ConditionalOperator)+ , _piExpected :: !(Maybe (Map Text ExpectedAttributeValue))+ , _piTableName :: !Text+ , _piItem :: !(Map Text AttributeValue)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'PutItem' with the minimum fields required to make a request. ----- * 'piConditionExpression' @::@ 'Maybe' 'Text'+-- Use one of the following lenses to modify other fields as desired: ----- * 'piConditionalOperator' @::@ 'Maybe' 'ConditionalOperator'+-- * 'piReturnValues' ----- * 'piExpected' @::@ 'HashMap' 'Text' 'ExpectedAttributeValue'+-- * 'piExpressionAttributeNames' ----- * 'piExpressionAttributeNames' @::@ 'HashMap' 'Text' 'Text'+-- * 'piReturnConsumedCapacity' ----- * 'piExpressionAttributeValues' @::@ 'HashMap' 'Text' 'AttributeValue'+-- * 'piExpressionAttributeValues' ----- * 'piItem' @::@ 'HashMap' 'Text' 'AttributeValue'+-- * 'piReturnItemCollectionMetrics' ----- * 'piReturnConsumedCapacity' @::@ 'Maybe' 'ReturnConsumedCapacity'+-- * 'piConditionExpression' ----- * 'piReturnItemCollectionMetrics' @::@ 'Maybe' 'ReturnItemCollectionMetrics'+-- * 'piConditionalOperator' ----- * 'piReturnValues' @::@ 'Maybe' 'ReturnValue'+-- * 'piExpected' ----- * 'piTableName' @::@ 'Text'+-- * 'piTableName' ---putItem :: Text -- ^ 'piTableName'- -> PutItem-putItem p1 = PutItem- { _piTableName = p1- , _piItem = mempty- , _piExpected = mempty- , _piReturnValues = Nothing- , _piReturnConsumedCapacity = Nothing+-- * 'piItem'+putItem+ :: Text -- ^ 'piTableName'+ -> PutItem+putItem pTableName_ =+ PutItem'+ { _piReturnValues = Nothing+ , _piExpressionAttributeNames = Nothing+ , _piReturnConsumedCapacity = Nothing+ , _piExpressionAttributeValues = Nothing , _piReturnItemCollectionMetrics = Nothing- , _piConditionalOperator = Nothing- , _piConditionExpression = Nothing- , _piExpressionAttributeNames = mempty- , _piExpressionAttributeValues = mempty+ , _piConditionExpression = Nothing+ , _piConditionalOperator = Nothing+ , _piExpected = Nothing+ , _piTableName = pTableName_+ , _piItem = mempty } --- | A condition that must be satisfied in order for a conditional /PutItem/--- operation to succeed.------ An expression can contain any of the following:------ Boolean functions: 'attribute_exists | attribute_not_exists | contains |begins_with'------ These function names are case-sensitive.------ Comparison operators: ' = | <> | < | > | <= | >= | BETWEEN | IN'------ Logical operators: 'AND | OR | NOT'+-- | Use /ReturnValues/ if you want to get the item attributes as they+-- appeared before they were updated with the /PutItem/ request. For+-- /PutItem/, the valid values are: ----- For more information on condition expressions, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions>--- in the /Amazon DynamoDB Developer Guide/.+-- - 'NONE' - If /ReturnValues/ is not specified, or if its value is+-- 'NONE', then nothing is returned. (This setting is the default for+-- /ReturnValues/.) ----- /ConditionExpression/ replaces the legacy /ConditionalOperator/ and /Expected/--- parameters.+-- - 'ALL_OLD' - If /PutItem/ overwrote an attribute name-value pair,+-- then the content of the old item is returned. ---piConditionExpression :: Lens' PutItem (Maybe Text)-piConditionExpression =- lens _piConditionExpression (\s a -> s { _piConditionExpression = a })+-- Other \"Valid Values\" are not relevant to PutItem.+piReturnValues :: Lens' PutItem (Maybe ReturnValue)+piReturnValues = lens _piReturnValues (\ s a -> s{_piReturnValues = a}); --- | This is a legacy parameter, for backward compatibility. New applications--- should use /ConditionExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.------ A logical operator to apply to the conditions in the /Expected/ map:+-- | One or more substitution tokens for attribute names in an expression.+-- The following are some use cases for using /ExpressionAttributeNames/: ----- 'AND' - If all of the conditions evaluate to true, then the entire map--- evaluates to true.+-- - To access an attribute whose name conflicts with a DynamoDB reserved+-- word. ----- 'OR' - If at least one of the conditions evaluate to true, then the entire map--- evaluates to true.+-- - To create a placeholder for repeating occurrences of an attribute+-- name in an expression. ----- If you omit /ConditionalOperator/, then 'AND' is the default.+-- - To prevent special characters in an attribute name from being+-- misinterpreted in an expression. ----- The operation will succeed only if the entire map evaluates to true.+-- Use the __#__ character in an expression to dereference an attribute+-- name. For example, consider the following attribute name: ----- This parameter does not support attributes of type List or Map.+-- - 'Percentile' ---piConditionalOperator :: Lens' PutItem (Maybe ConditionalOperator)-piConditionalOperator =- lens _piConditionalOperator (\s a -> s { _piConditionalOperator = a })---- | This is a legacy parameter, for backward compatibility. New applications--- should use /ConditionExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.+-- The name of this attribute conflicts with a reserved word, so it cannot+-- be used directly in an expression. (For the complete list of reserved+-- words, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words>+-- in the /Amazon DynamoDB Developer Guide/). To work around this, you+-- could specify the following for /ExpressionAttributeNames/: ----- A map of attribute/condition pairs. /Expected/ provides a conditional block--- for the /PutItem/ operation.+-- - '{\"#P\":\"Percentile\"}' ----- This parameter does not support attributes of type List or Map.+-- You could then use this substitution in an expression, as in this+-- example: ----- Each element of /Expected/ consists of an attribute name, a comparison--- operator, and one or more values. DynamoDB compares the attribute with the--- value(s) you supplied, using the comparison operator. For each /Expected/--- element, the result of the evaluation is either true or false.+-- - '#P = :val' ----- If you specify more than one element in the /Expected/ map, then by default--- all of the conditions must evaluate to true. In other words, the conditions--- are ANDed together. (You can use the /ConditionalOperator/ parameter to OR the--- conditions instead. If you do this, then at least one of the conditions must--- evaluate to true, rather than all of them.)+-- Tokens that begin with the __:__ character are /expression attribute+-- values/, which are placeholders for the actual value at runtime. ----- If the /Expected/ map evaluates to true, then the conditional operation--- succeeds; otherwise, it fails.+-- For more information on expression attribute names, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/.+piExpressionAttributeNames :: Lens' PutItem (HashMap Text Text)+piExpressionAttributeNames = lens _piExpressionAttributeNames (\ s a -> s{_piExpressionAttributeNames = a}) . _Default . _Map;++-- | Undocumented member.+piReturnConsumedCapacity :: Lens' PutItem (Maybe ReturnConsumedCapacity)+piReturnConsumedCapacity = lens _piReturnConsumedCapacity (\ s a -> s{_piReturnConsumedCapacity = a});++-- | One or more values that can be substituted in an expression. ----- /Expected/ contains the following:+-- Use the __:__ (colon) character in an expression to dereference an+-- attribute value. For example, suppose that you wanted to check whether+-- the value of the /ProductStatus/ attribute was one of the following: ----- /AttributeValueList/ - One or more values to evaluate against the supplied--- attribute. The number of values in the list depends on the /ComparisonOperator/--- being used.+-- 'Available | Backordered | Discontinued' ----- For type Number, value comparisons are numeric.+-- You would first need to specify /ExpressionAttributeValues/ as follows: ----- String value comparisons for greater than, equals, or less than are based on--- ASCII character code values. For example, 'a' is greater than 'A', and 'a' is--- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.+-- '{ \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"} }' ----- For type Binary, DynamoDB treats each byte of the binary data as unsigned--- when it compares binary values.+-- You could then use these values in an expression, such as this: ----- /ComparisonOperator/ - A comparator for evaluating attributes in the /AttributeValueList/. When performing the comparison, DynamoDB uses strongly consistent reads.+-- 'ProductStatus IN (:avail, :back, :disc)' ----- The following comparison operators are available:+-- For more information on expression attribute values, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions>+-- in the /Amazon DynamoDB Developer Guide/.+piExpressionAttributeValues :: Lens' PutItem (HashMap Text AttributeValue)+piExpressionAttributeValues = lens _piExpressionAttributeValues (\ s a -> s{_piExpressionAttributeValues = a}) . _Default . _Map;++-- | Determines whether item collection metrics are returned. If set to+-- 'SIZE', the response includes statistics about item collections, if any,+-- that were modified during the operation are returned in the response. If+-- set to 'NONE' (the default), no statistics are returned.+piReturnItemCollectionMetrics :: Lens' PutItem (Maybe ReturnItemCollectionMetrics)+piReturnItemCollectionMetrics = lens _piReturnItemCollectionMetrics (\ s a -> s{_piReturnItemCollectionMetrics = a});++-- | A condition that must be satisfied in order for a conditional /PutItem/+-- operation to succeed. ----- 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |BEGINS_WITH | IN | BETWEEN'+-- An expression can contain any of the following: ----- The following are descriptions of each comparison operator.+-- - Functions:+-- 'attribute_exists | attribute_not_exists | attribute_type | contains | begins_with | size' ----- 'EQ' : Equal. 'EQ' is supported for all datatypes, including lists and maps.+-- These function names are case-sensitive. ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, Binary, String Set, Number Set, or Binary Set. If an item--- contains an /AttributeValue/ element of a different type than the one provided--- in the request, the value does not match. For example, '{"S":"6"}' does not--- equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.+-- - Comparison operators: ' = | \<> | \< | > | \<= | >= | BETWEEN | IN' --+-- - Logical operators: 'AND | OR | NOT' --+-- For more information on condition expressions, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions>+-- in the /Amazon DynamoDB Developer Guide/. ----- 'NE' : Not equal. 'NE' is supported for all datatypes, including lists and--- maps.+-- /ConditionExpression/ replaces the legacy /ConditionalOperator/ and+-- /Expected/ parameters.+piConditionExpression :: Lens' PutItem (Maybe Text)+piConditionExpression = lens _piConditionExpression (\ s a -> s{_piConditionExpression = a});++-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /ConditionExpression/ instead. Do not combine legacy+-- parameters and expression parameters in a single API call; otherwise,+-- DynamoDB will return a /ValidationException/ exception. ----- /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one provided in the request, the--- value does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.+-- A logical operator to apply to the conditions in the /Expected/ map: --+-- - 'AND' - If all of the conditions evaluate to true, then the entire+-- map evaluates to true. --+-- - 'OR' - If at least one of the conditions evaluate to true, then the+-- entire map evaluates to true. ----- 'LE' : Less than or equal.+-- If you omit /ConditionalOperator/, then 'AND' is the default. ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.+-- The operation will succeed only if the entire map evaluates to true. --+-- This parameter does not support attributes of type List or Map.+piConditionalOperator :: Lens' PutItem (Maybe ConditionalOperator)+piConditionalOperator = lens _piConditionalOperator (\ s a -> s{_piConditionalOperator = a});++-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /ConditionExpression/ instead. Do not combine legacy+-- parameters and expression parameters in a single API call; otherwise,+-- DynamoDB will return a /ValidationException/ exception. --+-- A map of attribute\/condition pairs. /Expected/ provides a conditional+-- block for the /PutItem/ operation. ----- 'LT' : Less than.+-- This parameter does not support attributes of type List or Map. ----- /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, or Binary (not a set type). If an item contains an /AttributeValue/--- element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.+-- Each element of /Expected/ consists of an attribute name, a comparison+-- operator, and one or more values. DynamoDB compares the attribute with+-- the value(s) you supplied, using the comparison operator. For each+-- /Expected/ element, the result of the evaluation is either true or+-- false. --+-- If you specify more than one element in the /Expected/ map, then by+-- default all of the conditions must evaluate to true. In other words, the+-- conditions are ANDed together. (You can use the /ConditionalOperator/+-- parameter to OR the conditions instead. If you do this, then at least+-- one of the conditions must evaluate to true, rather than all of them.) --+-- If the /Expected/ map evaluates to true, then the conditional operation+-- succeeds; otherwise, it fails. ----- 'GE' : Greater than or equal.+-- /Expected/ contains the following: ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.+-- - /AttributeValueList/ - One or more values to evaluate against the+-- supplied attribute. The number of values in the list depends on the+-- /ComparisonOperator/ being used. --+-- For type Number, value comparisons are numeric. --+-- String value comparisons for greater than, equals, or less than are+-- based on ASCII character code values. For example, 'a' is greater+-- than 'A', and 'a' is greater than 'B'. For a list of code values,+-- see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>. ----- 'GT' : Greater than.+-- For type Binary, DynamoDB treats each byte of the binary data as+-- unsigned when it compares binary values. ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.+-- - /ComparisonOperator/ - A comparator for evaluating attributes in the+-- /AttributeValueList/. When performing the comparison, DynamoDB uses+-- strongly consistent reads. --+-- The following comparison operators are available: --+-- 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN' ----- 'NOT_NULL' : The attribute exists. 'NOT_NULL' is supported for all datatypes,--- including lists and maps.+-- The following are descriptions of each comparison operator. ----- This operator tests for the existence of an attribute, not its data type. If--- the data type of attribute "'a'" is null, and you evaluate it using 'NOT_NULL',--- the result is a Boolean /true/. This result is because the attribute "'a'"--- exists; its data type is not relevant to the 'NOT_NULL' comparison operator.+-- - 'EQ' : Equal. 'EQ' is supported for all datatypes, including+-- lists and maps. ----- 'NULL' : The attribute does not exist. 'NULL' is supported for all datatypes,--- including lists and maps.+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, Binary, String Set, Number Set,+-- or Binary Set. If an item contains an /AttributeValue/ element+-- of a different type than the one provided in the request, the+-- value does not match. For example, '{\"S\":\"6\"}' does not+-- equal '{\"N\":\"6\"}'. Also, '{\"N\":\"6\"}' does not equal+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. ----- This operator tests for the nonexistence of an attribute, not its data type.--- If the data type of attribute "'a'" is null, and you evaluate it using 'NULL',--- the result is a Boolean /false/. This is because the attribute "'a'" exists; its--- data type is not relevant to the 'NULL' comparison operator.+-- - 'NE' : Not equal. 'NE' is supported for all datatypes, including+-- lists and maps. ----- 'CONTAINS' : Checks for a subsequence, or value in a set.+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String, Number, Binary, String Set, Number Set, or Binary+-- Set. If an item contains an /AttributeValue/ of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not equal+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If the target attribute of the--- comparison is of type String, then the operator checks for a substring match.--- If the target attribute of the comparison is of type Binary, then the--- operator looks for a subsequence of the target that matches the input. If the--- target attribute of the comparison is a set ("'SS'", "'NS'", or "'BS'"), then the--- operator evaluates to true if it finds an exact match with any member of the--- set.+-- - 'LE' : Less than or equal. ----- CONTAINS is supported for lists: When evaluating "'a CONTAINS b'", "'a'" can be--- a list; however, "'b'" cannot be a set, a map, or a list.+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. ----- 'NOT_CONTAINS' : Checks for absence of a subsequence, or absence of a value--- in a set.+-- - 'LT' : Less than. ----- /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If the target attribute of the--- comparison is a String, then the operator checks for the absence of a--- substring match. If the target attribute of the comparison is Binary, then--- the operator checks for the absence of a subsequence of the target that--- matches the input. If the target attribute of the comparison is a set ("'SS'", "'NS'", or "'BS'"), then the operator evaluates to true if it /does not/ find an--- exact match with any member of the set.+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String, Number, or Binary (not a set type). If an item+-- contains an /AttributeValue/ element of a different type than+-- the one provided in the request, the value does not match. For+-- example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. ----- NOT_CONTAINS is supported for lists: When evaluating "'a NOT CONTAINS b'", "'a'"--- can be a list; however, "'b'" cannot be a set, a map, or a list.+-- - 'GE' : Greater than or equal. ----- 'BEGINS_WITH' : Checks for a prefix.+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. ----- /AttributeValueList/ can contain only one /AttributeValue/ of type String or--- Binary (not a Number or a set type). The target attribute of the comparison--- must be of type String or Binary (not a Number or a set type).+-- - 'GT' : Greater than. --+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'. --+-- - 'NOT_NULL' : The attribute exists. 'NOT_NULL' is supported for+-- all datatypes, including lists and maps. ----- 'IN' : Checks for matching elements within two sets.+-- This operator tests for the existence of an attribute, not its+-- data type. If the data type of attribute \"'a'\" is null, and+-- you evaluate it using 'NOT_NULL', the result is a Boolean+-- /true/. This result is because the attribute \"'a'\" exists; its+-- data type is not relevant to the 'NOT_NULL' comparison operator. ----- /AttributeValueList/ can contain one or more /AttributeValue/ elements of type--- String, Number, or Binary (not a set type). These attributes are compared--- against an existing set type attribute of an item. If any elements of the--- input set are present in the item attribute, the expression evaluates to true.+-- - 'NULL' : The attribute does not exist. 'NULL' is supported for+-- all datatypes, including lists and maps. ----- 'BETWEEN' : Greater than or equal to the first value, and less than or equal--- to the second value.+-- This operator tests for the nonexistence of an attribute, not+-- its data type. If the data type of attribute \"'a'\" is null,+-- and you evaluate it using 'NULL', the result is a Boolean+-- /false/. This is because the attribute \"'a'\" exists; its data+-- type is not relevant to the 'NULL' comparison operator. ----- /AttributeValueList/ must contain two /AttributeValue/ elements of the same--- type, either String, Number, or Binary (not a set type). A target attribute--- matches if the target value is greater than, or equal to, the first element--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'+-- - 'CONTAINS' : Checks for a subsequence, or value in a set. ----- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters> in the /Amazon DynamoDB Developer Guide/.+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- the target attribute of the comparison is of type String, then+-- the operator checks for a substring match. If the target+-- attribute of the comparison is of type Binary, then the operator+-- looks for a subsequence of the target that matches the input. If+-- the target attribute of the comparison is a set (\"'SS'\",+-- \"'NS'\", or \"'BS'\"), then the operator evaluates to true if+-- it finds an exact match with any member of the set. ----- For backward compatibility with previous DynamoDB releases, the following--- parameters can be used instead of /AttributeValueList/ and /ComparisonOperator/:+-- CONTAINS is supported for lists: When evaluating+-- \"'a CONTAINS b'\", \"'a'\" can be a list; however, \"'b'\"+-- cannot be a set, a map, or a list. ----- /Value/ - A value for DynamoDB to compare with an attribute.+-- - 'NOT_CONTAINS' : Checks for absence of a subsequence, or absence+-- of a value in a set. ----- /Exists/ - A Boolean value that causes DynamoDB to evaluate the value before--- attempting the conditional operation:+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- the target attribute of the comparison is a String, then the+-- operator checks for the absence of a substring match. If the+-- target attribute of the comparison is Binary, then the operator+-- checks for the absence of a subsequence of the target that+-- matches the input. If the target attribute of the comparison is+-- a set (\"'SS'\", \"'NS'\", or \"'BS'\"), then the operator+-- evaluates to true if it /does not/ find an exact match with any+-- member of the set. ----- If /Exists/ is 'true', DynamoDB will check to see if that attribute value--- already exists in the table. If it is found, then the condition evaluates to--- true; otherwise the condition evaluate to false.+-- NOT_CONTAINS is supported for lists: When evaluating+-- \"'a NOT CONTAINS b'\", \"'a'\" can be a list; however, \"'b'\"+-- cannot be a set, a map, or a list. ----- If /Exists/ is 'false', DynamoDB assumes that the attribute value does /not/--- exist in the table. If in fact the value does not exist, then the assumption--- is valid and the condition evaluates to true. If the value is found, despite--- the assumption that it does not exist, the condition evaluates to false.+-- - 'BEGINS_WITH' : Checks for a prefix. ----- Note that the default value for /Exists/ is 'true'.+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String or Binary (not a Number or a set type). The target+-- attribute of the comparison must be of type String or Binary+-- (not a Number or a set type). ----- The /Value/ and /Exists/ parameters are incompatible with /AttributeValueList/--- and /ComparisonOperator/. Note that if you use both sets of parameters at once,--- DynamoDB will return a /ValidationException/ exception.-piExpected :: Lens' PutItem (HashMap Text ExpectedAttributeValue)-piExpected = lens _piExpected (\s a -> s { _piExpected = a }) . _Map---- | One or more substitution tokens for attribute names in an expression. The--- following are some use cases for using /ExpressionAttributeNames/:+-- - 'IN' : Checks for matching elements within two sets. ----- To access an attribute whose name conflicts with a DynamoDB reserved word.+-- /AttributeValueList/ can contain one or more /AttributeValue/+-- elements of type String, Number, or Binary (not a set type).+-- These attributes are compared against an existing set type+-- attribute of an item. If any elements of the input set are+-- present in the item attribute, the expression evaluates to true. ----- To create a placeholder for repeating occurrences of an attribute name in--- an expression.+-- - 'BETWEEN' : Greater than or equal to the first value, and less+-- than or equal to the second value. ----- To prevent special characters in an attribute name from being--- misinterpreted in an expression.+-- /AttributeValueList/ must contain two /AttributeValue/ elements+-- of the same type, either String, Number, or Binary (not a set+-- type). A target attribute matches if the target value is greater+-- than, or equal to, the first element and less than, or equal to,+-- the second element. If an item contains an /AttributeValue/+-- element of a different type than the one provided in the+-- request, the value does not match. For example, '{\"S\":\"6\"}'+-- does not compare to '{\"N\":\"6\"}'. Also, '{\"N\":\"6\"}' does+-- not compare to '{\"NS\":[\"6\", \"2\", \"1\"]}' ----- Use the # character in an expression to dereference an attribute name. For--- example, consider the following attribute name:+-- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters>+-- in the /Amazon DynamoDB Developer Guide/. ----- 'Percentile'+-- For backward compatibility with previous DynamoDB releases, the+-- following parameters can be used instead of /AttributeValueList/ and+-- /ComparisonOperator/: ----- The name of this attribute conflicts with a reserved word, so it cannot be--- used directly in an expression. (For the complete list of reserved words, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around this,--- you could specify the following for /ExpressionAttributeNames/:+-- - /Value/ - A value for DynamoDB to compare with an attribute. ----- '{"#P":"Percentile"}'+-- - /Exists/ - A Boolean value that causes DynamoDB to evaluate the+-- value before attempting the conditional operation: ----- You could then use this substitution in an expression, as in this example:+-- - If /Exists/ is 'true', DynamoDB will check to see if that+-- attribute value already exists in the table. If it is found,+-- then the condition evaluates to true; otherwise the condition+-- evaluate to false. ----- '#P = :val'+-- - If /Exists/ is 'false', DynamoDB assumes that the attribute+-- value does /not/ exist in the table. If in fact the value does+-- not exist, then the assumption is valid and the condition+-- evaluates to true. If the value is found, despite the assumption+-- that it does not exist, the condition evaluates to false. ----- Tokens that begin with the : character are /expression attribute values/,--- which are placeholders for the actual value at runtime.+-- Note that the default value for /Exists/ is 'true'. ----- For more information on expression attribute names, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.-piExpressionAttributeNames :: Lens' PutItem (HashMap Text Text)-piExpressionAttributeNames =- lens _piExpressionAttributeNames- (\s a -> s { _piExpressionAttributeNames = a })- . _Map+-- The /Value/ and /Exists/ parameters are incompatible with+-- /AttributeValueList/ and /ComparisonOperator/. Note that if you use both+-- sets of parameters at once, DynamoDB will return a /ValidationException/+-- exception.+piExpected :: Lens' PutItem (HashMap Text ExpectedAttributeValue)+piExpected = lens _piExpected (\ s a -> s{_piExpected = a}) . _Default . _Map; --- | One or more values that can be substituted in an expression.------ Use the : (colon) character in an expression to dereference an attribute--- value. For example, suppose that you wanted to check whether the value of the /ProductStatus/ attribute was one of the following:------ 'Available | Backordered | Discontinued'------ You would first need to specify /ExpressionAttributeValues/ as follows:------ '{ ":avail":{"S":"Available"}, ":back":{"S":"Backordered"},":disc":{"S":"Discontinued"} }'------ You could then use these values in an expression, such as this:------ 'ProductStatus IN (:avail, :back, :disc)'------ For more information on expression attribute values, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.-piExpressionAttributeValues :: Lens' PutItem (HashMap Text AttributeValue)-piExpressionAttributeValues =- lens _piExpressionAttributeValues- (\s a -> s { _piExpressionAttributeValues = a })- . _Map+-- | The name of the table to contain the item.+piTableName :: Lens' PutItem Text+piTableName = lens _piTableName (\ s a -> s{_piTableName = a}); --- | A map of attribute name/value pairs, one for each attribute. Only the primary--- key attributes are required; you can optionally provide other attribute--- name-value pairs for the item.+-- | A map of attribute name\/value pairs, one for each attribute. Only the+-- primary key attributes are required; you can optionally provide other+-- attribute name-value pairs for the item. -- -- You must provide all of the attributes for the primary key. For example,--- with a hash type primary key, you only need to provide the hash attribute.--- For a hash-and-range type primary key, you must provide both the hash--- attribute and the range attribute.+-- with a hash type primary key, you only need to provide the hash+-- attribute. For a hash-and-range type primary key, you must provide both+-- the hash attribute and the range attribute. ----- If you specify any attributes that are part of an index key, then the data--- types for those attributes must match those of the schema in the table's--- attribute definition.+-- If you specify any attributes that are part of an index key, then the+-- data types for those attributes must match those of the schema in the+-- table\'s attribute definition. ----- For more information about primary keys, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModelPrimaryKey Primary Key> in the /AmazonDynamoDB Developer Guide/.+-- For more information about primary keys, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModelPrimaryKey Primary Key>+-- in the /Amazon DynamoDB Developer Guide/. -- -- Each element in the /Item/ map is an /AttributeValue/ object. piItem :: Lens' PutItem (HashMap Text AttributeValue)-piItem = lens _piItem (\s a -> s { _piItem = a }) . _Map+piItem = lens _piItem (\ s a -> s{_piItem = a}) . _Map; -piReturnConsumedCapacity :: Lens' PutItem (Maybe ReturnConsumedCapacity)-piReturnConsumedCapacity =- lens _piReturnConsumedCapacity- (\s a -> s { _piReturnConsumedCapacity = a })+instance AWSRequest PutItem where+ type Sv PutItem = DynamoDB+ type Rs PutItem = PutItemResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ PutItemResponse' <$>+ (x .?> "ConsumedCapacity") <*>+ (x .?> "ItemCollectionMetrics")+ <*> (x .?> "Attributes" .!@ mempty)+ <*> (pure (fromEnum s))) --- | A value that if set to 'SIZE', the response includes statistics about item--- collections, if any, that were modified during the operation are returned in--- the response. If set to 'NONE' (the default), no statistics are returned.-piReturnItemCollectionMetrics :: Lens' PutItem (Maybe ReturnItemCollectionMetrics)-piReturnItemCollectionMetrics =- lens _piReturnItemCollectionMetrics- (\s a -> s { _piReturnItemCollectionMetrics = a })+instance ToHeaders PutItem where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.PutItem" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)]) --- | Use /ReturnValues/ if you want to get the item attributes as they appeared--- before they were updated with the /PutItem/ request. For /PutItem/, the valid--- values are:------ 'NONE' - If /ReturnValues/ is not specified, or if its value is 'NONE', then--- nothing is returned. (This setting is the default for /ReturnValues/.)------ 'ALL_OLD' - If /PutItem/ overwrote an attribute name-value pair, then the--- content of the old item is returned.-------piReturnValues :: Lens' PutItem (Maybe ReturnValue)-piReturnValues = lens _piReturnValues (\s a -> s { _piReturnValues = a })+instance ToJSON PutItem where+ toJSON PutItem'{..}+ = object+ ["ReturnValues" .= _piReturnValues,+ "ExpressionAttributeNames" .=+ _piExpressionAttributeNames,+ "ReturnConsumedCapacity" .=+ _piReturnConsumedCapacity,+ "ExpressionAttributeValues" .=+ _piExpressionAttributeValues,+ "ReturnItemCollectionMetrics" .=+ _piReturnItemCollectionMetrics,+ "ConditionExpression" .= _piConditionExpression,+ "ConditionalOperator" .= _piConditionalOperator,+ "Expected" .= _piExpected,+ "TableName" .= _piTableName, "Item" .= _piItem] --- | The name of the table to contain the item.-piTableName :: Lens' PutItem Text-piTableName = lens _piTableName (\s a -> s { _piTableName = a })+instance ToPath PutItem where+ toPath = const "/" -data PutItemResponse = PutItemResponse- { _pirAttributes :: Map Text AttributeValue- , _pirConsumedCapacity :: Maybe ConsumedCapacity- , _pirItemCollectionMetrics :: Maybe ItemCollectionMetrics- } deriving (Eq, Read, Show)+instance ToQuery PutItem where+ toQuery = const mempty --- | 'PutItemResponse' constructor.+-- | Represents the output of a /PutItem/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'putItemResponse' smart constructor.+data PutItemResponse = PutItemResponse'+ { _pirsConsumedCapacity :: !(Maybe ConsumedCapacity)+ , _pirsItemCollectionMetrics :: !(Maybe ItemCollectionMetrics)+ , _pirsAttributes :: !(Maybe (Map Text AttributeValue))+ , _pirsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'PutItemResponse' with the minimum fields required to make a request. ----- * 'pirAttributes' @::@ 'HashMap' 'Text' 'AttributeValue'+-- Use one of the following lenses to modify other fields as desired: ----- * 'pirConsumedCapacity' @::@ 'Maybe' 'ConsumedCapacity'+-- * 'pirsConsumedCapacity' ----- * 'pirItemCollectionMetrics' @::@ 'Maybe' 'ItemCollectionMetrics'+-- * 'pirsItemCollectionMetrics' ---putItemResponse :: PutItemResponse-putItemResponse = PutItemResponse- { _pirAttributes = mempty- , _pirConsumedCapacity = Nothing- , _pirItemCollectionMetrics = Nothing+-- * 'pirsAttributes'+--+-- * 'pirsStatus'+putItemResponse+ :: Int -- ^ 'pirsStatus'+ -> PutItemResponse+putItemResponse pStatus_ =+ PutItemResponse'+ { _pirsConsumedCapacity = Nothing+ , _pirsItemCollectionMetrics = Nothing+ , _pirsAttributes = Nothing+ , _pirsStatus = pStatus_ } --- | The attribute values as they appeared before the /PutItem/ operation, but only--- if /ReturnValues/ is specified as 'ALL_OLD' in the request. Each element consists--- of an attribute name and an attribute value.-pirAttributes :: Lens' PutItemResponse (HashMap Text AttributeValue)-pirAttributes = lens _pirAttributes (\s a -> s { _pirAttributes = a }) . _Map--pirConsumedCapacity :: Lens' PutItemResponse (Maybe ConsumedCapacity)-pirConsumedCapacity =- lens _pirConsumedCapacity (\s a -> s { _pirConsumedCapacity = a })+-- | Undocumented member.+pirsConsumedCapacity :: Lens' PutItemResponse (Maybe ConsumedCapacity)+pirsConsumedCapacity = lens _pirsConsumedCapacity (\ s a -> s{_pirsConsumedCapacity = a}); -- | Information about item collections, if any, that were affected by the--- operation. /ItemCollectionMetrics/ is only returned if the request asked for--- it. If the table does not have any local secondary indexes, this information--- is not returned in the response.+-- operation. /ItemCollectionMetrics/ is only returned if the request asked+-- for it. If the table does not have any local secondary indexes, this+-- information is not returned in the response. -- -- Each /ItemCollectionMetrics/ element consists of: ----- /ItemCollectionKey/ - The hash key value of the item collection. This is the--- same as the hash key of the item.------ /SizeEstimateRange/ - An estimate of item collection size, in gigabytes. This--- value is a two-element array containing a lower bound and an upper bound for--- the estimate. The estimate includes the size of all the items in the table,--- plus the size of all attributes projected into all of the local secondary--- indexes on that table. Use this estimate to measure whether a local secondary--- index is approaching its size limit.+-- - /ItemCollectionKey/ - The hash key value of the item collection.+-- This is the same as the hash key of the item. ----- The estimate is subject to change over time; therefore, do not rely on the--- precision or accuracy of the estimate.+-- - /SizeEstimateRange/ - An estimate of item collection size, in+-- gigabytes. This value is a two-element array containing a lower+-- bound and an upper bound for the estimate. The estimate includes the+-- size of all the items in the table, plus the size of all attributes+-- projected into all of the local secondary indexes on that table. Use+-- this estimate to measure whether a local secondary index is+-- approaching its size limit. --+-- The estimate is subject to change over time; therefore, do not rely+-- on the precision or accuracy of the estimate. ---pirItemCollectionMetrics :: Lens' PutItemResponse (Maybe ItemCollectionMetrics)-pirItemCollectionMetrics =- lens _pirItemCollectionMetrics- (\s a -> s { _pirItemCollectionMetrics = a })--instance ToPath PutItem where- toPath = const "/"--instance ToQuery PutItem where- toQuery = const mempty--instance ToHeaders PutItem--instance ToJSON PutItem where- toJSON PutItem{..} = object- [ "TableName" .= _piTableName- , "Item" .= _piItem- , "Expected" .= _piExpected- , "ReturnValues" .= _piReturnValues- , "ReturnConsumedCapacity" .= _piReturnConsumedCapacity- , "ReturnItemCollectionMetrics" .= _piReturnItemCollectionMetrics- , "ConditionalOperator" .= _piConditionalOperator- , "ConditionExpression" .= _piConditionExpression- , "ExpressionAttributeNames" .= _piExpressionAttributeNames- , "ExpressionAttributeValues" .= _piExpressionAttributeValues- ]--instance AWSRequest PutItem where- type Sv PutItem = DynamoDB- type Rs PutItem = PutItemResponse+pirsItemCollectionMetrics :: Lens' PutItemResponse (Maybe ItemCollectionMetrics)+pirsItemCollectionMetrics = lens _pirsItemCollectionMetrics (\ s a -> s{_pirsItemCollectionMetrics = a}); - request = post "PutItem"- response = jsonResponse+-- | The attribute values as they appeared before the /PutItem/ operation,+-- but only if /ReturnValues/ is specified as 'ALL_OLD' in the request.+-- Each element consists of an attribute name and an attribute value.+pirsAttributes :: Lens' PutItemResponse (HashMap Text AttributeValue)+pirsAttributes = lens _pirsAttributes (\ s a -> s{_pirsAttributes = a}) . _Default . _Map; -instance FromJSON PutItemResponse where- parseJSON = withObject "PutItemResponse" $ \o -> PutItemResponse- <$> o .:? "Attributes" .!= mempty- <*> o .:? "ConsumedCapacity"- <*> o .:? "ItemCollectionMetrics"+-- | The response status code.+pirsStatus :: Lens' PutItemResponse Int+pirsStatus = lens _pirsStatus (\ s a -> s{_pirsStatus = a});
gen/Network/AWS/DynamoDB/Query.hs view
@@ -1,759 +1,848 @@-{-# 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.DynamoDB.Query--- 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)------ Derived from AWS service descriptions, licensed under Apache 2.0.---- | A /Query/ operation uses the primary key of a table or a secondary index to--- directly access items from that table or index.------ Use the /KeyConditionExpression/ parameter to provide a specific hash key--- value. The /Query/ operation will return all of the items from the table or--- index with that hash key value. You can optionally narrow the scope of the /Query/ by specifying a range key value and a comparison operator in the /KeyConditionExpression/. You can use the /ScanIndexForward/ parameter to get results in forward or--- reverse order, by range key or by index key.------ Queries that do not return results consume the minimum number of read--- capacity units for that type of read operation.------ If the total number of items meeting the query criteria exceeds the result--- set size limit of 1 MB, the query stops and results are returned to the user--- with /LastEvaluatedKey/ to continue the query in a subsequent operation. Unlike--- a /Scan/ operation, a /Query/ operation never returns both an empty result set--- and a /LastEvaluatedKey/. The /LastEvaluatedKey/ is only provided if the results--- exceed 1 MB, or if you have used /Limit/.------ You can query a table, a local secondary index, or a global secondary index.--- For a query on a table or on a local secondary index, you can set /ConsistentRead/ to true and obtain a strongly consistent result. Global secondary indexes--- support eventually consistent reads only, so do not specify /ConsistentRead/--- when querying a global secondary index.------ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html>-module Network.AWS.DynamoDB.Query- (- -- * Request- Query- -- ** Request constructor- , query- -- ** Request lenses- , qAttributesToGet- , qConditionalOperator- , qConsistentRead- , qExclusiveStartKey- , qExpressionAttributeNames- , qExpressionAttributeValues- , qFilterExpression- , qIndexName- , qKeyConditionExpression- , qKeyConditions- , qLimit- , qProjectionExpression- , qQueryFilter- , qReturnConsumedCapacity- , qScanIndexForward- , qSelect- , qTableName-- -- * Response- , QueryResponse- -- ** Response constructor- , queryResponse- -- ** Response lenses- , qrConsumedCapacity- , qrCount- , qrItems- , qrLastEvaluatedKey- , qrScannedCount- ) where--import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts--data Query = Query- { _qAttributesToGet :: List1 "AttributesToGet" Text- , _qConditionalOperator :: Maybe ConditionalOperator- , _qConsistentRead :: Maybe Bool- , _qExclusiveStartKey :: Map Text AttributeValue- , _qExpressionAttributeNames :: Map Text Text- , _qExpressionAttributeValues :: Map Text AttributeValue- , _qFilterExpression :: Maybe Text- , _qIndexName :: Maybe Text- , _qKeyConditionExpression :: Maybe Text- , _qKeyConditions :: Map Text Condition- , _qLimit :: Maybe Nat- , _qProjectionExpression :: Maybe Text- , _qQueryFilter :: Map Text Condition- , _qReturnConsumedCapacity :: Maybe ReturnConsumedCapacity- , _qScanIndexForward :: Maybe Bool- , _qSelect :: Maybe Select- , _qTableName :: Text- } deriving (Eq, Read, Show)---- | 'Query' constructor.------ The fields accessible through corresponding lenses are:------ * 'qAttributesToGet' @::@ 'NonEmpty' 'Text'------ * 'qConditionalOperator' @::@ 'Maybe' 'ConditionalOperator'------ * 'qConsistentRead' @::@ 'Maybe' 'Bool'------ * 'qExclusiveStartKey' @::@ 'HashMap' 'Text' 'AttributeValue'------ * 'qExpressionAttributeNames' @::@ 'HashMap' 'Text' 'Text'------ * 'qExpressionAttributeValues' @::@ 'HashMap' 'Text' 'AttributeValue'------ * 'qFilterExpression' @::@ 'Maybe' 'Text'------ * 'qIndexName' @::@ 'Maybe' 'Text'------ * 'qKeyConditionExpression' @::@ 'Maybe' 'Text'------ * 'qKeyConditions' @::@ 'HashMap' 'Text' 'Condition'------ * 'qLimit' @::@ 'Maybe' 'Natural'------ * 'qProjectionExpression' @::@ 'Maybe' 'Text'------ * 'qQueryFilter' @::@ 'HashMap' 'Text' 'Condition'------ * 'qReturnConsumedCapacity' @::@ 'Maybe' 'ReturnConsumedCapacity'------ * 'qScanIndexForward' @::@ 'Maybe' 'Bool'------ * 'qSelect' @::@ 'Maybe' 'Select'------ * 'qTableName' @::@ 'Text'----query :: Text -- ^ 'qTableName'- -> NonEmpty Text -- ^ 'qAttributesToGet'- -> Query-query p1 p2 = Query- { _qTableName = p1- , _qAttributesToGet = withIso _List1 (const id) p2- , _qIndexName = Nothing- , _qSelect = Nothing- , _qLimit = Nothing- , _qConsistentRead = Nothing- , _qKeyConditions = mempty- , _qQueryFilter = mempty- , _qConditionalOperator = Nothing- , _qScanIndexForward = Nothing- , _qExclusiveStartKey = mempty- , _qReturnConsumedCapacity = Nothing- , _qProjectionExpression = Nothing- , _qFilterExpression = Nothing- , _qKeyConditionExpression = Nothing- , _qExpressionAttributeNames = mempty- , _qExpressionAttributeValues = mempty- }---- | This is a legacy parameter, for backward compatibility. New applications--- should use /ProjectionExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.------ This parameter allows you to retrieve attributes of type List or Map;--- however, it cannot retrieve individual elements within a List or a Map.------ The names of one or more attributes to retrieve. If no attribute names are--- provided, then all attributes will be returned. If any of the requested--- attributes are not found, they will not appear in the result.------ Note that /AttributesToGet/ has no effect on provisioned throughput--- consumption. DynamoDB determines capacity units consumed based on item size,--- not on the amount of data that is returned to an application.------ You cannot use both /AttributesToGet/ and /Select/ together in a /Query/ request, /unless/ the value for /Select/ is 'SPECIFIC_ATTRIBUTES'. (This usage is equivalent to--- specifying /AttributesToGet/ without any value for /Select/.)------ If you query a local secondary index and request only attributes that are--- projected into that index, the operation will read only the index and not the--- table. If any of the requested attributes are not projected into the local--- secondary index, DynamoDB will fetch each of these attributes from the parent--- table. This extra fetching incurs additional throughput cost and latency.------ If you query a global secondary index, you can only request attributes that--- are projected into the index. Global secondary index queries cannot fetch--- attributes from the parent table.-qAttributesToGet :: Lens' Query (NonEmpty Text)-qAttributesToGet = lens _qAttributesToGet (\s a -> s { _qAttributesToGet = a }) . _List1---- | This is a legacy parameter, for backward compatibility. New applications--- should use /FilterExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.------ A logical operator to apply to the conditions in a /QueryFilter/ map:------ 'AND' - If all of the conditions evaluate to true, then the entire map--- evaluates to true.------ 'OR' - If at least one of the conditions evaluate to true, then the entire map--- evaluates to true.------ If you omit /ConditionalOperator/, then 'AND' is the default.------ The operation will succeed only if the entire map evaluates to true.------ This parameter does not support attributes of type List or Map.----qConditionalOperator :: Lens' Query (Maybe ConditionalOperator)-qConditionalOperator =- lens _qConditionalOperator (\s a -> s { _qConditionalOperator = a })---- | A value that if set to 'true', then the operation uses strongly consistent--- reads; otherwise, eventually consistent reads are used.------ Strongly consistent reads are not supported on global secondary indexes. If--- you query a global secondary index with /ConsistentRead/ set to 'true', you will--- receive an error message.-qConsistentRead :: Lens' Query (Maybe Bool)-qConsistentRead = lens _qConsistentRead (\s a -> s { _qConsistentRead = a })---- | The primary key of the first item that this operation will evaluate. Use the--- value that was returned for /LastEvaluatedKey/ in the previous operation.------ The data type for /ExclusiveStartKey/ must be String, Number or Binary. No set--- data types are allowed.-qExclusiveStartKey :: Lens' Query (HashMap Text AttributeValue)-qExclusiveStartKey =- lens _qExclusiveStartKey (\s a -> s { _qExclusiveStartKey = a })- . _Map---- | One or more substitution tokens for attribute names in an expression. The--- following are some use cases for using /ExpressionAttributeNames/:------ To access an attribute whose name conflicts with a DynamoDB reserved word.------ To create a placeholder for repeating occurrences of an attribute name in--- an expression.------ To prevent special characters in an attribute name from being--- misinterpreted in an expression.------ Use the # character in an expression to dereference an attribute name. For--- example, consider the following attribute name:------ 'Percentile'------ The name of this attribute conflicts with a reserved word, so it cannot be--- used directly in an expression. (For the complete list of reserved words, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around this,--- you could specify the following for /ExpressionAttributeNames/:------ '{"#P":"Percentile"}'------ You could then use this substitution in an expression, as in this example:------ '#P = :val'------ Tokens that begin with the : character are /expression attribute values/,--- which are placeholders for the actual value at runtime.------ For more information on expression attribute names, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.-qExpressionAttributeNames :: Lens' Query (HashMap Text Text)-qExpressionAttributeNames =- lens _qExpressionAttributeNames- (\s a -> s { _qExpressionAttributeNames = a })- . _Map---- | One or more values that can be substituted in an expression.------ Use the : (colon) character in an expression to dereference an attribute--- value. For example, suppose that you wanted to check whether the value of the /ProductStatus/ attribute was one of the following:------ 'Available | Backordered | Discontinued'------ You would first need to specify /ExpressionAttributeValues/ as follows:------ '{ ":avail":{"S":"Available"}, ":back":{"S":"Backordered"},":disc":{"S":"Discontinued"} }'------ You could then use these values in an expression, such as this:------ 'ProductStatus IN (:avail, :back, :disc)'------ For more information on expression attribute values, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.-qExpressionAttributeValues :: Lens' Query (HashMap Text AttributeValue)-qExpressionAttributeValues =- lens _qExpressionAttributeValues- (\s a -> s { _qExpressionAttributeValues = a })- . _Map---- | A string that contains conditions that DynamoDB applies after the /Query/--- operation, but before the data is returned to you. Items that do not satisfy--- the /FilterExpression/ criteria are not returned.------ A /FilterExpression/ is applied after the items have already been read; the--- process of filtering does not consume any additional read capacity units.------ For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults Filter Expressions> in the /Amazon DynamoDBDeveloper Guide/.------ /FilterExpression/ replaces the legacy /QueryFilter/ and /ConditionalOperator/--- parameters.----qFilterExpression :: Lens' Query (Maybe Text)-qFilterExpression =- lens _qFilterExpression (\s a -> s { _qFilterExpression = a })---- | The name of an index to query. This index can be any local secondary index or--- global secondary index on the table. Note that if you use the /IndexName/--- parameter, you must also provide /TableName./-qIndexName :: Lens' Query (Maybe Text)-qIndexName = lens _qIndexName (\s a -> s { _qIndexName = a })---- | The condition that specifies the key value(s) for items to be retrieved by--- the /Query/ action.------ The condition must perform an equality test on a single hash key value. The--- condition can also test for one or more range key values. A /Query/ can use /KeyConditionExpression/ to retrieve a single item with a given hash and range key value, or several--- items that have the same hash key value but different range key values.------ The hash key equality test is required, and must be specified in the--- following format:------ 'hashAttributeName' /=/ ':hashval'------ If you also want to provide a range key condition, it must be combined using /AND/ with the hash key condition. Following is an example, using the =--- comparison operator for the range key:------ 'hashAttributeName' /=/ ':hashval' /AND/ 'rangeAttributeName' /=/ ':rangeval'------ Valid comparisons for the range key condition are as follows:------ 'rangeAttributeName' /=/ ':rangeval' - true if the range key is equal to ':rangeval'.------ 'rangeAttributeName' /</ ':rangeval' - true if the range key is less than ':rangeval'.------ 'rangeAttributeName' /<=/ ':rangeval' - true if the range key is less than or--- equal to ':rangeval'.------ 'rangeAttributeName' />/ ':rangeval' - true if the range key is greater than ':rangeval'.------ 'rangeAttributeName' />= /':rangeval' - true if the range key is greater than or--- equal to ':rangeval'.------ 'rangeAttributeName' /BETWEEN/ ':rangeval1' /AND/ ':rangeval2' - true if the range--- key is less than or greater than ':rangeval1', and less than or equal to ':rangeval2'.------ /begins_with (/'rangeAttributeName', ':rangeval'/)/ - true if the range key begins--- with a particular operand. Note that the function name 'begins_with' is--- case-sensitive.------ Use the /ExpressionAttributeValues/ parameter to replace tokens such as ':hashval' and ':rangeval' with actual values at runtime.------ You can optionally use the /ExpressionAttributeNames/ parameter to replace the--- names of the hash and range attributes with placeholder tokens. This might be--- necessary if an attribute name conflicts with a DynamoDB reserved word. For--- example, the following /KeyConditionExpression/ causes an error because /Size/ is--- a reserved word:------ 'Size = :myval' To work around this, define a placeholder (such a '#myval')--- to represent the attribute name /Size/. /KeyConditionExpression/ then is as--- follows:------ '#S = :myval' For a list of reserved words, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/.------ For more information on /ExpressionAttributeNames/ and /ExpressionAttributeValues/, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html Using Placeholders for Attribute Names and Values> in the /AmazonDynamoDB Developer Guide/.------ /KeyConditionExpression/ replaces the legacy /KeyConditions/ parameter.-------qKeyConditionExpression :: Lens' Query (Maybe Text)-qKeyConditionExpression =- lens _qKeyConditionExpression (\s a -> s { _qKeyConditionExpression = a })---- | This is a legacy parameter, for backward compatibility. New applications--- should use /KeyConditionExpression/ instead. Do not combine legacy parameters--- and expression parameters in a single API call; otherwise, DynamoDB will--- return a /ValidationException/ exception.------ The selection criteria for the query. For a query on a table, you can have--- conditions only on the table primary key attributes. You must provide the--- hash key attribute name and value as an 'EQ' condition. You can optionally--- provide a second condition, referring to the range key attribute.------ If you don't provide a range key condition, all of the items that match the--- hash key will be retrieved. If a /FilterExpression/ or /QueryFilter/ is present,--- it will be applied after the items are retrieved.------ For a query on an index, you can have conditions only on the index key--- attributes. You must provide the index hash attribute name and value as an 'EQ'--- condition. You can optionally provide a second condition, referring to the--- index key range attribute.------ Each /KeyConditions/ element consists of an attribute name to compare, along--- with the following:------ /AttributeValueList/ - One or more values to evaluate against the supplied--- attribute. The number of values in the list depends on the /ComparisonOperator/--- being used.------ For type Number, value comparisons are numeric.------ String value comparisons for greater than, equals, or less than are based on--- ASCII character code values. For example, 'a' is greater than 'A', and 'a' is--- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.------ For Binary, DynamoDB treats each byte of the binary data as unsigned when it--- compares binary values.------ /ComparisonOperator/ - A comparator for evaluating attributes, for example,--- equals, greater than, less than, and so on.------ For /KeyConditions/, only the following comparison operators are supported:------ 'EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN'------ The following are descriptions of these comparison operators.------ 'EQ' : Equal.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, or Binary (not a set type). If an item contains an /AttributeValue/--- element of a different type than the one specified in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.------------ 'LE' : Less than or equal.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'LT' : Less than.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, or Binary (not a set type). If an item contains an /AttributeValue/--- element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'GE' : Greater than or equal.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'GT' : Greater than.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'BEGINS_WITH' : Checks for a prefix.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String or--- Binary (not a Number or a set type). The target attribute of the comparison--- must be of type String or Binary (not a Number or a set type).------------ 'BETWEEN' : Greater than or equal to the first value, and less than or equal--- to the second value.------ /AttributeValueList/ must contain two /AttributeValue/ elements of the same--- type, either String, Number, or Binary (not a set type). A target attribute--- matches if the target value is greater than, or equal to, the first element--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'------ For usage examples of /AttributeValueList/ and /ComparisonOperator/, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters> in the /Amazon DynamoDB Developer Guide/.-qKeyConditions :: Lens' Query (HashMap Text Condition)-qKeyConditions = lens _qKeyConditions (\s a -> s { _qKeyConditions = a }) . _Map---- | The maximum number of items to evaluate (not necessarily the number of--- matching items). If DynamoDB processes the number of items up to the limit--- while processing the results, it stops the operation and returns the matching--- values up to that point, and a key in /LastEvaluatedKey/ to apply in a--- subsequent operation, so that you can pick up where you left off. Also, if--- the processed data set size exceeds 1 MB before DynamoDB reaches this limit,--- it stops the operation and returns the matching values up to the limit, and a--- key in /LastEvaluatedKey/ to apply in a subsequent operation to continue the--- operation. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html Query and Scan> in the /Amazon DynamoDBDeveloper Guide/.-qLimit :: Lens' Query (Maybe Natural)-qLimit = lens _qLimit (\s a -> s { _qLimit = a }) . mapping _Nat---- | A string that identifies one or more attributes to retrieve from the table.--- These attributes can include scalars, sets, or elements of a JSON document.--- The attributes in the expression must be separated by commas.------ If no attribute names are specified, then all attributes will be returned.--- If any of the requested attributes are not found, they will not appear in the--- result.------ For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes> in the /Amazon DynamoDBDeveloper Guide/.------ /ProjectionExpression/ replaces the legacy /AttributesToGet/ parameter.----qProjectionExpression :: Lens' Query (Maybe Text)-qProjectionExpression =- lens _qProjectionExpression (\s a -> s { _qProjectionExpression = a })---- | This is a legacy parameter, for backward compatibility. New applications--- should use /FilterExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.------ A condition that evaluates the query results after the items are read and--- returns only the desired values.------ This parameter does not support attributes of type List or Map.------ A /QueryFilter/ is applied after the items have already been read; the--- process of filtering does not consume any additional read capacity units.------ If you provide more than one condition in the /QueryFilter/ map, then by--- default all of the conditions must evaluate to true. In other words, the--- conditions are ANDed together. (You can use the /ConditionalOperator/ parameter--- to OR the conditions instead. If you do this, then at least one of the--- conditions must evaluate to true, rather than all of them.)------ Note that /QueryFilter/ does not allow key attributes. You cannot define a--- filter condition on a hash key or range key.------ Each /QueryFilter/ element consists of an attribute name to compare, along--- with the following:------ /AttributeValueList/ - One or more values to evaluate against the supplied--- attribute. The number of values in the list depends on the operator specified--- in /ComparisonOperator/.------ For type Number, value comparisons are numeric.------ String value comparisons for greater than, equals, or less than are based on--- ASCII character code values. For example, 'a' is greater than 'A', and 'a' is--- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.------ For type Binary, DynamoDB treats each byte of the binary data as unsigned--- when it compares binary values.------ For information on specifying data types in JSON, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html JSON Data Format> in--- the /Amazon DynamoDB Developer Guide/.------ /ComparisonOperator/ - A comparator for evaluating attributes. For example,--- equals, greater than, less than, etc.------ The following comparison operators are available:------ 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |BEGINS_WITH | IN | BETWEEN'------ For complete descriptions of all comparison operators, see the <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html Condition>--- data type.-------qQueryFilter :: Lens' Query (HashMap Text Condition)-qQueryFilter = lens _qQueryFilter (\s a -> s { _qQueryFilter = a }) . _Map--qReturnConsumedCapacity :: Lens' Query (Maybe ReturnConsumedCapacity)-qReturnConsumedCapacity =- lens _qReturnConsumedCapacity (\s a -> s { _qReturnConsumedCapacity = a })---- | A value that specifies ascending (true) or descending (false) traversal of--- the index. DynamoDB returns results reflecting the requested order determined--- by the range key. If the data type is Number, the results are returned in--- numeric order. For type String, the results are returned in order of ASCII--- character code values. For type Binary, DynamoDB treats each byte of the--- binary data as unsigned when it compares binary values.------ If /ScanIndexForward/ is not specified, the results are returned in ascending--- order.-qScanIndexForward :: Lens' Query (Maybe Bool)-qScanIndexForward =- lens _qScanIndexForward (\s a -> s { _qScanIndexForward = a })---- | The attributes to be returned in the result. You can retrieve all item--- attributes, specific item attributes, the count of matching items, or in the--- case of an index, some or all of the attributes projected into the index.------ 'ALL_ATTRIBUTES' - Returns all of the item attributes from the specified--- table or index. If you query a local secondary index, then for each matching--- item in the index DynamoDB will fetch the entire item from the parent table.--- If the index is configured to project all item attributes, then all of the--- data can be obtained from the local secondary index, and no fetching is--- required.------ 'ALL_PROJECTED_ATTRIBUTES' - Allowed only when querying an index. Retrieves--- all attributes that have been projected into the index. If the index is--- configured to project all attributes, this return value is equivalent to--- specifying 'ALL_ATTRIBUTES'.------ 'COUNT' - Returns the number of matching items, rather than the matching--- items themselves.------ 'SPECIFIC_ATTRIBUTES' - Returns only the attributes listed in /AttributesToGet/. This return value is equivalent to specifying /AttributesToGet/ without--- specifying any value for /Select/.------ If you query a local secondary index and request only attributes that are--- projected into that index, the operation will read only the index and not the--- table. If any of the requested attributes are not projected into the local--- secondary index, DynamoDB will fetch each of these attributes from the parent--- table. This extra fetching incurs additional throughput cost and latency.------ If you query a global secondary index, you can only request attributes that--- are projected into the index. Global secondary index queries cannot fetch--- attributes from the parent table.------ If neither /Select/ nor /AttributesToGet/ are specified, DynamoDB defaults to 'ALL_ATTRIBUTES' when accessing a table, and 'ALL_PROJECTED_ATTRIBUTES' when accessing an--- index. You cannot use both /Select/ and /AttributesToGet/ together in a single--- request, unless the value for /Select/ is 'SPECIFIC_ATTRIBUTES'. (This usage is--- equivalent to specifying /AttributesToGet/ without any value for /Select/.)------ If you use the /ProjectionExpression/ parameter, then the value for /Select/ can--- only be 'SPECIFIC_ATTRIBUTES'. Any other value for /Select/ will return an error.----qSelect :: Lens' Query (Maybe Select)-qSelect = lens _qSelect (\s a -> s { _qSelect = a })---- | The name of the table containing the requested items.-qTableName :: Lens' Query Text-qTableName = lens _qTableName (\s a -> s { _qTableName = a })--data QueryResponse = QueryResponse- { _qrConsumedCapacity :: Maybe ConsumedCapacity- , _qrCount :: Maybe Int- , _qrItems :: List "Items" (Map Text AttributeValue)- , _qrLastEvaluatedKey :: Map Text AttributeValue- , _qrScannedCount :: Maybe Int- } deriving (Eq, Read, Show)---- | 'QueryResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'qrConsumedCapacity' @::@ 'Maybe' 'ConsumedCapacity'------ * 'qrCount' @::@ 'Maybe' 'Int'------ * 'qrItems' @::@ ['HashMap' 'Text' 'AttributeValue']------ * 'qrLastEvaluatedKey' @::@ 'HashMap' 'Text' 'AttributeValue'------ * 'qrScannedCount' @::@ 'Maybe' 'Int'----queryResponse :: QueryResponse-queryResponse = QueryResponse- { _qrItems = mempty- , _qrCount = Nothing- , _qrScannedCount = Nothing- , _qrLastEvaluatedKey = mempty- , _qrConsumedCapacity = Nothing- }--qrConsumedCapacity :: Lens' QueryResponse (Maybe ConsumedCapacity)-qrConsumedCapacity =- lens _qrConsumedCapacity (\s a -> s { _qrConsumedCapacity = a })---- | The number of items in the response.------ If you used a /QueryFilter/ in the request, then /Count/ is the number of items--- returned after the filter was applied, and /ScannedCount/ is the number of--- matching items before> the filter was applied.------ If you did not use a filter in the request, then /Count/ and /ScannedCount/ are--- the same.-qrCount :: Lens' QueryResponse (Maybe Int)-qrCount = lens _qrCount (\s a -> s { _qrCount = a })---- | An array of item attributes that match the query criteria. Each element in--- this array consists of an attribute name and the value for that attribute.-qrItems :: Lens' QueryResponse [HashMap Text AttributeValue]-qrItems = lens _qrItems (\s a -> s { _qrItems = a }) . _List---- | The primary key of the item where the operation stopped, inclusive of the--- previous result set. Use this value to start a new operation, excluding this--- value in the new request.------ If /LastEvaluatedKey/ is empty, then the "last page" of results has been--- processed and there is no more data to be retrieved.------ If /LastEvaluatedKey/ is not empty, it does not necessarily mean that there is--- more data in the result set. The only way to know when you have reached the--- end of the result set is when /LastEvaluatedKey/ is empty.-qrLastEvaluatedKey :: Lens' QueryResponse (HashMap Text AttributeValue)-qrLastEvaluatedKey =- lens _qrLastEvaluatedKey (\s a -> s { _qrLastEvaluatedKey = a })- . _Map---- | The number of items evaluated, before any /QueryFilter/ is applied. A high /ScannedCount/ value with few, or no, /Count/ results indicates an inefficient /Query/--- operation. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count Count and ScannedCount> in the /AmazonDynamoDB Developer Guide/.------ If you did not use a filter in the request, then /ScannedCount/ is the same as /Count/.-qrScannedCount :: Lens' QueryResponse (Maybe Int)-qrScannedCount = lens _qrScannedCount (\s a -> s { _qrScannedCount = a })--instance ToPath Query where- toPath = const "/"--instance ToQuery Query where- toQuery = const mempty--instance ToHeaders Query--instance ToJSON Query where- toJSON Query{..} = object- [ "TableName" .= _qTableName- , "IndexName" .= _qIndexName- , "Select" .= _qSelect- , "AttributesToGet" .= _qAttributesToGet- , "Limit" .= _qLimit- , "ConsistentRead" .= _qConsistentRead- , "KeyConditions" .= _qKeyConditions- , "QueryFilter" .= _qQueryFilter- , "ConditionalOperator" .= _qConditionalOperator- , "ScanIndexForward" .= _qScanIndexForward- , "ExclusiveStartKey" .= _qExclusiveStartKey- , "ReturnConsumedCapacity" .= _qReturnConsumedCapacity- , "ProjectionExpression" .= _qProjectionExpression- , "FilterExpression" .= _qFilterExpression- , "KeyConditionExpression" .= _qKeyConditionExpression- , "ExpressionAttributeNames" .= _qExpressionAttributeNames- , "ExpressionAttributeValues" .= _qExpressionAttributeValues- ]--instance AWSRequest Query where- type Sv Query = DynamoDB- type Rs Query = QueryResponse-- request = post "Query"- response = jsonResponse--instance FromJSON QueryResponse where- parseJSON = withObject "QueryResponse" $ \o -> QueryResponse- <$> o .:? "ConsumedCapacity"- <*> o .:? "Count"- <*> o .:? "Items" .!= mempty- <*> o .:? "LastEvaluatedKey" .!= mempty- <*> o .:? "ScannedCount"--instance AWSPager Query where- page rq rs- | stop (rs ^. qrLastEvaluatedKey) = Nothing- | otherwise = Just $ rq- & qExclusiveStartKey .~ rs ^. qrLastEvaluatedKey+{-# 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.DynamoDB.Query+-- 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)+--+-- A /Query/ operation uses the primary key of a table or a secondary index+-- to directly access items from that table or index.+--+-- Use the /KeyConditionExpression/ parameter to provide a specific hash+-- key value. The /Query/ operation will return all of the items from the+-- table or index with that hash key value. You can optionally narrow the+-- scope of the /Query/ operation by specifying a range key value and a+-- comparison operator in /KeyConditionExpression/. You can use the+-- /ScanIndexForward/ parameter to get results in forward or reverse order,+-- by range key or by index key.+--+-- Queries that do not return results consume the minimum number of read+-- capacity units for that type of read operation.+--+-- If the total number of items meeting the query criteria exceeds the+-- result set size limit of 1 MB, the query stops and results are returned+-- to the user with the /LastEvaluatedKey/ element to continue the query in+-- a subsequent operation. Unlike a /Scan/ operation, a /Query/ operation+-- never returns both an empty result set and a /LastEvaluatedKey/ value.+-- /LastEvaluatedKey/ is only provided if the results exceed 1 MB, or if+-- you have used the /Limit/ parameter.+--+-- You can query a table, a local secondary index, or a global secondary+-- index. For a query on a table or on a local secondary index, you can set+-- the /ConsistentRead/ parameter to 'true' and obtain a strongly+-- consistent result. Global secondary indexes support eventually+-- consistent reads only, so do not specify /ConsistentRead/ when querying+-- a global secondary index.+--+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html AWS API Reference> for Query.+--+-- This operation returns paginated results.+module Network.AWS.DynamoDB.Query+ (+ -- * Creating a Request+ query+ , Query+ -- * Request Lenses+ , qProjectionExpression+ , qKeyConditions+ , qFilterExpression+ , qQueryFilter+ , qConsistentRead+ , qExpressionAttributeNames+ , qAttributesToGet+ , qReturnConsumedCapacity+ , qExpressionAttributeValues+ , qScanIndexForward+ , qLimit+ , qSelect+ , qConditionalOperator+ , qKeyConditionExpression+ , qExclusiveStartKey+ , qIndexName+ , qTableName++ -- * Destructuring the Response+ , queryResponse+ , QueryResponse+ -- * Response Lenses+ , qrsLastEvaluatedKey+ , qrsCount+ , qrsScannedCount+ , qrsItems+ , qrsConsumedCapacity+ , qrsStatus+ ) where++import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Pager+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response++-- | Represents the input of a /Query/ operation.+--+-- /See:/ 'query' smart constructor.+data Query = Query'+ { _qProjectionExpression :: !(Maybe Text)+ , _qKeyConditions :: !(Maybe (Map Text Condition))+ , _qFilterExpression :: !(Maybe Text)+ , _qQueryFilter :: !(Maybe (Map Text Condition))+ , _qConsistentRead :: !(Maybe Bool)+ , _qExpressionAttributeNames :: !(Maybe (Map Text Text))+ , _qAttributesToGet :: !(Maybe (List1 Text))+ , _qReturnConsumedCapacity :: !(Maybe ReturnConsumedCapacity)+ , _qExpressionAttributeValues :: !(Maybe (Map Text AttributeValue))+ , _qScanIndexForward :: !(Maybe Bool)+ , _qLimit :: !(Maybe Nat)+ , _qSelect :: !(Maybe Select)+ , _qConditionalOperator :: !(Maybe ConditionalOperator)+ , _qKeyConditionExpression :: !(Maybe Text)+ , _qExclusiveStartKey :: !(Maybe (Map Text AttributeValue))+ , _qIndexName :: !(Maybe Text)+ , _qTableName :: !Text+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Query' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'qProjectionExpression'+--+-- * 'qKeyConditions'+--+-- * 'qFilterExpression'+--+-- * 'qQueryFilter'+--+-- * 'qConsistentRead'+--+-- * 'qExpressionAttributeNames'+--+-- * 'qAttributesToGet'+--+-- * 'qReturnConsumedCapacity'+--+-- * 'qExpressionAttributeValues'+--+-- * 'qScanIndexForward'+--+-- * 'qLimit'+--+-- * 'qSelect'+--+-- * 'qConditionalOperator'+--+-- * 'qKeyConditionExpression'+--+-- * 'qExclusiveStartKey'+--+-- * 'qIndexName'+--+-- * 'qTableName'+query+ :: Text -- ^ 'qTableName'+ -> Query+query pTableName_ =+ Query'+ { _qProjectionExpression = Nothing+ , _qKeyConditions = Nothing+ , _qFilterExpression = Nothing+ , _qQueryFilter = Nothing+ , _qConsistentRead = Nothing+ , _qExpressionAttributeNames = Nothing+ , _qAttributesToGet = Nothing+ , _qReturnConsumedCapacity = Nothing+ , _qExpressionAttributeValues = Nothing+ , _qScanIndexForward = Nothing+ , _qLimit = Nothing+ , _qSelect = Nothing+ , _qConditionalOperator = Nothing+ , _qKeyConditionExpression = Nothing+ , _qExclusiveStartKey = Nothing+ , _qIndexName = Nothing+ , _qTableName = pTableName_+ }++-- | A string that identifies one or more attributes to retrieve from the+-- table. These attributes can include scalars, sets, or elements of a JSON+-- document. The attributes in the expression must be separated by commas.+--+-- If no attribute names are specified, then all attributes will be+-- returned. If any of the requested attributes are not found, they will+-- not appear in the result.+--+-- For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- /ProjectionExpression/ replaces the legacy /AttributesToGet/ parameter.+qProjectionExpression :: Lens' Query (Maybe Text)+qProjectionExpression = lens _qProjectionExpression (\ s a -> s{_qProjectionExpression = a});++-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /KeyConditionExpression/ instead. Do not combine legacy+-- parameters and expression parameters in a single API call; otherwise,+-- DynamoDB will return a /ValidationException/ exception.+--+-- The selection criteria for the query. For a query on a table, you can+-- have conditions only on the table primary key attributes. You must+-- provide the hash key attribute name and value as an 'EQ' condition. You+-- can optionally provide a second condition, referring to the range key+-- attribute.+--+-- If you don\'t provide a range key condition, all of the items that match+-- the hash key will be retrieved. If a /FilterExpression/ or /QueryFilter/+-- is present, it will be applied after the items are retrieved.+--+-- For a query on an index, you can have conditions only on the index key+-- attributes. You must provide the index hash attribute name and value as+-- an 'EQ' condition. You can optionally provide a second condition,+-- referring to the index key range attribute.+--+-- Each /KeyConditions/ element consists of an attribute name to compare,+-- along with the following:+--+-- - /AttributeValueList/ - One or more values to evaluate against the+-- supplied attribute. The number of values in the list depends on the+-- /ComparisonOperator/ being used.+--+-- For type Number, value comparisons are numeric.+--+-- String value comparisons for greater than, equals, or less than are+-- based on ASCII character code values. For example, 'a' is greater+-- than 'A', and 'a' is greater than 'B'. For a list of code values,+-- see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.+--+-- For Binary, DynamoDB treats each byte of the binary data as unsigned+-- when it compares binary values.+--+-- - /ComparisonOperator/ - A comparator for evaluating attributes, for+-- example, equals, greater than, less than, and so on.+--+-- For /KeyConditions/, only the following comparison operators are+-- supported:+--+-- 'EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN'+--+-- The following are descriptions of these comparison operators.+--+-- - 'EQ' : Equal.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String, Number, or Binary (not a set type). If an item+-- contains an /AttributeValue/ element of a different type than+-- the one specified in the request, the value does not match. For+-- example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not equal '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'LE' : Less than or equal.+--+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'LT' : Less than.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String, Number, or Binary (not a set type). If an item+-- contains an /AttributeValue/ element of a different type than+-- the one provided in the request, the value does not match. For+-- example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'GE' : Greater than or equal.+--+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'GT' : Greater than.+--+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'BEGINS_WITH' : Checks for a prefix.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String or Binary (not a Number or a set type). The target+-- attribute of the comparison must be of type String or Binary+-- (not a Number or a set type).+--+-- - 'BETWEEN' : Greater than or equal to the first value, and less+-- than or equal to the second value.+--+-- /AttributeValueList/ must contain two /AttributeValue/ elements+-- of the same type, either String, Number, or Binary (not a set+-- type). A target attribute matches if the target value is greater+-- than, or equal to, the first element and less than, or equal to,+-- the second element. If an item contains an /AttributeValue/+-- element of a different type than the one provided in the+-- request, the value does not match. For example, '{\"S\":\"6\"}'+-- does not compare to '{\"N\":\"6\"}'. Also, '{\"N\":\"6\"}' does+-- not compare to '{\"NS\":[\"6\", \"2\", \"1\"]}'+--+-- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters>+-- in the /Amazon DynamoDB Developer Guide/.+qKeyConditions :: Lens' Query (HashMap Text Condition)+qKeyConditions = lens _qKeyConditions (\ s a -> s{_qKeyConditions = a}) . _Default . _Map;++-- | A string that contains conditions that DynamoDB applies after the+-- /Query/ operation, but before the data is returned to you. Items that do+-- not satisfy the /FilterExpression/ criteria are not returned.+--+-- A /FilterExpression/ is applied after the items have already been read;+-- the process of filtering does not consume any additional read capacity+-- units.+--+-- For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults Filter Expressions>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- /FilterExpression/ replaces the legacy /QueryFilter/ and+-- /ConditionalOperator/ parameters.+qFilterExpression :: Lens' Query (Maybe Text)+qFilterExpression = lens _qFilterExpression (\ s a -> s{_qFilterExpression = a});++-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /FilterExpression/ instead. Do not combine legacy parameters+-- and expression parameters in a single API call; otherwise, DynamoDB will+-- return a /ValidationException/ exception.+--+-- A condition that evaluates the query results after the items are read+-- and returns only the desired values.+--+-- This parameter does not support attributes of type List or Map.+--+-- A /QueryFilter/ is applied after the items have already been read; the+-- process of filtering does not consume any additional read capacity+-- units.+--+-- If you provide more than one condition in the /QueryFilter/ map, then by+-- default all of the conditions must evaluate to true. In other words, the+-- conditions are ANDed together. (You can use the /ConditionalOperator/+-- parameter to OR the conditions instead. If you do this, then at least+-- one of the conditions must evaluate to true, rather than all of them.)+--+-- Note that /QueryFilter/ does not allow key attributes. You cannot define+-- a filter condition on a hash key or range key.+--+-- Each /QueryFilter/ element consists of an attribute name to compare,+-- along with the following:+--+-- - /AttributeValueList/ - One or more values to evaluate against the+-- supplied attribute. The number of values in the list depends on the+-- operator specified in /ComparisonOperator/.+--+-- For type Number, value comparisons are numeric.+--+-- String value comparisons for greater than, equals, or less than are+-- based on ASCII character code values. For example, 'a' is greater+-- than 'A', and 'a' is greater than 'B'. For a list of code values,+-- see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.+--+-- For type Binary, DynamoDB treats each byte of the binary data as+-- unsigned when it compares binary values.+--+-- For information on specifying data types in JSON, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html JSON Data Format>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- - /ComparisonOperator/ - A comparator for evaluating attributes. For+-- example, equals, greater than, less than, etc.+--+-- The following comparison operators are available:+--+-- 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN'+--+-- For complete descriptions of all comparison operators, see the+-- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html Condition>+-- data type.+--+qQueryFilter :: Lens' Query (HashMap Text Condition)+qQueryFilter = lens _qQueryFilter (\ s a -> s{_qQueryFilter = a}) . _Default . _Map;++-- | Determines the read consistency model: If set to 'true', then the+-- operation uses strongly consistent reads; otherwise, the operation uses+-- eventually consistent reads.+--+-- Strongly consistent reads are not supported on global secondary indexes.+-- If you query a global secondary index with /ConsistentRead/ set to+-- 'true', you will receive a /ValidationException/.+qConsistentRead :: Lens' Query (Maybe Bool)+qConsistentRead = lens _qConsistentRead (\ s a -> s{_qConsistentRead = a});++-- | One or more substitution tokens for attribute names in an expression.+-- The following are some use cases for using /ExpressionAttributeNames/:+--+-- - To access an attribute whose name conflicts with a DynamoDB reserved+-- word.+--+-- - To create a placeholder for repeating occurrences of an attribute+-- name in an expression.+--+-- - To prevent special characters in an attribute name from being+-- misinterpreted in an expression.+--+-- Use the __#__ character in an expression to dereference an attribute+-- name. For example, consider the following attribute name:+--+-- - 'Percentile'+--+-- The name of this attribute conflicts with a reserved word, so it cannot+-- be used directly in an expression. (For the complete list of reserved+-- words, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words>+-- in the /Amazon DynamoDB Developer Guide/). To work around this, you+-- could specify the following for /ExpressionAttributeNames/:+--+-- - '{\"#P\":\"Percentile\"}'+--+-- You could then use this substitution in an expression, as in this+-- example:+--+-- - '#P = :val'+--+-- Tokens that begin with the __:__ character are /expression attribute+-- values/, which are placeholders for the actual value at runtime.+--+-- For more information on expression attribute names, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/.+qExpressionAttributeNames :: Lens' Query (HashMap Text Text)+qExpressionAttributeNames = lens _qExpressionAttributeNames (\ s a -> s{_qExpressionAttributeNames = a}) . _Default . _Map;++-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /ProjectionExpression/ instead. Do not combine legacy+-- parameters and expression parameters in a single API call; otherwise,+-- DynamoDB will return a /ValidationException/ exception.+--+-- This parameter allows you to retrieve attributes of type List or Map;+-- however, it cannot retrieve individual elements within a List or a Map.+--+-- The names of one or more attributes to retrieve. If no attribute names+-- are provided, then all attributes will be returned. If any of the+-- requested attributes are not found, they will not appear in the result.+--+-- Note that /AttributesToGet/ has no effect on provisioned throughput+-- consumption. DynamoDB determines capacity units consumed based on item+-- size, not on the amount of data that is returned to an application.+--+-- You cannot use both /AttributesToGet/ and /Select/ together in a /Query/+-- request, /unless/ the value for /Select/ is 'SPECIFIC_ATTRIBUTES'. (This+-- usage is equivalent to specifying /AttributesToGet/ without any value+-- for /Select/.)+--+-- If you query a local secondary index and request only attributes that+-- are projected into that index, the operation will read only the index+-- and not the table. If any of the requested attributes are not projected+-- into the local secondary index, DynamoDB will fetch each of these+-- attributes from the parent table. This extra fetching incurs additional+-- throughput cost and latency.+--+-- If you query a global secondary index, you can only request attributes+-- that are projected into the index. Global secondary index queries cannot+-- fetch attributes from the parent table.+qAttributesToGet :: Lens' Query (Maybe (NonEmpty Text))+qAttributesToGet = lens _qAttributesToGet (\ s a -> s{_qAttributesToGet = a}) . mapping _List1;++-- | Undocumented member.+qReturnConsumedCapacity :: Lens' Query (Maybe ReturnConsumedCapacity)+qReturnConsumedCapacity = lens _qReturnConsumedCapacity (\ s a -> s{_qReturnConsumedCapacity = a});++-- | One or more values that can be substituted in an expression.+--+-- Use the __:__ (colon) character in an expression to dereference an+-- attribute value. For example, suppose that you wanted to check whether+-- the value of the /ProductStatus/ attribute was one of the following:+--+-- 'Available | Backordered | Discontinued'+--+-- You would first need to specify /ExpressionAttributeValues/ as follows:+--+-- '{ \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"} }'+--+-- You could then use these values in an expression, such as this:+--+-- 'ProductStatus IN (:avail, :back, :disc)'+--+-- For more information on expression attribute values, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions>+-- in the /Amazon DynamoDB Developer Guide/.+qExpressionAttributeValues :: Lens' Query (HashMap Text AttributeValue)+qExpressionAttributeValues = lens _qExpressionAttributeValues (\ s a -> s{_qExpressionAttributeValues = a}) . _Default . _Map;++-- | Specifies the order in which to return the query results - either+-- ascending ('true') or descending ('false').+--+-- Items with the same hash key are stored in sorted order by range key .If+-- the range key data type is Number, the results are stored in numeric+-- order. For type String, the results are returned in order of ASCII+-- character code values. For type Binary, DynamoDB treats each byte of the+-- binary data as unsigned.+--+-- If /ScanIndexForward/ is 'true', DynamoDB returns the results in order,+-- by range key. This is the default behavior.+--+-- If /ScanIndexForward/ is 'false', DynamoDB sorts the results in+-- descending order by range key, and then returns the results to the+-- client.+qScanIndexForward :: Lens' Query (Maybe Bool)+qScanIndexForward = lens _qScanIndexForward (\ s a -> s{_qScanIndexForward = a});++-- | The maximum number of items to evaluate (not necessarily the number of+-- matching items). If DynamoDB processes the number of items up to the+-- limit while processing the results, it stops the operation and returns+-- the matching values up to that point, and a key in /LastEvaluatedKey/ to+-- apply in a subsequent operation, so that you can pick up where you left+-- off. Also, if the processed data set size exceeds 1 MB before DynamoDB+-- reaches this limit, it stops the operation and returns the matching+-- values up to the limit, and a key in /LastEvaluatedKey/ to apply in a+-- subsequent operation to continue the operation. For more information,+-- see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html Query and Scan>+-- in the /Amazon DynamoDB Developer Guide/.+qLimit :: Lens' Query (Maybe Natural)+qLimit = lens _qLimit (\ s a -> s{_qLimit = a}) . mapping _Nat;++-- | The attributes to be returned in the result. You can retrieve all item+-- attributes, specific item attributes, the count of matching items, or in+-- the case of an index, some or all of the attributes projected into the+-- index.+--+-- - 'ALL_ATTRIBUTES' - Returns all of the item attributes from the+-- specified table or index. If you query a local secondary index, then+-- for each matching item in the index DynamoDB will fetch the entire+-- item from the parent table. If the index is configured to project+-- all item attributes, then all of the data can be obtained from the+-- local secondary index, and no fetching is required.+--+-- - 'ALL_PROJECTED_ATTRIBUTES' - Allowed only when querying an index.+-- Retrieves all attributes that have been projected into the index. If+-- the index is configured to project all attributes, this return value+-- is equivalent to specifying 'ALL_ATTRIBUTES'.+--+-- - 'COUNT' - Returns the number of matching items, rather than the+-- matching items themselves.+--+-- - 'SPECIFIC_ATTRIBUTES' - Returns only the attributes listed in+-- /AttributesToGet/. This return value is equivalent to specifying+-- /AttributesToGet/ without specifying any value for /Select/.+--+-- If you query a local secondary index and request only attributes+-- that are projected into that index, the operation will read only the+-- index and not the table. If any of the requested attributes are not+-- projected into the local secondary index, DynamoDB will fetch each+-- of these attributes from the parent table. This extra fetching+-- incurs additional throughput cost and latency.+--+-- If you query a global secondary index, you can only request+-- attributes that are projected into the index. Global secondary index+-- queries cannot fetch attributes from the parent table.+--+-- If neither /Select/ nor /AttributesToGet/ are specified, DynamoDB+-- defaults to 'ALL_ATTRIBUTES' when accessing a table, and+-- 'ALL_PROJECTED_ATTRIBUTES' when accessing an index. You cannot use both+-- /Select/ and /AttributesToGet/ together in a single request, unless the+-- value for /Select/ is 'SPECIFIC_ATTRIBUTES'. (This usage is equivalent+-- to specifying /AttributesToGet/ without any value for /Select/.)+--+-- If you use the /ProjectionExpression/ parameter, then the value for+-- /Select/ can only be 'SPECIFIC_ATTRIBUTES'. Any other value for /Select/+-- will return an error.+qSelect :: Lens' Query (Maybe Select)+qSelect = lens _qSelect (\ s a -> s{_qSelect = a});++-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /FilterExpression/ instead. Do not combine legacy parameters+-- and expression parameters in a single API call; otherwise, DynamoDB will+-- return a /ValidationException/ exception.+--+-- A logical operator to apply to the conditions in a /QueryFilter/ map:+--+-- - 'AND' - If all of the conditions evaluate to true, then the entire+-- map evaluates to true.+--+-- - 'OR' - If at least one of the conditions evaluate to true, then the+-- entire map evaluates to true.+--+-- If you omit /ConditionalOperator/, then 'AND' is the default.+--+-- The operation will succeed only if the entire map evaluates to true.+--+-- This parameter does not support attributes of type List or Map.+qConditionalOperator :: Lens' Query (Maybe ConditionalOperator)+qConditionalOperator = lens _qConditionalOperator (\ s a -> s{_qConditionalOperator = a});++-- | The condition that specifies the key value(s) for items to be retrieved+-- by the /Query/ action.+--+-- The condition must perform an equality test on a single hash key value.+-- The condition can also perform one of several comparison tests on a+-- single range key value. /Query/ can use /KeyConditionExpression/ to+-- retrieve one item with a given hash and range key value, or several+-- items that have the same hash key value but different range key values.+--+-- The hash key equality test is required, and must be specified in the+-- following format:+--+-- 'hashAttributeName' /=/ ':hashval'+--+-- If you also want to provide a range key condition, it must be combined+-- using /AND/ with the hash key condition. Following is an example, using+-- the __=__ comparison operator for the range key:+--+-- 'hashAttributeName' /=/ ':hashval' /AND/ 'rangeAttributeName' /=/+-- ':rangeval'+--+-- Valid comparisons for the range key condition are as follows:+--+-- - 'rangeAttributeName' /=/ ':rangeval' - true if the range key is+-- equal to ':rangeval'.+--+-- - 'rangeAttributeName' /\</ ':rangeval' - true if the range key is+-- less than ':rangeval'.+--+-- - 'rangeAttributeName' /\<=/ ':rangeval' - true if the range key is+-- less than or equal to ':rangeval'.+--+-- - 'rangeAttributeName' />/ ':rangeval' - true if the range key is+-- greater than ':rangeval'.+--+-- - 'rangeAttributeName' />=/ ':rangeval' - true if the range key is+-- greater than or equal to ':rangeval'.+--+-- - 'rangeAttributeName' /BETWEEN/ ':rangeval1' /AND/ ':rangeval2' -+-- true if the range key is greater than or equal to ':rangeval1', and+-- less than or equal to ':rangeval2'.+--+-- - /begins_with (/'rangeAttributeName', ':rangeval'/)/ - true if the+-- range key begins with a particular operand. (You cannot use this+-- function with a range key that is of type Number.) Note that the+-- function name 'begins_with' is case-sensitive.+--+-- Use the /ExpressionAttributeValues/ parameter to replace tokens such as+-- ':hashval' and ':rangeval' with actual values at runtime.+--+-- You can optionally use the /ExpressionAttributeNames/ parameter to+-- replace the names of the hash and range attributes with placeholder+-- tokens. This option might be necessary if an attribute name conflicts+-- with a DynamoDB reserved word. For example, the following+-- /KeyConditionExpression/ parameter causes an error because /Size/ is a+-- reserved word:+--+-- - 'Size = :myval'+--+-- To work around this, define a placeholder (such a '#S') to represent the+-- attribute name /Size/. /KeyConditionExpression/ then is as follows:+--+-- - '#S = :myval'+--+-- For a list of reserved words, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- For more information on /ExpressionAttributeNames/ and+-- /ExpressionAttributeValues/, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html Using Placeholders for Attribute Names and Values>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- /KeyConditionExpression/ replaces the legacy /KeyConditions/ parameter.+qKeyConditionExpression :: Lens' Query (Maybe Text)+qKeyConditionExpression = lens _qKeyConditionExpression (\ s a -> s{_qKeyConditionExpression = a});++-- | The primary key of the first item that this operation will evaluate. Use+-- the value that was returned for /LastEvaluatedKey/ in the previous+-- operation.+--+-- The data type for /ExclusiveStartKey/ must be String, Number or Binary.+-- No set data types are allowed.+qExclusiveStartKey :: Lens' Query (HashMap Text AttributeValue)+qExclusiveStartKey = lens _qExclusiveStartKey (\ s a -> s{_qExclusiveStartKey = a}) . _Default . _Map;++-- | The name of an index to query. This index can be any local secondary+-- index or global secondary index on the table. Note that if you use the+-- /IndexName/ parameter, you must also provide /TableName./+qIndexName :: Lens' Query (Maybe Text)+qIndexName = lens _qIndexName (\ s a -> s{_qIndexName = a});++-- | The name of the table containing the requested items.+qTableName :: Lens' Query Text+qTableName = lens _qTableName (\ s a -> s{_qTableName = a});++instance AWSPager Query where+ page rq rs+ | stop (rs ^. qrsLastEvaluatedKey) = Nothing+ | stop (rs ^. qrsItems) = Nothing+ | otherwise =+ Just $ rq &+ qExclusiveStartKey .~ rs ^. qrsLastEvaluatedKey++instance AWSRequest Query where+ type Sv Query = DynamoDB+ type Rs Query = QueryResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ QueryResponse' <$>+ (x .?> "LastEvaluatedKey" .!@ mempty) <*>+ (x .?> "Count")+ <*> (x .?> "ScannedCount")+ <*> (x .?> "Items" .!@ mempty)+ <*> (x .?> "ConsumedCapacity")+ <*> (pure (fromEnum s)))++instance ToHeaders Query where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.Query" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)])++instance ToJSON Query where+ toJSON Query'{..}+ = object+ ["ProjectionExpression" .= _qProjectionExpression,+ "KeyConditions" .= _qKeyConditions,+ "FilterExpression" .= _qFilterExpression,+ "QueryFilter" .= _qQueryFilter,+ "ConsistentRead" .= _qConsistentRead,+ "ExpressionAttributeNames" .=+ _qExpressionAttributeNames,+ "AttributesToGet" .= _qAttributesToGet,+ "ReturnConsumedCapacity" .= _qReturnConsumedCapacity,+ "ExpressionAttributeValues" .=+ _qExpressionAttributeValues,+ "ScanIndexForward" .= _qScanIndexForward,+ "Limit" .= _qLimit, "Select" .= _qSelect,+ "ConditionalOperator" .= _qConditionalOperator,+ "KeyConditionExpression" .= _qKeyConditionExpression,+ "ExclusiveStartKey" .= _qExclusiveStartKey,+ "IndexName" .= _qIndexName,+ "TableName" .= _qTableName]++instance ToPath Query where+ toPath = const "/"++instance ToQuery Query where+ toQuery = const mempty++-- | Represents the output of a /Query/ operation.+--+-- /See:/ 'queryResponse' smart constructor.+data QueryResponse = QueryResponse'+ { _qrsLastEvaluatedKey :: !(Maybe (Map Text AttributeValue))+ , _qrsCount :: !(Maybe Int)+ , _qrsScannedCount :: !(Maybe Int)+ , _qrsItems :: !(Maybe [Map Text AttributeValue])+ , _qrsConsumedCapacity :: !(Maybe ConsumedCapacity)+ , _qrsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'QueryResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'qrsLastEvaluatedKey'+--+-- * 'qrsCount'+--+-- * 'qrsScannedCount'+--+-- * 'qrsItems'+--+-- * 'qrsConsumedCapacity'+--+-- * 'qrsStatus'+queryResponse+ :: Int -- ^ 'qrsStatus'+ -> QueryResponse+queryResponse pStatus_ =+ QueryResponse'+ { _qrsLastEvaluatedKey = Nothing+ , _qrsCount = Nothing+ , _qrsScannedCount = Nothing+ , _qrsItems = Nothing+ , _qrsConsumedCapacity = Nothing+ , _qrsStatus = pStatus_+ }++-- | The primary key of the item where the operation stopped, inclusive of+-- the previous result set. Use this value to start a new operation,+-- excluding this value in the new request.+--+-- If /LastEvaluatedKey/ is empty, then the \"last page\" of results has+-- been processed and there is no more data to be retrieved.+--+-- If /LastEvaluatedKey/ is not empty, it does not necessarily mean that+-- there is more data in the result set. The only way to know when you have+-- reached the end of the result set is when /LastEvaluatedKey/ is empty.+qrsLastEvaluatedKey :: Lens' QueryResponse (HashMap Text AttributeValue)+qrsLastEvaluatedKey = lens _qrsLastEvaluatedKey (\ s a -> s{_qrsLastEvaluatedKey = a}) . _Default . _Map;++-- | The number of items in the response.+--+-- If you used a /QueryFilter/ in the request, then /Count/ is the number+-- of items returned after the filter was applied, and /ScannedCount/ is+-- the number of matching items before> the filter was applied.+--+-- If you did not use a filter in the request, then /Count/ and+-- /ScannedCount/ are the same.+qrsCount :: Lens' QueryResponse (Maybe Int)+qrsCount = lens _qrsCount (\ s a -> s{_qrsCount = a});++-- | The number of items evaluated, before any /QueryFilter/ is applied. A+-- high /ScannedCount/ value with few, or no, /Count/ results indicates an+-- inefficient /Query/ operation. For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count Count and ScannedCount>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- If you did not use a filter in the request, then /ScannedCount/ is the+-- same as /Count/.+qrsScannedCount :: Lens' QueryResponse (Maybe Int)+qrsScannedCount = lens _qrsScannedCount (\ s a -> s{_qrsScannedCount = a});++-- | An array of item attributes that match the query criteria. Each element+-- in this array consists of an attribute name and the value for that+-- attribute.+qrsItems :: Lens' QueryResponse [HashMap Text AttributeValue]+qrsItems = lens _qrsItems (\ s a -> s{_qrsItems = a}) . _Default . _Coerce;++-- | Undocumented member.+qrsConsumedCapacity :: Lens' QueryResponse (Maybe ConsumedCapacity)+qrsConsumedCapacity = lens _qrsConsumedCapacity (\ s a -> s{_qrsConsumedCapacity = a});++-- | The response status code.+qrsStatus :: Lens' QueryResponse Int+qrsStatus = lens _qrsStatus (\ s a -> s{_qrsStatus = a});
gen/Network/AWS/DynamoDB/Scan.hs view
@@ -1,540 +1,619 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}+{-# 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.DynamoDB.Scan--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | The /Scan/ operation returns one or more items and item attributes by accessing--- every item in a table or a secondary index. To have DynamoDB return fewer--- items, you can provide a /ScanFilter/ operation.------ If the total number of scanned items exceeds the maximum data set size limit--- of 1 MB, the scan stops and results are returned to the user as a /LastEvaluatedKey/ value to continue the scan in a subsequent operation. The results also--- include the number of items exceeding the limit. A scan can result in no--- table data meeting the filter criteria.+-- The /Scan/ operation returns one or more items and item attributes by+-- accessing every item in a table or a secondary index. To have DynamoDB+-- return fewer items, you can provide a /ScanFilter/ operation. ----- The result set is eventually consistent.+-- If the total number of scanned items exceeds the maximum data set size+-- limit of 1 MB, the scan stops and results are returned to the user as a+-- /LastEvaluatedKey/ value to continue the scan in a subsequent operation.+-- The results also include the number of items exceeding the limit. A scan+-- can result in no table data meeting the filter criteria. -- -- By default, /Scan/ operations proceed sequentially; however, for faster--- performance on a large table or secondary index, applications can request a--- parallel /Scan/ operation by providing the /Segment/ and /TotalSegments/--- parameters. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScanParallelScan Parallel Scan> in the /Amazon DynamoDBDeveloper Guide/.+-- performance on a large table or secondary index, applications can+-- request a parallel /Scan/ operation by providing the /Segment/ and+-- /TotalSegments/ parameters. For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#QueryAndScanParallelScan Parallel Scan>+-- in the /Amazon DynamoDB Developer Guide/. ----- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html>+-- By default, /Scan/ uses eventually consistent reads when acessing the+-- data in the table or local secondary index. However, you can use+-- strongly consistent reads instead by setting the /ConsistentRead/+-- parameter to /true/.+--+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Scan.html AWS API Reference> for Scan.+--+-- This operation returns paginated results. module Network.AWS.DynamoDB.Scan (- -- * Request- Scan- -- ** Request constructor- , scan- -- ** Request lenses- , sAttributesToGet- , sConditionalOperator- , sExclusiveStartKey+ -- * Creating a Request+ scan+ , Scan+ -- * Request Lenses+ , sProjectionExpression+ , sScanFilter+ , sTotalSegments+ , sFilterExpression+ , sConsistentRead , sExpressionAttributeNames+ , sAttributesToGet+ , sReturnConsumedCapacity , sExpressionAttributeValues- , sFilterExpression- , sIndexName , sLimit- , sProjectionExpression- , sReturnConsumedCapacity- , sScanFilter- , sSegment , sSelect+ , sSegment+ , sConditionalOperator+ , sExclusiveStartKey+ , sIndexName , sTableName- , sTotalSegments - -- * Response- , ScanResponse- -- ** Response constructor+ -- * Destructuring the Response , scanResponse- -- ** Response lenses- , srConsumedCapacity- , srCount- , srItems- , srLastEvaluatedKey- , srScannedCount+ , ScanResponse+ -- * Response Lenses+ , srsLastEvaluatedKey+ , srsCount+ , srsScannedCount+ , srsItems+ , srsConsumedCapacity+ , srsStatus ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Pager+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -data Scan = Scan- { _sAttributesToGet :: List1 "AttributesToGet" Text- , _sConditionalOperator :: Maybe ConditionalOperator- , _sExclusiveStartKey :: Map Text AttributeValue- , _sExpressionAttributeNames :: Map Text Text- , _sExpressionAttributeValues :: Map Text AttributeValue- , _sFilterExpression :: Maybe Text- , _sIndexName :: Maybe Text- , _sLimit :: Maybe Nat- , _sProjectionExpression :: Maybe Text- , _sReturnConsumedCapacity :: Maybe ReturnConsumedCapacity- , _sScanFilter :: Map Text Condition- , _sSegment :: Maybe Nat- , _sSelect :: Maybe Select- , _sTableName :: Text- , _sTotalSegments :: Maybe Nat- } deriving (Eq, Read, Show)+-- | Represents the input of a /Scan/ operation.+--+-- /See:/ 'scan' smart constructor.+data Scan = Scan'+ { _sProjectionExpression :: !(Maybe Text)+ , _sScanFilter :: !(Maybe (Map Text Condition))+ , _sTotalSegments :: !(Maybe Nat)+ , _sFilterExpression :: !(Maybe Text)+ , _sConsistentRead :: !(Maybe Bool)+ , _sExpressionAttributeNames :: !(Maybe (Map Text Text))+ , _sAttributesToGet :: !(Maybe (List1 Text))+ , _sReturnConsumedCapacity :: !(Maybe ReturnConsumedCapacity)+ , _sExpressionAttributeValues :: !(Maybe (Map Text AttributeValue))+ , _sLimit :: !(Maybe Nat)+ , _sSelect :: !(Maybe Select)+ , _sSegment :: !(Maybe Nat)+ , _sConditionalOperator :: !(Maybe ConditionalOperator)+ , _sExclusiveStartKey :: !(Maybe (Map Text AttributeValue))+ , _sIndexName :: !(Maybe Text)+ , _sTableName :: !Text+ } deriving (Eq,Read,Show,Data,Typeable,Generic) --- | 'Scan' constructor.+-- | Creates a value of 'Scan' with the minimum fields required to make a request. ----- The fields accessible through corresponding lenses are:+-- Use one of the following lenses to modify other fields as desired: ----- * 'sAttributesToGet' @::@ 'NonEmpty' 'Text'+-- * 'sProjectionExpression' ----- * 'sConditionalOperator' @::@ 'Maybe' 'ConditionalOperator'+-- * 'sScanFilter' ----- * 'sExclusiveStartKey' @::@ 'HashMap' 'Text' 'AttributeValue'+-- * 'sTotalSegments' ----- * 'sExpressionAttributeNames' @::@ 'HashMap' 'Text' 'Text'+-- * 'sFilterExpression' ----- * 'sExpressionAttributeValues' @::@ 'HashMap' 'Text' 'AttributeValue'+-- * 'sConsistentRead' ----- * 'sFilterExpression' @::@ 'Maybe' 'Text'+-- * 'sExpressionAttributeNames' ----- * 'sIndexName' @::@ 'Maybe' 'Text'+-- * 'sAttributesToGet' ----- * 'sLimit' @::@ 'Maybe' 'Natural'+-- * 'sReturnConsumedCapacity' ----- * 'sProjectionExpression' @::@ 'Maybe' 'Text'+-- * 'sExpressionAttributeValues' ----- * 'sReturnConsumedCapacity' @::@ 'Maybe' 'ReturnConsumedCapacity'+-- * 'sLimit' ----- * 'sScanFilter' @::@ 'HashMap' 'Text' 'Condition'+-- * 'sSelect' ----- * 'sSegment' @::@ 'Maybe' 'Natural'+-- * 'sSegment' ----- * 'sSelect' @::@ 'Maybe' 'Select'+-- * 'sConditionalOperator' ----- * 'sTableName' @::@ 'Text'+-- * 'sExclusiveStartKey' ----- * 'sTotalSegments' @::@ 'Maybe' 'Natural'+-- * 'sIndexName' ---scan :: Text -- ^ 'sTableName'- -> NonEmpty Text -- ^ 'sAttributesToGet'- -> Scan-scan p1 p2 = Scan- { _sTableName = p1- , _sAttributesToGet = withIso _List1 (const id) p2- , _sIndexName = Nothing- , _sLimit = Nothing- , _sSelect = Nothing- , _sScanFilter = mempty- , _sConditionalOperator = Nothing- , _sExclusiveStartKey = mempty- , _sReturnConsumedCapacity = Nothing- , _sTotalSegments = Nothing- , _sSegment = Nothing- , _sProjectionExpression = Nothing- , _sFilterExpression = Nothing- , _sExpressionAttributeNames = mempty- , _sExpressionAttributeValues = mempty+-- * 'sTableName'+scan+ :: Text -- ^ 'sTableName'+ -> Scan+scan pTableName_ =+ Scan'+ { _sProjectionExpression = Nothing+ , _sScanFilter = Nothing+ , _sTotalSegments = Nothing+ , _sFilterExpression = Nothing+ , _sConsistentRead = Nothing+ , _sExpressionAttributeNames = Nothing+ , _sAttributesToGet = Nothing+ , _sReturnConsumedCapacity = Nothing+ , _sExpressionAttributeValues = Nothing+ , _sLimit = Nothing+ , _sSelect = Nothing+ , _sSegment = Nothing+ , _sConditionalOperator = Nothing+ , _sExclusiveStartKey = Nothing+ , _sIndexName = Nothing+ , _sTableName = pTableName_ } --- | This is a legacy parameter, for backward compatibility. New applications--- should use /ProjectionExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.+-- | A string that identifies one or more attributes to retrieve from the+-- specified table or index. These attributes can include scalars, sets, or+-- elements of a JSON document. The attributes in the expression must be+-- separated by commas. ----- This parameter allows you to retrieve attributes of type List or Map;--- however, it cannot retrieve individual elements within a List or a Map.+-- If no attribute names are specified, then all attributes will be+-- returned. If any of the requested attributes are not found, they will+-- not appear in the result. ----- The names of one or more attributes to retrieve. If no attribute names are--- provided, then all attributes will be returned. If any of the requested--- attributes are not found, they will not appear in the result.+-- For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/. ----- Note that /AttributesToGet/ has no effect on provisioned throughput--- consumption. DynamoDB determines capacity units consumed based on item size,--- not on the amount of data that is returned to an application.-sAttributesToGet :: Lens' Scan (NonEmpty Text)-sAttributesToGet = lens _sAttributesToGet (\s a -> s { _sAttributesToGet = a }) . _List1+-- /ProjectionExpression/ replaces the legacy /AttributesToGet/ parameter.+sProjectionExpression :: Lens' Scan (Maybe Text)+sProjectionExpression = lens _sProjectionExpression (\ s a -> s{_sProjectionExpression = a}); -- | This is a legacy parameter, for backward compatibility. New applications--- should use /FilterExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.------ A logical operator to apply to the conditions in a /ScanFilter/ map:+-- should use /FilterExpression/ instead. Do not combine legacy parameters+-- and expression parameters in a single API call; otherwise, DynamoDB will+-- return a /ValidationException/ exception. ----- 'AND' - If all of the conditions evaluate to true, then the entire map--- evaluates to true.+-- A condition that evaluates the scan results and returns only the desired+-- values. ----- 'OR' - If at least one of the conditions evaluate to true, then the entire map--- evaluates to true.+-- This parameter does not support attributes of type List or Map. ----- If you omit /ConditionalOperator/, then 'AND' is the default.+-- If you specify more than one condition in the /ScanFilter/ map, then by+-- default all of the conditions must evaluate to true. In other words, the+-- conditions are ANDed together. (You can use the /ConditionalOperator/+-- parameter to OR the conditions instead. If you do this, then at least+-- one of the conditions must evaluate to true, rather than all of them.) ----- The operation will succeed only if the entire map evaluates to true.+-- Each /ScanFilter/ element consists of an attribute name to compare,+-- along with the following: ----- This parameter does not support attributes of type List or Map.+-- - /AttributeValueList/ - One or more values to evaluate against the+-- supplied attribute. The number of values in the list depends on the+-- operator specified in /ComparisonOperator/ . ---sConditionalOperator :: Lens' Scan (Maybe ConditionalOperator)-sConditionalOperator =- lens _sConditionalOperator (\s a -> s { _sConditionalOperator = a })---- | The primary key of the first item that this operation will evaluate. Use the--- value that was returned for /LastEvaluatedKey/ in the previous operation.+-- For type Number, value comparisons are numeric. ----- The data type for /ExclusiveStartKey/ must be String, Number or Binary. No set--- data types are allowed.+-- String value comparisons for greater than, equals, or less than are+-- based on ASCII character code values. For example, 'a' is greater+-- than 'A', and 'a' is greater than 'B'. For a list of code values,+-- see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>. ----- In a parallel scan, a /Scan/ request that includes /ExclusiveStartKey/ must--- specify the same segment whose previous /Scan/ returned the corresponding value--- of /LastEvaluatedKey/.-sExclusiveStartKey :: Lens' Scan (HashMap Text AttributeValue)-sExclusiveStartKey =- lens _sExclusiveStartKey (\s a -> s { _sExclusiveStartKey = a })- . _Map---- | One or more substitution tokens for attribute names in an expression. The--- following are some use cases for using /ExpressionAttributeNames/:+-- For Binary, DynamoDB treats each byte of the binary data as unsigned+-- when it compares binary values. ----- To access an attribute whose name conflicts with a DynamoDB reserved word.+-- For information on specifying data types in JSON, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html JSON Data Format>+-- in the /Amazon DynamoDB Developer Guide/. ----- To create a placeholder for repeating occurrences of an attribute name in--- an expression.+-- - /ComparisonOperator/ - A comparator for evaluating attributes. For+-- example, equals, greater than, less than, etc. ----- To prevent special characters in an attribute name from being--- misinterpreted in an expression.+-- The following comparison operators are available: ----- Use the # character in an expression to dereference an attribute name. For--- example, consider the following attribute name:+-- 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN' ----- 'Percentile'+-- For complete descriptions of all comparison operators, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html Condition>. ----- The name of this attribute conflicts with a reserved word, so it cannot be--- used directly in an expression. (For the complete list of reserved words, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around this,--- you could specify the following for /ExpressionAttributeNames/:+sScanFilter :: Lens' Scan (HashMap Text Condition)+sScanFilter = lens _sScanFilter (\ s a -> s{_sScanFilter = a}) . _Default . _Map;++-- | For a parallel /Scan/ request, /TotalSegments/ represents the total+-- number of segments into which the /Scan/ operation will be divided. The+-- value of /TotalSegments/ corresponds to the number of application+-- workers that will perform the parallel scan. For example, if you want to+-- use four application threads to scan a table or an index, specify a+-- /TotalSegments/ value of 4. ----- '{"#P":"Percentile"}'+-- The value for /TotalSegments/ must be greater than or equal to 1, and+-- less than or equal to 1000000. If you specify a /TotalSegments/ value of+-- 1, the /Scan/ operation will be sequential rather than parallel. ----- You could then use this substitution in an expression, as in this example:+-- If you specify /TotalSegments/, you must also specify /Segment/.+sTotalSegments :: Lens' Scan (Maybe Natural)+sTotalSegments = lens _sTotalSegments (\ s a -> s{_sTotalSegments = a}) . mapping _Nat;++-- | A string that contains conditions that DynamoDB applies after the /Scan/+-- operation, but before the data is returned to you. Items that do not+-- satisfy the /FilterExpression/ criteria are not returned. ----- '#P = :val'+-- A /FilterExpression/ is applied after the items have already been read;+-- the process of filtering does not consume any additional read capacity+-- units. ----- Tokens that begin with the : character are /expression attribute values/,--- which are placeholders for the actual value at runtime.+-- For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults Filter Expressions>+-- in the /Amazon DynamoDB Developer Guide/. ----- For more information on expression attribute names, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.-sExpressionAttributeNames :: Lens' Scan (HashMap Text Text)-sExpressionAttributeNames =- lens _sExpressionAttributeNames- (\s a -> s { _sExpressionAttributeNames = a })- . _Map+-- /FilterExpression/ replaces the legacy /ScanFilter/ and+-- /ConditionalOperator/ parameters.+sFilterExpression :: Lens' Scan (Maybe Text)+sFilterExpression = lens _sFilterExpression (\ s a -> s{_sFilterExpression = a}); --- | One or more values that can be substituted in an expression.+-- | A Boolean value that determines the read consistency model during the+-- scan: ----- Use the : (colon) character in an expression to dereference an attribute--- value. For example, suppose that you wanted to check whether the value of the /ProductStatus/ attribute was one of the following:+-- - If /ConsistentRead/ is 'false', then /Scan/ will use eventually+-- consistent reads. The data returned from /Scan/ might not contain+-- the results of other recently completed write operations (PutItem,+-- UpdateItem or DeleteItem). The /Scan/ response might include some+-- stale data. ----- 'Available | Backordered | Discontinued'+-- - If /ConsistentRead/ is 'true', then /Scan/ will use strongly+-- consistent reads. All of the write operations that completed before+-- the /Scan/ began are guaranteed to be contained in the /Scan/+-- response. ----- You would first need to specify /ExpressionAttributeValues/ as follows:+-- The default setting for /ConsistentRead/ is 'false', meaning that+-- eventually consistent reads will be used. ----- '{ ":avail":{"S":"Available"}, ":back":{"S":"Backordered"},":disc":{"S":"Discontinued"} }'+-- Strongly consistent reads are not supported on global secondary indexes.+-- If you scan a global secondary index with /ConsistentRead/ set to true,+-- you will receive a /ValidationException/.+sConsistentRead :: Lens' Scan (Maybe Bool)+sConsistentRead = lens _sConsistentRead (\ s a -> s{_sConsistentRead = a});++-- | One or more substitution tokens for attribute names in an expression.+-- The following are some use cases for using /ExpressionAttributeNames/: ----- You could then use these values in an expression, such as this:+-- - To access an attribute whose name conflicts with a DynamoDB reserved+-- word. ----- 'ProductStatus IN (:avail, :back, :disc)'+-- - To create a placeholder for repeating occurrences of an attribute+-- name in an expression. ----- For more information on expression attribute values, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.-sExpressionAttributeValues :: Lens' Scan (HashMap Text AttributeValue)-sExpressionAttributeValues =- lens _sExpressionAttributeValues- (\s a -> s { _sExpressionAttributeValues = a })- . _Map---- | A string that contains conditions that DynamoDB applies after the /Scan/--- operation, but before the data is returned to you. Items that do not satisfy--- the /FilterExpression/ criteria are not returned.+-- - To prevent special characters in an attribute name from being+-- misinterpreted in an expression. ----- A /FilterExpression/ is applied after the items have already been read; the--- process of filtering does not consume any additional read capacity units.+-- Use the __#__ character in an expression to dereference an attribute+-- name. For example, consider the following attribute name: ----- For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#FilteringResults Filter Expressions> in the /Amazon DynamoDBDeveloper Guide/.+-- - 'Percentile' ----- /FilterExpression/ replaces the legacy /ScanFilter/ and /ConditionalOperator/--- parameters.+-- The name of this attribute conflicts with a reserved word, so it cannot+-- be used directly in an expression. (For the complete list of reserved+-- words, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words>+-- in the /Amazon DynamoDB Developer Guide/). To work around this, you+-- could specify the following for /ExpressionAttributeNames/: ---sFilterExpression :: Lens' Scan (Maybe Text)-sFilterExpression =- lens _sFilterExpression (\s a -> s { _sFilterExpression = a })---- | The name of a secondary index to scan. This index can be any local secondary--- index or global secondary index. Note that if you use the 'IndexName'--- parameter, you must also provide 'TableName'.-sIndexName :: Lens' Scan (Maybe Text)-sIndexName = lens _sIndexName (\s a -> s { _sIndexName = a })---- | The maximum number of items to evaluate (not necessarily the number of--- matching items). If DynamoDB processes the number of items up to the limit--- while processing the results, it stops the operation and returns the matching--- values up to that point, and a key in /LastEvaluatedKey/ to apply in a--- subsequent operation, so that you can pick up where you left off. Also, if--- the processed data set size exceeds 1 MB before DynamoDB reaches this limit,--- it stops the operation and returns the matching values up to the limit, and a--- key in /LastEvaluatedKey/ to apply in a subsequent operation to continue the--- operation. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html Query and Scan> in the /Amazon DynamoDBDeveloper Guide/.-sLimit :: Lens' Scan (Maybe Natural)-sLimit = lens _sLimit (\s a -> s { _sLimit = a }) . mapping _Nat---- | A string that identifies one or more attributes to retrieve from the--- specified table or index. These attributes can include scalars, sets, or--- elements of a JSON document. The attributes in the expression must be--- separated by commas.+-- - '{\"#P\":\"Percentile\"}' ----- If no attribute names are specified, then all attributes will be returned.--- If any of the requested attributes are not found, they will not appear in the--- result.+-- You could then use this substitution in an expression, as in this+-- example: ----- For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes> in the /Amazon DynamoDBDeveloper Guide/.+-- - '#P = :val' ----- /ProjectionExpression/ replaces the legacy /AttributesToGet/ parameter.+-- Tokens that begin with the __:__ character are /expression attribute+-- values/, which are placeholders for the actual value at runtime. ---sProjectionExpression :: Lens' Scan (Maybe Text)-sProjectionExpression =- lens _sProjectionExpression (\s a -> s { _sProjectionExpression = a })--sReturnConsumedCapacity :: Lens' Scan (Maybe ReturnConsumedCapacity)-sReturnConsumedCapacity =- lens _sReturnConsumedCapacity (\s a -> s { _sReturnConsumedCapacity = a })+-- For more information on expression attribute names, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/.+sExpressionAttributeNames :: Lens' Scan (HashMap Text Text)+sExpressionAttributeNames = lens _sExpressionAttributeNames (\ s a -> s{_sExpressionAttributeNames = a}) . _Default . _Map; -- | This is a legacy parameter, for backward compatibility. New applications--- should use /FilterExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.------ A condition that evaluates the scan results and returns only the desired--- values.+-- should use /ProjectionExpression/ instead. Do not combine legacy+-- parameters and expression parameters in a single API call; otherwise,+-- DynamoDB will return a /ValidationException/ exception. ----- This parameter does not support attributes of type List or Map.+-- This parameter allows you to retrieve attributes of type List or Map;+-- however, it cannot retrieve individual elements within a List or a Map. ----- If you specify more than one condition in the /ScanFilter/ map, then by--- default all of the conditions must evaluate to true. In other words, the--- conditions are ANDed together. (You can use the /ConditionalOperator/ parameter--- to OR the conditions instead. If you do this, then at least one of the--- conditions must evaluate to true, rather than all of them.)+-- The names of one or more attributes to retrieve. If no attribute names+-- are provided, then all attributes will be returned. If any of the+-- requested attributes are not found, they will not appear in the result. ----- Each /ScanFilter/ element consists of an attribute name to compare, along with--- the following:+-- Note that /AttributesToGet/ has no effect on provisioned throughput+-- consumption. DynamoDB determines capacity units consumed based on item+-- size, not on the amount of data that is returned to an application.+sAttributesToGet :: Lens' Scan (Maybe (NonEmpty Text))+sAttributesToGet = lens _sAttributesToGet (\ s a -> s{_sAttributesToGet = a}) . mapping _List1;++-- | Undocumented member.+sReturnConsumedCapacity :: Lens' Scan (Maybe ReturnConsumedCapacity)+sReturnConsumedCapacity = lens _sReturnConsumedCapacity (\ s a -> s{_sReturnConsumedCapacity = a});++-- | One or more values that can be substituted in an expression. ----- /AttributeValueList/ - One or more values to evaluate against the supplied--- attribute. The number of values in the list depends on the operator specified--- in /ComparisonOperator/ .+-- Use the __:__ (colon) character in an expression to dereference an+-- attribute value. For example, suppose that you wanted to check whether+-- the value of the /ProductStatus/ attribute was one of the following: ----- For type Number, value comparisons are numeric.+-- 'Available | Backordered | Discontinued' ----- String value comparisons for greater than, equals, or less than are based on--- ASCII character code values. For example, 'a' is greater than 'A', and 'a' is--- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.+-- You would first need to specify /ExpressionAttributeValues/ as follows: ----- For Binary, DynamoDB treats each byte of the binary data as unsigned when it--- compares binary values.+-- '{ \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"} }' ----- For information on specifying data types in JSON, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html JSON Data Format> in--- the /Amazon DynamoDB Developer Guide/.+-- You could then use these values in an expression, such as this: ----- /ComparisonOperator/ - A comparator for evaluating attributes. For example,--- equals, greater than, less than, etc.+-- 'ProductStatus IN (:avail, :back, :disc)' ----- The following comparison operators are available:+-- For more information on expression attribute values, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions>+-- in the /Amazon DynamoDB Developer Guide/.+sExpressionAttributeValues :: Lens' Scan (HashMap Text AttributeValue)+sExpressionAttributeValues = lens _sExpressionAttributeValues (\ s a -> s{_sExpressionAttributeValues = a}) . _Default . _Map;++-- | The maximum number of items to evaluate (not necessarily the number of+-- matching items). If DynamoDB processes the number of items up to the+-- limit while processing the results, it stops the operation and returns+-- the matching values up to that point, and a key in /LastEvaluatedKey/ to+-- apply in a subsequent operation, so that you can pick up where you left+-- off. Also, if the processed data set size exceeds 1 MB before DynamoDB+-- reaches this limit, it stops the operation and returns the matching+-- values up to the limit, and a key in /LastEvaluatedKey/ to apply in a+-- subsequent operation to continue the operation. For more information,+-- see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html Query and Scan>+-- in the /Amazon DynamoDB Developer Guide/.+sLimit :: Lens' Scan (Maybe Natural)+sLimit = lens _sLimit (\ s a -> s{_sLimit = a}) . mapping _Nat;++-- | The attributes to be returned in the result. You can retrieve all item+-- attributes, specific item attributes, or the count of matching items. ----- 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |BEGINS_WITH | IN | BETWEEN'+-- - 'ALL_ATTRIBUTES' - Returns all of the item attributes. ----- For complete descriptions of all comparison operators, see <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Condition.html Condition>.+-- - 'COUNT' - Returns the number of matching items, rather than the+-- matching items themselves. --+-- - 'SPECIFIC_ATTRIBUTES' - Returns only the attributes listed in+-- /AttributesToGet/. This return value is equivalent to specifying+-- /AttributesToGet/ without specifying any value for /Select/. ---sScanFilter :: Lens' Scan (HashMap Text Condition)-sScanFilter = lens _sScanFilter (\s a -> s { _sScanFilter = a }) . _Map+-- If neither /Select/ nor /AttributesToGet/ are specified, DynamoDB+-- defaults to 'ALL_ATTRIBUTES'. You cannot use both /AttributesToGet/ and+-- /Select/ together in a single request, unless the value for /Select/ is+-- 'SPECIFIC_ATTRIBUTES'. (This usage is equivalent to specifying+-- /AttributesToGet/ without any value for /Select/.)+sSelect :: Lens' Scan (Maybe Select)+sSelect = lens _sSelect (\ s a -> s{_sSelect = a}); --- | For a parallel /Scan/ request, /Segment/ identifies an individual segment to be--- scanned by an application worker.+-- | For a parallel /Scan/ request, /Segment/ identifies an individual+-- segment to be scanned by an application worker. ----- Segment IDs are zero-based, so the first segment is always 0. For example,--- if you want to use four application threads to scan a table or an index, then--- the first thread specifies a /Segment/ value of 0, the second thread specifies--- 1, and so on.+-- Segment IDs are zero-based, so the first segment is always 0. For+-- example, if you want to use four application threads to scan a table or+-- an index, then the first thread specifies a /Segment/ value of 0, the+-- second thread specifies 1, and so on. ----- The value of /LastEvaluatedKey/ returned from a parallel /Scan/ request must be--- used as /ExclusiveStartKey/ with the same segment ID in a subsequent /Scan/--- operation.+-- The value of /LastEvaluatedKey/ returned from a parallel /Scan/ request+-- must be used as /ExclusiveStartKey/ with the same segment ID in a+-- subsequent /Scan/ operation. ----- The value for /Segment/ must be greater than or equal to 0, and less than the--- value provided for /TotalSegments/.+-- The value for /Segment/ must be greater than or equal to 0, and less+-- than the value provided for /TotalSegments/. -- -- If you provide /Segment/, you must also provide /TotalSegments/. sSegment :: Lens' Scan (Maybe Natural)-sSegment = lens _sSegment (\s a -> s { _sSegment = a }) . mapping _Nat+sSegment = lens _sSegment (\ s a -> s{_sSegment = a}) . mapping _Nat; --- | The attributes to be returned in the result. You can retrieve all item--- attributes, specific item attributes, or the count of matching items.+-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /FilterExpression/ instead. Do not combine legacy parameters+-- and expression parameters in a single API call; otherwise, DynamoDB will+-- return a /ValidationException/ exception. ----- 'ALL_ATTRIBUTES' - Returns all of the item attributes.+-- A logical operator to apply to the conditions in a /ScanFilter/ map: ----- 'COUNT' - Returns the number of matching items, rather than the matching--- items themselves.+-- - 'AND' - If all of the conditions evaluate to true, then the entire+-- map evaluates to true. ----- 'SPECIFIC_ATTRIBUTES' - Returns only the attributes listed in /AttributesToGet/. This return value is equivalent to specifying /AttributesToGet/ without--- specifying any value for /Select/.+-- - 'OR' - If at least one of the conditions evaluate to true, then the+-- entire map evaluates to true. ----- If neither /Select/ nor /AttributesToGet/ are specified, DynamoDB defaults to 'ALL_ATTRIBUTES'. You cannot use both /AttributesToGet/ and /Select/ together in a single--- request, unless the value for /Select/ is 'SPECIFIC_ATTRIBUTES'. (This usage is--- equivalent to specifying /AttributesToGet/ without any value for /Select/.)-sSelect :: Lens' Scan (Maybe Select)-sSelect = lens _sSelect (\s a -> s { _sSelect = a })---- | The name of the table containing the requested items; or, if you provide 'IndexName', the name of the table to which that index belongs.-sTableName :: Lens' Scan Text-sTableName = lens _sTableName (\s a -> s { _sTableName = a })+-- If you omit /ConditionalOperator/, then 'AND' is the default.+--+-- The operation will succeed only if the entire map evaluates to true.+--+-- This parameter does not support attributes of type List or Map.+sConditionalOperator :: Lens' Scan (Maybe ConditionalOperator)+sConditionalOperator = lens _sConditionalOperator (\ s a -> s{_sConditionalOperator = a}); --- | For a parallel /Scan/ request, /TotalSegments/ represents the total number of--- segments into which the /Scan/ operation will be divided. The value of /TotalSegments/ corresponds to the number of application workers that will perform the--- parallel scan. For example, if you want to use four application threads to--- scan a table or an index, specify a /TotalSegments/ value of 4.+-- | The primary key of the first item that this operation will evaluate. Use+-- the value that was returned for /LastEvaluatedKey/ in the previous+-- operation. ----- The value for /TotalSegments/ must be greater than or equal to 1, and less--- than or equal to 1000000. If you specify a /TotalSegments/ value of 1, the /Scan/--- operation will be sequential rather than parallel.+-- The data type for /ExclusiveStartKey/ must be String, Number or Binary.+-- No set data types are allowed. ----- If you specify /TotalSegments/, you must also specify /Segment/.-sTotalSegments :: Lens' Scan (Maybe Natural)-sTotalSegments = lens _sTotalSegments (\s a -> s { _sTotalSegments = a }) . mapping _Nat+-- In a parallel scan, a /Scan/ request that includes /ExclusiveStartKey/+-- must specify the same segment whose previous /Scan/ returned the+-- corresponding value of /LastEvaluatedKey/.+sExclusiveStartKey :: Lens' Scan (HashMap Text AttributeValue)+sExclusiveStartKey = lens _sExclusiveStartKey (\ s a -> s{_sExclusiveStartKey = a}) . _Default . _Map; -data ScanResponse = ScanResponse- { _srConsumedCapacity :: Maybe ConsumedCapacity- , _srCount :: Maybe Int- , _srItems :: List "Items" (Map Text AttributeValue)- , _srLastEvaluatedKey :: Map Text AttributeValue- , _srScannedCount :: Maybe Int- } deriving (Eq, Read, Show)+-- | The name of a secondary index to scan. This index can be any local+-- secondary index or global secondary index. Note that if you use the+-- 'IndexName' parameter, you must also provide 'TableName'.+sIndexName :: Lens' Scan (Maybe Text)+sIndexName = lens _sIndexName (\ s a -> s{_sIndexName = a}); --- | 'ScanResponse' constructor.+-- | The name of the table containing the requested items; or, if you provide+-- 'IndexName', the name of the table to which that index belongs.+sTableName :: Lens' Scan Text+sTableName = lens _sTableName (\ s a -> s{_sTableName = a});++instance AWSPager Scan where+ page rq rs+ | stop (rs ^. srsLastEvaluatedKey) = Nothing+ | stop (rs ^. srsItems) = Nothing+ | otherwise =+ Just $ rq &+ sExclusiveStartKey .~ rs ^. srsLastEvaluatedKey++instance AWSRequest Scan where+ type Sv Scan = DynamoDB+ type Rs Scan = ScanResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ ScanResponse' <$>+ (x .?> "LastEvaluatedKey" .!@ mempty) <*>+ (x .?> "Count")+ <*> (x .?> "ScannedCount")+ <*> (x .?> "Items" .!@ mempty)+ <*> (x .?> "ConsumedCapacity")+ <*> (pure (fromEnum s)))++instance ToHeaders Scan where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.Scan" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)])++instance ToJSON Scan where+ toJSON Scan'{..}+ = object+ ["ProjectionExpression" .= _sProjectionExpression,+ "ScanFilter" .= _sScanFilter,+ "TotalSegments" .= _sTotalSegments,+ "FilterExpression" .= _sFilterExpression,+ "ConsistentRead" .= _sConsistentRead,+ "ExpressionAttributeNames" .=+ _sExpressionAttributeNames,+ "AttributesToGet" .= _sAttributesToGet,+ "ReturnConsumedCapacity" .= _sReturnConsumedCapacity,+ "ExpressionAttributeValues" .=+ _sExpressionAttributeValues,+ "Limit" .= _sLimit, "Select" .= _sSelect,+ "Segment" .= _sSegment,+ "ConditionalOperator" .= _sConditionalOperator,+ "ExclusiveStartKey" .= _sExclusiveStartKey,+ "IndexName" .= _sIndexName,+ "TableName" .= _sTableName]++instance ToPath Scan where+ toPath = const "/"++instance ToQuery Scan where+ toQuery = const mempty++-- | Represents the output of a /Scan/ operation. ----- The fields accessible through corresponding lenses are:+-- /See:/ 'scanResponse' smart constructor.+data ScanResponse = ScanResponse'+ { _srsLastEvaluatedKey :: !(Maybe (Map Text AttributeValue))+ , _srsCount :: !(Maybe Int)+ , _srsScannedCount :: !(Maybe Int)+ , _srsItems :: !(Maybe [Map Text AttributeValue])+ , _srsConsumedCapacity :: !(Maybe ConsumedCapacity)+ , _srsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ScanResponse' with the minimum fields required to make a request. ----- * 'srConsumedCapacity' @::@ 'Maybe' 'ConsumedCapacity'+-- Use one of the following lenses to modify other fields as desired: ----- * 'srCount' @::@ 'Maybe' 'Int'+-- * 'srsLastEvaluatedKey' ----- * 'srItems' @::@ ['HashMap' 'Text' 'AttributeValue']+-- * 'srsCount' ----- * 'srLastEvaluatedKey' @::@ 'HashMap' 'Text' 'AttributeValue'+-- * 'srsScannedCount' ----- * 'srScannedCount' @::@ 'Maybe' 'Int'+-- * 'srsItems' ---scanResponse :: ScanResponse-scanResponse = ScanResponse- { _srItems = mempty- , _srCount = Nothing- , _srScannedCount = Nothing- , _srLastEvaluatedKey = mempty- , _srConsumedCapacity = Nothing+-- * 'srsConsumedCapacity'+--+-- * 'srsStatus'+scanResponse+ :: Int -- ^ 'srsStatus'+ -> ScanResponse+scanResponse pStatus_ =+ ScanResponse'+ { _srsLastEvaluatedKey = Nothing+ , _srsCount = Nothing+ , _srsScannedCount = Nothing+ , _srsItems = Nothing+ , _srsConsumedCapacity = Nothing+ , _srsStatus = pStatus_ } -srConsumedCapacity :: Lens' ScanResponse (Maybe ConsumedCapacity)-srConsumedCapacity =- lens _srConsumedCapacity (\s a -> s { _srConsumedCapacity = a })---- | The number of items in the response.+-- | The primary key of the item where the operation stopped, inclusive of+-- the previous result set. Use this value to start a new operation,+-- excluding this value in the new request. ----- If you set /ScanFilter/ in the request, then /Count/ is the number of items--- returned after the filter was applied, and /ScannedCount/ is the number of--- matching items before the filter was applied.+-- If /LastEvaluatedKey/ is empty, then the \"last page\" of results has+-- been processed and there is no more data to be retrieved. ----- If you did not use a filter in the request, then /Count/ is the same as /ScannedCount/.-srCount :: Lens' ScanResponse (Maybe Int)-srCount = lens _srCount (\s a -> s { _srCount = a })---- | An array of item attributes that match the scan criteria. Each element in--- this array consists of an attribute name and the value for that attribute.-srItems :: Lens' ScanResponse [HashMap Text AttributeValue]-srItems = lens _srItems (\s a -> s { _srItems = a }) . _List+-- If /LastEvaluatedKey/ is not empty, it does not necessarily mean that+-- there is more data in the result set. The only way to know when you have+-- reached the end of the result set is when /LastEvaluatedKey/ is empty.+srsLastEvaluatedKey :: Lens' ScanResponse (HashMap Text AttributeValue)+srsLastEvaluatedKey = lens _srsLastEvaluatedKey (\ s a -> s{_srsLastEvaluatedKey = a}) . _Default . _Map; --- | The primary key of the item where the operation stopped, inclusive of the--- previous result set. Use this value to start a new operation, excluding this--- value in the new request.+-- | The number of items in the response. ----- If /LastEvaluatedKey/ is empty, then the "last page" of results has been--- processed and there is no more data to be retrieved.+-- If you set /ScanFilter/ in the request, then /Count/ is the number of+-- items returned after the filter was applied, and /ScannedCount/ is the+-- number of matching items before the filter was applied. ----- If /LastEvaluatedKey/ is not empty, it does not necessarily mean that there is--- more data in the result set. The only way to know when you have reached the--- end of the result set is when /LastEvaluatedKey/ is empty.-srLastEvaluatedKey :: Lens' ScanResponse (HashMap Text AttributeValue)-srLastEvaluatedKey =- lens _srLastEvaluatedKey (\s a -> s { _srLastEvaluatedKey = a })- . _Map+-- If you did not use a filter in the request, then /Count/ is the same as+-- /ScannedCount/.+srsCount :: Lens' ScanResponse (Maybe Int)+srsCount = lens _srsCount (\ s a -> s{_srsCount = a}); --- | The number of items evaluated, before any /ScanFilter/ is applied. A high /ScannedCount/ value with few, or no, /Count/ results indicates an inefficient /Scan/--- operation. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count Count and ScannedCount> in the /AmazonDynamoDB Developer Guide/.+-- | The number of items evaluated, before any /ScanFilter/ is applied. A+-- high /ScannedCount/ value with few, or no, /Count/ results indicates an+-- inefficient /Scan/ operation. For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/QueryAndScan.html#Count Count and ScannedCount>+-- in the /Amazon DynamoDB Developer Guide/. ----- If you did not use a filter in the request, then /ScannedCount/ is the same as /Count/.-srScannedCount :: Lens' ScanResponse (Maybe Int)-srScannedCount = lens _srScannedCount (\s a -> s { _srScannedCount = a })--instance ToPath Scan where- toPath = const "/"--instance ToQuery Scan where- toQuery = const mempty--instance ToHeaders Scan--instance ToJSON Scan where- toJSON Scan{..} = object- [ "TableName" .= _sTableName- , "IndexName" .= _sIndexName- , "AttributesToGet" .= _sAttributesToGet- , "Limit" .= _sLimit- , "Select" .= _sSelect- , "ScanFilter" .= _sScanFilter- , "ConditionalOperator" .= _sConditionalOperator- , "ExclusiveStartKey" .= _sExclusiveStartKey- , "ReturnConsumedCapacity" .= _sReturnConsumedCapacity- , "TotalSegments" .= _sTotalSegments- , "Segment" .= _sSegment- , "ProjectionExpression" .= _sProjectionExpression- , "FilterExpression" .= _sFilterExpression- , "ExpressionAttributeNames" .= _sExpressionAttributeNames- , "ExpressionAttributeValues" .= _sExpressionAttributeValues- ]--instance AWSRequest Scan where- type Sv Scan = DynamoDB- type Rs Scan = ScanResponse+-- If you did not use a filter in the request, then /ScannedCount/ is the+-- same as /Count/.+srsScannedCount :: Lens' ScanResponse (Maybe Int)+srsScannedCount = lens _srsScannedCount (\ s a -> s{_srsScannedCount = a}); - request = post "Scan"- response = jsonResponse+-- | An array of item attributes that match the scan criteria. Each element+-- in this array consists of an attribute name and the value for that+-- attribute.+srsItems :: Lens' ScanResponse [HashMap Text AttributeValue]+srsItems = lens _srsItems (\ s a -> s{_srsItems = a}) . _Default . _Coerce; -instance FromJSON ScanResponse where- parseJSON = withObject "ScanResponse" $ \o -> ScanResponse- <$> o .:? "ConsumedCapacity"- <*> o .:? "Count"- <*> o .:? "Items" .!= mempty- <*> o .:? "LastEvaluatedKey" .!= mempty- <*> o .:? "ScannedCount"+-- | Undocumented member.+srsConsumedCapacity :: Lens' ScanResponse (Maybe ConsumedCapacity)+srsConsumedCapacity = lens _srsConsumedCapacity (\ s a -> s{_srsConsumedCapacity = a}); -instance AWSPager Scan where- page rq rs- | stop (rs ^. srLastEvaluatedKey) = Nothing- | otherwise = Just $ rq- & sExclusiveStartKey .~ rs ^. srLastEvaluatedKey+-- | The response status code.+srsStatus :: Lens' ScanResponse Int+srsStatus = lens _srsStatus (\ s a -> s{_srsStatus = a});
gen/Network/AWS/DynamoDB/Types.hs view
@@ -1,2756 +1,360 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}-{-# LANGUAGE ViewPatterns #-}--{-# OPTIONS_GHC -fno-warn-unused-imports #-}---- Module : Network.AWS.DynamoDB.Types--- 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)------ Derived from AWS service descriptions, licensed under Apache 2.0.--module Network.AWS.DynamoDB.Types- (- -- * Service- DynamoDB- -- ** Error- , JSONError-- -- * WriteRequest- , WriteRequest- , writeRequest- , wDeleteRequest- , wPutRequest-- -- * ProvisionedThroughputDescription- , ProvisionedThroughputDescription- , provisionedThroughputDescription- , ptdLastDecreaseDateTime- , ptdLastIncreaseDateTime- , ptdNumberOfDecreasesToday- , ptdReadCapacityUnits- , ptdWriteCapacityUnits-- -- * KeyType- , KeyType (..)-- -- * AttributeValue- , AttributeValue- , attributeValue- , avB- , avBOOL- , avBS- , avL- , avM- , avN- , avNS- , avNULL- , avS- , avSS-- -- * IndexStatus- , IndexStatus (..)-- -- * ProvisionedThroughput- , ProvisionedThroughput- , provisionedThroughput- , ptReadCapacityUnits- , ptWriteCapacityUnits-- -- * TableStatus- , TableStatus (..)-- -- * ProjectionType- , ProjectionType (..)-- -- * TableDescription- , TableDescription- , tableDescription- , tdAttributeDefinitions- , tdCreationDateTime- , tdGlobalSecondaryIndexes- , tdItemCount- , tdKeySchema- , tdLocalSecondaryIndexes- , tdProvisionedThroughput- , tdTableName- , tdTableSizeBytes- , tdTableStatus-- -- * KeysAndAttributes- , KeysAndAttributes- , keysAndAttributes- , kaaAttributesToGet- , kaaConsistentRead- , kaaExpressionAttributeNames- , kaaKeys- , kaaProjectionExpression-- -- * ReturnConsumedCapacity- , ReturnConsumedCapacity (..)-- -- * ReturnItemCollectionMetrics- , ReturnItemCollectionMetrics (..)-- -- * AttributeValueUpdate- , AttributeValueUpdate- , attributeValueUpdate- , avuAction- , avuValue-- -- * ExpectedAttributeValue- , ExpectedAttributeValue- , expectedAttributeValue- , eavAttributeValueList- , eavComparisonOperator- , eavExists- , eavValue-- -- * AttributeDefinition- , AttributeDefinition- , attributeDefinition- , adAttributeName- , adAttributeType-- -- * ComparisonOperator- , ComparisonOperator (..)-- -- * ReturnValue- , ReturnValue (..)-- -- * LocalSecondaryIndex- , LocalSecondaryIndex- , localSecondaryIndex- , lsiIndexName- , lsiKeySchema- , lsiProjection-- -- * GlobalSecondaryIndexDescription- , GlobalSecondaryIndexDescription- , globalSecondaryIndexDescription- , gsidBackfilling- , gsidIndexName- , gsidIndexSizeBytes- , gsidIndexStatus- , gsidItemCount- , gsidKeySchema- , gsidProjection- , gsidProvisionedThroughput-- -- * ItemCollectionMetrics- , ItemCollectionMetrics- , itemCollectionMetrics- , icmItemCollectionKey- , icmSizeEstimateRangeGB-- -- * Capacity- , Capacity- , capacity- , cCapacityUnits-- -- * ConsumedCapacity- , ConsumedCapacity- , consumedCapacity- , ccCapacityUnits- , ccGlobalSecondaryIndexes- , ccLocalSecondaryIndexes- , ccTable- , ccTableName-- -- * GlobalSecondaryIndex- , GlobalSecondaryIndex- , globalSecondaryIndex- , gsiIndexName- , gsiKeySchema- , gsiProjection- , gsiProvisionedThroughput-- -- * LocalSecondaryIndexDescription- , LocalSecondaryIndexDescription- , localSecondaryIndexDescription- , lsidIndexName- , lsidIndexSizeBytes- , lsidItemCount- , lsidKeySchema- , lsidProjection-- -- * AttributeAction- , AttributeAction (..)-- -- * ScalarAttributeType- , ScalarAttributeType (..)-- -- * Projection- , Projection- , projection- , pNonKeyAttributes- , pProjectionType-- -- * CreateGlobalSecondaryIndexAction- , CreateGlobalSecondaryIndexAction- , createGlobalSecondaryIndexAction- , cgsiaIndexName- , cgsiaKeySchema- , cgsiaProjection- , cgsiaProvisionedThroughput-- -- * Select- , Select (..)-- -- * KeySchemaElement- , KeySchemaElement- , keySchemaElement- , kseAttributeName- , kseKeyType-- -- * DeleteGlobalSecondaryIndexAction- , DeleteGlobalSecondaryIndexAction- , deleteGlobalSecondaryIndexAction- , dgsiaIndexName-- -- * DeleteRequest- , DeleteRequest- , deleteRequest- , dKey-- -- * UpdateGlobalSecondaryIndexAction- , UpdateGlobalSecondaryIndexAction- , updateGlobalSecondaryIndexAction- , ugsiaIndexName- , ugsiaProvisionedThroughput-- -- * PutRequest- , PutRequest- , putRequest- , pItem-- -- * Condition- , Condition- , condition- , cAttributeValueList- , cComparisonOperator-- -- * ConditionalOperator- , ConditionalOperator (..)-- -- * GlobalSecondaryIndexUpdate- , GlobalSecondaryIndexUpdate- , globalSecondaryIndexUpdate- , gsiuCreate- , gsiuDelete- , gsiuUpdate- ) where--import Network.AWS.Prelude-import Network.AWS.Signing-import qualified GHC.Exts---- | Version @2012-08-10@ of the Amazon DynamoDB service.-data DynamoDB--instance AWSService DynamoDB where- type Sg DynamoDB = V4- type Er DynamoDB = JSONError-- service = service'- where- service' :: Service DynamoDB- service' = Service- { _svcAbbrev = "DynamoDB"- , _svcPrefix = "dynamodb"- , _svcVersion = "2012-08-10"- , _svcTargetPrefix = Just "DynamoDB_20120810"- , _svcJSONVersion = Just "1.0"- , _svcHandle = handle- , _svcRetry = retry- }-- handle :: Status- -> Maybe (LazyByteString -> ServiceError JSONError)- handle = jsonError statusSuccess service'-- retry :: Retry DynamoDB- retry = Exponential- { _retryBase = 0.05- , _retryGrowth = 2- , _retryAttempts = 10- , _retryCheck = check- }-- check :: Status- -> JSONError- -> Bool- check (statusCode -> s) (awsErrorCode -> e)- | s == 400 && (Just "ThrottlingException") == e = True -- Throttling- | s == 400 && (Just "ProvisionedThroughputExceededException") == e = True -- Throughput Exceeded- | s == 500 = True -- General Server Error- | s == 509 = True -- Limit Exceeded- | s == 503 = True -- Service Unavailable- | otherwise = False--data WriteRequest = WriteRequest- { _wDeleteRequest :: Maybe DeleteRequest- , _wPutRequest :: Maybe PutRequest- } deriving (Eq, Read, Show)---- | 'WriteRequest' constructor.------ The fields accessible through corresponding lenses are:------ * 'wDeleteRequest' @::@ 'Maybe' 'DeleteRequest'------ * 'wPutRequest' @::@ 'Maybe' 'PutRequest'----writeRequest :: WriteRequest-writeRequest = WriteRequest- { _wPutRequest = Nothing- , _wDeleteRequest = Nothing- }---- | A request to perform a /DeleteItem/ operation.-wDeleteRequest :: Lens' WriteRequest (Maybe DeleteRequest)-wDeleteRequest = lens _wDeleteRequest (\s a -> s { _wDeleteRequest = a })---- | A request to perform a /PutItem/ operation.-wPutRequest :: Lens' WriteRequest (Maybe PutRequest)-wPutRequest = lens _wPutRequest (\s a -> s { _wPutRequest = a })--instance FromJSON WriteRequest where- parseJSON = withObject "WriteRequest" $ \o -> WriteRequest- <$> o .:? "DeleteRequest"- <*> o .:? "PutRequest"--instance ToJSON WriteRequest where- toJSON WriteRequest{..} = object- [ "PutRequest" .= _wPutRequest- , "DeleteRequest" .= _wDeleteRequest- ]--data ProvisionedThroughputDescription = ProvisionedThroughputDescription- { _ptdLastDecreaseDateTime :: Maybe POSIX- , _ptdLastIncreaseDateTime :: Maybe POSIX- , _ptdNumberOfDecreasesToday :: Maybe Nat- , _ptdReadCapacityUnits :: Maybe Nat- , _ptdWriteCapacityUnits :: Maybe Nat- } deriving (Eq, Ord, Read, Show)---- | 'ProvisionedThroughputDescription' constructor.------ The fields accessible through corresponding lenses are:------ * 'ptdLastDecreaseDateTime' @::@ 'Maybe' 'UTCTime'------ * 'ptdLastIncreaseDateTime' @::@ 'Maybe' 'UTCTime'------ * 'ptdNumberOfDecreasesToday' @::@ 'Maybe' 'Natural'------ * 'ptdReadCapacityUnits' @::@ 'Maybe' 'Natural'------ * 'ptdWriteCapacityUnits' @::@ 'Maybe' 'Natural'----provisionedThroughputDescription :: ProvisionedThroughputDescription-provisionedThroughputDescription = ProvisionedThroughputDescription- { _ptdLastIncreaseDateTime = Nothing- , _ptdLastDecreaseDateTime = Nothing- , _ptdNumberOfDecreasesToday = Nothing- , _ptdReadCapacityUnits = Nothing- , _ptdWriteCapacityUnits = Nothing- }---- | The date and time of the last provisioned throughput decrease for this table.-ptdLastDecreaseDateTime :: Lens' ProvisionedThroughputDescription (Maybe UTCTime)-ptdLastDecreaseDateTime =- lens _ptdLastDecreaseDateTime (\s a -> s { _ptdLastDecreaseDateTime = a })- . mapping _Time---- | The date and time of the last provisioned throughput increase for this table.-ptdLastIncreaseDateTime :: Lens' ProvisionedThroughputDescription (Maybe UTCTime)-ptdLastIncreaseDateTime =- lens _ptdLastIncreaseDateTime (\s a -> s { _ptdLastIncreaseDateTime = a })- . mapping _Time---- | The number of provisioned throughput decreases for this table during this UTC--- calendar day. For current maximums on provisioned throughput decreases, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html Limits> in the /Amazon DynamoDB Developer Guide/.-ptdNumberOfDecreasesToday :: Lens' ProvisionedThroughputDescription (Maybe Natural)-ptdNumberOfDecreasesToday =- lens _ptdNumberOfDecreasesToday- (\s a -> s { _ptdNumberOfDecreasesToday = a })- . mapping _Nat---- | The maximum number of strongly consistent reads consumed per second before--- DynamoDB returns a /ThrottlingException/. Eventually consistent reads require--- less effort than strongly consistent reads, so a setting of 50 /ReadCapacityUnits/ per second provides 100 eventually consistent /ReadCapacityUnits/ per second.-ptdReadCapacityUnits :: Lens' ProvisionedThroughputDescription (Maybe Natural)-ptdReadCapacityUnits =- lens _ptdReadCapacityUnits (\s a -> s { _ptdReadCapacityUnits = a })- . mapping _Nat---- | The maximum number of writes consumed per second before DynamoDB returns a /ThrottlingException/.-ptdWriteCapacityUnits :: Lens' ProvisionedThroughputDescription (Maybe Natural)-ptdWriteCapacityUnits =- lens _ptdWriteCapacityUnits (\s a -> s { _ptdWriteCapacityUnits = a })- . mapping _Nat--instance FromJSON ProvisionedThroughputDescription where- parseJSON = withObject "ProvisionedThroughputDescription" $ \o -> ProvisionedThroughputDescription- <$> o .:? "LastDecreaseDateTime"- <*> o .:? "LastIncreaseDateTime"- <*> o .:? "NumberOfDecreasesToday"- <*> o .:? "ReadCapacityUnits"- <*> o .:? "WriteCapacityUnits"--instance ToJSON ProvisionedThroughputDescription where- toJSON ProvisionedThroughputDescription{..} = object- [ "LastIncreaseDateTime" .= _ptdLastIncreaseDateTime- , "LastDecreaseDateTime" .= _ptdLastDecreaseDateTime- , "NumberOfDecreasesToday" .= _ptdNumberOfDecreasesToday- , "ReadCapacityUnits" .= _ptdReadCapacityUnits- , "WriteCapacityUnits" .= _ptdWriteCapacityUnits- ]--data KeyType- = Hash -- ^ HASH- | Range -- ^ RANGE- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable KeyType--instance FromText KeyType where- parser = takeLowerText >>= \case- "hash" -> pure Hash- "range" -> pure Range- e -> fail $- "Failure parsing KeyType from " ++ show e--instance ToText KeyType where- toText = \case- Hash -> "HASH"- Range -> "RANGE"--instance ToByteString KeyType-instance ToHeader KeyType-instance ToQuery KeyType--instance FromJSON KeyType where- parseJSON = parseJSONText "KeyType"--instance ToJSON KeyType where- toJSON = toJSONText--data AttributeValue = AttributeValue- { _avB :: Maybe Base64- , _avBOOL :: Maybe Bool- , _avBS :: List "BS" Base64- , _avL :: List "L" AttributeValue- , _avM :: Map Text AttributeValue- , _avN :: Maybe Text- , _avNS :: List "NS" Text- , _avNULL :: Maybe Bool- , _avS :: Maybe Text- , _avSS :: List "SS" Text- } deriving (Eq, Read, Show)---- | 'AttributeValue' constructor.------ The fields accessible through corresponding lenses are:------ * 'avB' @::@ 'Maybe' 'Base64'------ * 'avBOOL' @::@ 'Maybe' 'Bool'------ * 'avBS' @::@ ['Base64']------ * 'avL' @::@ ['AttributeValue']------ * 'avM' @::@ 'HashMap' 'Text' 'AttributeValue'------ * 'avN' @::@ 'Maybe' 'Text'------ * 'avNS' @::@ ['Text']------ * 'avNULL' @::@ 'Maybe' 'Bool'------ * 'avS' @::@ 'Maybe' 'Text'------ * 'avSS' @::@ ['Text']----attributeValue :: AttributeValue-attributeValue = AttributeValue- { _avS = Nothing- , _avN = Nothing- , _avB = Nothing- , _avSS = mempty- , _avNS = mempty- , _avBS = mempty- , _avM = mempty- , _avL = mempty- , _avNULL = Nothing- , _avBOOL = Nothing- }---- | A Binary data type.-avB :: Lens' AttributeValue (Maybe Base64)-avB = lens _avB (\s a -> s { _avB = a })---- | A Boolean data type.-avBOOL :: Lens' AttributeValue (Maybe Bool)-avBOOL = lens _avBOOL (\s a -> s { _avBOOL = a })---- | A Binary Set data type.-avBS :: Lens' AttributeValue [Base64]-avBS = lens _avBS (\s a -> s { _avBS = a }) . _List---- | A List of attribute values.-avL :: Lens' AttributeValue [AttributeValue]-avL = lens _avL (\s a -> s { _avL = a }) . _List---- | A Map of attribute values.-avM :: Lens' AttributeValue (HashMap Text AttributeValue)-avM = lens _avM (\s a -> s { _avM = a }) . _Map---- | A Number data type.-avN :: Lens' AttributeValue (Maybe Text)-avN = lens _avN (\s a -> s { _avN = a })---- | A Number Set data type.-avNS :: Lens' AttributeValue [Text]-avNS = lens _avNS (\s a -> s { _avNS = a }) . _List---- | A Null data type.-avNULL :: Lens' AttributeValue (Maybe Bool)-avNULL = lens _avNULL (\s a -> s { _avNULL = a })---- | A String data type.-avS :: Lens' AttributeValue (Maybe Text)-avS = lens _avS (\s a -> s { _avS = a })---- | A String Set data type.-avSS :: Lens' AttributeValue [Text]-avSS = lens _avSS (\s a -> s { _avSS = a }) . _List--instance FromJSON AttributeValue where- parseJSON = withObject "AttributeValue" $ \o -> AttributeValue- <$> o .:? "B"- <*> o .:? "BOOL"- <*> o .:? "BS" .!= mempty- <*> o .:? "L" .!= mempty- <*> o .:? "M" .!= mempty- <*> o .:? "N"- <*> o .:? "NS" .!= mempty- <*> o .:? "NULL"- <*> o .:? "S"- <*> o .:? "SS" .!= mempty--instance ToJSON AttributeValue where- toJSON AttributeValue{..} = object- [ "S" .= _avS- , "N" .= _avN- , "B" .= _avB- , "SS" .= _avSS- , "NS" .= _avNS- , "BS" .= _avBS- , "M" .= _avM- , "L" .= _avL- , "NULL" .= _avNULL- , "BOOL" .= _avBOOL- ]--data IndexStatus- = Active -- ^ ACTIVE- | Creating -- ^ CREATING- | Deleting -- ^ DELETING- | Updating -- ^ UPDATING- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable IndexStatus--instance FromText IndexStatus where- parser = takeLowerText >>= \case- "active" -> pure Active- "creating" -> pure Creating- "deleting" -> pure Deleting- "updating" -> pure Updating- e -> fail $- "Failure parsing IndexStatus from " ++ show e--instance ToText IndexStatus where- toText = \case- Active -> "ACTIVE"- Creating -> "CREATING"- Deleting -> "DELETING"- Updating -> "UPDATING"--instance ToByteString IndexStatus-instance ToHeader IndexStatus-instance ToQuery IndexStatus--instance FromJSON IndexStatus where- parseJSON = parseJSONText "IndexStatus"--instance ToJSON IndexStatus where- toJSON = toJSONText--data ProvisionedThroughput = ProvisionedThroughput- { _ptReadCapacityUnits :: Nat- , _ptWriteCapacityUnits :: Nat- } deriving (Eq, Ord, Read, Show)---- | 'ProvisionedThroughput' constructor.------ The fields accessible through corresponding lenses are:------ * 'ptReadCapacityUnits' @::@ 'Natural'------ * 'ptWriteCapacityUnits' @::@ 'Natural'----provisionedThroughput :: Natural -- ^ 'ptReadCapacityUnits'- -> Natural -- ^ 'ptWriteCapacityUnits'- -> ProvisionedThroughput-provisionedThroughput p1 p2 = ProvisionedThroughput- { _ptReadCapacityUnits = withIso _Nat (const id) p1- , _ptWriteCapacityUnits = withIso _Nat (const id) p2- }---- | The maximum number of strongly consistent reads consumed per second before--- DynamoDB returns a /ThrottlingException/. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput SpecifyingRead and Write Requirements> in the /Amazon DynamoDB Developer Guide/.-ptReadCapacityUnits :: Lens' ProvisionedThroughput Natural-ptReadCapacityUnits =- lens _ptReadCapacityUnits (\s a -> s { _ptReadCapacityUnits = a })- . _Nat---- | The maximum number of writes consumed per second before DynamoDB returns a /ThrottlingException/. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput Specifying Read and Write Requirements> in the /Amazon DynamoDB Developer Guide/.-ptWriteCapacityUnits :: Lens' ProvisionedThroughput Natural-ptWriteCapacityUnits =- lens _ptWriteCapacityUnits (\s a -> s { _ptWriteCapacityUnits = a })- . _Nat--instance FromJSON ProvisionedThroughput where- parseJSON = withObject "ProvisionedThroughput" $ \o -> ProvisionedThroughput- <$> o .: "ReadCapacityUnits"- <*> o .: "WriteCapacityUnits"--instance ToJSON ProvisionedThroughput where- toJSON ProvisionedThroughput{..} = object- [ "ReadCapacityUnits" .= _ptReadCapacityUnits- , "WriteCapacityUnits" .= _ptWriteCapacityUnits- ]--data TableStatus- = TSActive -- ^ ACTIVE- | TSCreating -- ^ CREATING- | TSDeleting -- ^ DELETING- | TSUpdating -- ^ UPDATING- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable TableStatus--instance FromText TableStatus where- parser = takeLowerText >>= \case- "active" -> pure TSActive- "creating" -> pure TSCreating- "deleting" -> pure TSDeleting- "updating" -> pure TSUpdating- e -> fail $- "Failure parsing TableStatus from " ++ show e--instance ToText TableStatus where- toText = \case- TSActive -> "ACTIVE"- TSCreating -> "CREATING"- TSDeleting -> "DELETING"- TSUpdating -> "UPDATING"--instance ToByteString TableStatus-instance ToHeader TableStatus-instance ToQuery TableStatus--instance FromJSON TableStatus where- parseJSON = parseJSONText "TableStatus"--instance ToJSON TableStatus where- toJSON = toJSONText--data ProjectionType- = All -- ^ ALL- | Include -- ^ INCLUDE- | KeysOnly -- ^ KEYS_ONLY- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ProjectionType--instance FromText ProjectionType where- parser = takeLowerText >>= \case- "all" -> pure All- "include" -> pure Include- "keys_only" -> pure KeysOnly- e -> fail $- "Failure parsing ProjectionType from " ++ show e--instance ToText ProjectionType where- toText = \case- All -> "ALL"- Include -> "INCLUDE"- KeysOnly -> "KEYS_ONLY"--instance ToByteString ProjectionType-instance ToHeader ProjectionType-instance ToQuery ProjectionType--instance FromJSON ProjectionType where- parseJSON = parseJSONText "ProjectionType"--instance ToJSON ProjectionType where- toJSON = toJSONText--data TableDescription = TableDescription- { _tdAttributeDefinitions :: List "AttributeDefinitions" AttributeDefinition- , _tdCreationDateTime :: POSIX- , _tdGlobalSecondaryIndexes :: List "GlobalSecondaryIndexes" GlobalSecondaryIndexDescription- , _tdItemCount :: Integer- , _tdKeySchema :: List1 "KeySchema" KeySchemaElement- , _tdLocalSecondaryIndexes :: List "LocalSecondaryIndexes" LocalSecondaryIndexDescription- , _tdProvisionedThroughput :: ProvisionedThroughputDescription- , _tdTableName :: Text- , _tdTableSizeBytes :: Integer- , _tdTableStatus :: TableStatus- } deriving (Eq, Read, Show)---- | 'TableDescription' constructor.------ The fields accessible through corresponding lenses are:------ * 'tdAttributeDefinitions' @::@ ['AttributeDefinition']------ * 'tdCreationDateTime' @::@ 'UTCTime'------ * 'tdGlobalSecondaryIndexes' @::@ ['GlobalSecondaryIndexDescription']------ * 'tdItemCount' @::@ 'Integer'------ * 'tdKeySchema' @::@ 'NonEmpty' 'KeySchemaElement'------ * 'tdLocalSecondaryIndexes' @::@ ['LocalSecondaryIndexDescription']------ * 'tdProvisionedThroughput' @::@ 'ProvisionedThroughputDescription'------ * 'tdTableName' @::@ 'Text'------ * 'tdTableSizeBytes' @::@ 'Integer'------ * 'tdTableStatus' @::@ 'TableStatus'----tableDescription :: Text -- ^ 'tdTableName'- -> NonEmpty KeySchemaElement -- ^ 'tdKeySchema'- -> TableStatus -- ^ 'tdTableStatus'- -> UTCTime -- ^ 'tdCreationDateTime'- -> ProvisionedThroughputDescription -- ^ 'tdProvisionedThroughput'- -> Integer -- ^ 'tdTableSizeBytes'- -> Integer -- ^ 'tdItemCount'- -> TableDescription-tableDescription p1 p2 p3 p4 p5 p6 p7 = TableDescription- { _tdTableName = p1- , _tdKeySchema = withIso _List1 (const id) p2- , _tdTableStatus = p3- , _tdCreationDateTime = withIso _Time (const id) p4- , _tdProvisionedThroughput = p5- , _tdTableSizeBytes = p6- , _tdItemCount = p7- , _tdAttributeDefinitions = mempty- , _tdLocalSecondaryIndexes = mempty- , _tdGlobalSecondaryIndexes = mempty- }---- | An array of /AttributeDefinition/ objects. Each of these objects describes one--- attribute in the table and index key schema.------ Each /AttributeDefinition/ object in this array is composed of:------ /AttributeName/ - The name of the attribute.------ /AttributeType/ - The data type for the attribute.-------tdAttributeDefinitions :: Lens' TableDescription [AttributeDefinition]-tdAttributeDefinitions =- lens _tdAttributeDefinitions (\s a -> s { _tdAttributeDefinitions = a })- . _List---- | The date and time when the table was created, in <http://www.epochconverter.com/ UNIX epoch time> format.-tdCreationDateTime :: Lens' TableDescription UTCTime-tdCreationDateTime =- lens _tdCreationDateTime (\s a -> s { _tdCreationDateTime = a })- . _Time---- | The global secondary indexes, if any, on the table. Each index is scoped to a--- given hash key value. Each element is composed of:------ /Backfilling/ - If true, then the index is currently in the backfilling--- phase. Backfilling occurs only when a new global secondary index is added to--- the table; it is the process by which DynamoDB populates the new index with--- data from the table. (This attribute does not appear for indexes that were--- created during a /CreateTable/ operation.)------ /IndexName/ - The name of the global secondary index.------ /IndexSizeBytes/ - The total size of the global secondary index, in bytes.--- DynamoDB updates this value approximately every six hours. Recent changes--- might not be reflected in this value.------ /IndexStatus/ - The current status of the global secondary index:------ /CREATING/ - The index is being created.------ /UPDATING/ - The index is being updated.------ /DELETING/ - The index is being deleted.------ /ACTIVE/ - The index is ready for use.------ /ItemCount/ - The number of items in the global secondary index. DynamoDB--- updates this value approximately every six hours. Recent changes might not be--- reflected in this value.------ /KeySchema/ - Specifies the complete index key schema. The attribute names--- in the key schema must be between 1 and 255 characters (inclusive). The key--- schema must begin with the same hash key attribute as the table.------ /Projection/ - Specifies attributes that are copied (projected) from the--- table into the index. These are in addition to the primary key attributes and--- index key attributes, which are automatically projected. Each attribute--- specification is composed of:------ /ProjectionType/ - One of the following:------ 'KEYS_ONLY' - Only the index and primary keys are projected into the index.------ 'INCLUDE' - Only the specified table attributes are projected into the--- index. The list of projected attributes are in /NonKeyAttributes/.------ 'ALL' - All of the table attributes are projected into the index.------ /NonKeyAttributes/ - A list of one or more non-key attribute names that--- are projected into the secondary index. The total count of attributes--- provided in /NonKeyAttributes/, summed across all of the secondary indexes,--- must not exceed 20. If you project the same attribute into two different--- indexes, this counts as two distinct attributes when determining the total.------ /ProvisionedThroughput/ - The provisioned throughput settings for the--- global secondary index, consisting of read and write capacity units, along--- with data about increases and decreases.------ If the table is in the 'DELETING' state, no information about indexes will--- be returned.-tdGlobalSecondaryIndexes :: Lens' TableDescription [GlobalSecondaryIndexDescription]-tdGlobalSecondaryIndexes =- lens _tdGlobalSecondaryIndexes- (\s a -> s { _tdGlobalSecondaryIndexes = a })- . _List---- | The number of items in the specified table. DynamoDB updates this value--- approximately every six hours. Recent changes might not be reflected in this--- value.-tdItemCount :: Lens' TableDescription Integer-tdItemCount = lens _tdItemCount (\s a -> s { _tdItemCount = a })---- | The primary key structure for the table. Each /KeySchemaElement/ consists of:------ /AttributeName/ - The name of the attribute.------ /KeyType/ - The key type for the attribute. Can be either 'HASH' or 'RANGE'.------ For more information about primary keys, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModelPrimaryKey Primary Key> in the /AmazonDynamoDB Developer Guide/.-tdKeySchema :: Lens' TableDescription (NonEmpty KeySchemaElement)-tdKeySchema = lens _tdKeySchema (\s a -> s { _tdKeySchema = a }) . _List1---- | Represents one or more local secondary indexes on the table. Each index is--- scoped to a given hash key value. Tables with one or more local secondary--- indexes are subject to an item collection size limit, where the amount of--- data within a given item collection cannot exceed 10 GB. Each element is--- composed of:------ /IndexName/ - The name of the local secondary index.------ /KeySchema/ - Specifies the complete index key schema. The attribute names--- in the key schema must be between 1 and 255 characters (inclusive). The key--- schema must begin with the same hash key attribute as the table.------ /Projection/ - Specifies attributes that are copied (projected) from the--- table into the index. These are in addition to the primary key attributes and--- index key attributes, which are automatically projected. Each attribute--- specification is composed of:------ /ProjectionType/ - One of the following:------ 'KEYS_ONLY' - Only the index and primary keys are projected into the index.------ 'INCLUDE' - Only the specified table attributes are projected into the--- index. The list of projected attributes are in /NonKeyAttributes/.------ 'ALL' - All of the table attributes are projected into the index.------ /NonKeyAttributes/ - A list of one or more non-key attribute names that--- are projected into the secondary index. The total count of attributes--- provided in /NonKeyAttributes/, summed across all of the secondary indexes,--- must not exceed 20. If you project the same attribute into two different--- indexes, this counts as two distinct attributes when determining the total.------ /IndexSizeBytes/ - Represents the total size of the index, in bytes.--- DynamoDB updates this value approximately every six hours. Recent changes--- might not be reflected in this value.------ /ItemCount/ - Represents the number of items in the index. DynamoDB updates--- this value approximately every six hours. Recent changes might not be--- reflected in this value.------ If the table is in the 'DELETING' state, no information about indexes will--- be returned.-tdLocalSecondaryIndexes :: Lens' TableDescription [LocalSecondaryIndexDescription]-tdLocalSecondaryIndexes =- lens _tdLocalSecondaryIndexes (\s a -> s { _tdLocalSecondaryIndexes = a })- . _List---- | The provisioned throughput settings for the table, consisting of read and--- write capacity units, along with data about increases and decreases.-tdProvisionedThroughput :: Lens' TableDescription ProvisionedThroughputDescription-tdProvisionedThroughput =- lens _tdProvisionedThroughput (\s a -> s { _tdProvisionedThroughput = a })---- | The name of the table.-tdTableName :: Lens' TableDescription Text-tdTableName = lens _tdTableName (\s a -> s { _tdTableName = a })---- | The total size of the specified table, in bytes. DynamoDB updates this value--- approximately every six hours. Recent changes might not be reflected in this--- value.-tdTableSizeBytes :: Lens' TableDescription Integer-tdTableSizeBytes = lens _tdTableSizeBytes (\s a -> s { _tdTableSizeBytes = a })---- | The current state of the table:------ /CREATING/ - The table is being created.------ /UPDATING/ - The table is being updated.------ /DELETING/ - The table is being deleted.------ /ACTIVE/ - The table is ready for use.-------tdTableStatus :: Lens' TableDescription TableStatus-tdTableStatus = lens _tdTableStatus (\s a -> s { _tdTableStatus = a })--instance FromJSON TableDescription where- parseJSON = withObject "TableDescription" $ \o -> TableDescription- <$> o .:? "AttributeDefinitions" .!= mempty- <*> o .: "CreationDateTime"- <*> o .:? "GlobalSecondaryIndexes" .!= mempty- <*> o .: "ItemCount"- <*> o .: "KeySchema"- <*> o .:? "LocalSecondaryIndexes" .!= mempty- <*> o .: "ProvisionedThroughput"- <*> o .: "TableName"- <*> o .: "TableSizeBytes"- <*> o .: "TableStatus"--instance ToJSON TableDescription where- toJSON TableDescription{..} = object- [ "AttributeDefinitions" .= _tdAttributeDefinitions- , "TableName" .= _tdTableName- , "KeySchema" .= _tdKeySchema- , "TableStatus" .= _tdTableStatus- , "CreationDateTime" .= _tdCreationDateTime- , "ProvisionedThroughput" .= _tdProvisionedThroughput- , "TableSizeBytes" .= _tdTableSizeBytes- , "ItemCount" .= _tdItemCount- , "LocalSecondaryIndexes" .= _tdLocalSecondaryIndexes- , "GlobalSecondaryIndexes" .= _tdGlobalSecondaryIndexes- ]--data KeysAndAttributes = KeysAndAttributes- { _kaaAttributesToGet :: List1 "AttributesToGet" Text- , _kaaConsistentRead :: Maybe Bool- , _kaaExpressionAttributeNames :: Map Text Text- , _kaaKeys :: List1 "Keys" (Map Text AttributeValue)- , _kaaProjectionExpression :: Maybe Text- } deriving (Eq, Read, Show)---- | 'KeysAndAttributes' constructor.------ The fields accessible through corresponding lenses are:------ * 'kaaAttributesToGet' @::@ 'NonEmpty' 'Text'------ * 'kaaConsistentRead' @::@ 'Maybe' 'Bool'------ * 'kaaExpressionAttributeNames' @::@ 'HashMap' 'Text' 'Text'------ * 'kaaKeys' @::@ 'NonEmpty' ('HashMap' 'Text' 'AttributeValue')------ * 'kaaProjectionExpression' @::@ 'Maybe' 'Text'----keysAndAttributes :: NonEmpty (HashMap Text AttributeValue) -- ^ 'kaaKeys'- -> NonEmpty Text -- ^ 'kaaAttributesToGet'- -> KeysAndAttributes-keysAndAttributes p1 p2 = KeysAndAttributes- { _kaaKeys = withIso _List1 (const id) p1- , _kaaAttributesToGet = withIso _List1 (const id) p2- , _kaaConsistentRead = Nothing- , _kaaProjectionExpression = Nothing- , _kaaExpressionAttributeNames = mempty- }---- | One or more attributes to retrieve from the table or index. If no attribute--- names are specified then all attributes will be returned. If any of the--- specified attributes are not found, they will not appear in the result.-kaaAttributesToGet :: Lens' KeysAndAttributes (NonEmpty Text)-kaaAttributesToGet =- lens _kaaAttributesToGet (\s a -> s { _kaaAttributesToGet = a })- . _List1---- | The consistency of a read operation. If set to 'true', then a strongly--- consistent read is used; otherwise, an eventually consistent read is used.-kaaConsistentRead :: Lens' KeysAndAttributes (Maybe Bool)-kaaConsistentRead =- lens _kaaConsistentRead (\s a -> s { _kaaConsistentRead = a })---- | One or more substitution tokens for attribute names in an expression. The--- following are some use cases for using /ExpressionAttributeNames/:------ To access an attribute whose name conflicts with a DynamoDB reserved word.------ To create a placeholder for repeating occurrences of an attribute name in--- an expression.------ To prevent special characters in an attribute name from being--- misinterpreted in an expression.------ Use the # character in an expression to dereference an attribute name. For--- example, consider the following attribute name:------ 'Percentile'------ The name of this attribute conflicts with a reserved word, so it cannot be--- used directly in an expression. (For the complete list of reserved words, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around this,--- you could specify the following for /ExpressionAttributeNames/:------ '{"#P":"Percentile"}'------ You could then use this substitution in an expression, as in this example:------ '#P = :val'------ Tokens that begin with the : character are /expression attribute values/,--- which are placeholders for the actual value at runtime.------ For more information on expression attribute names, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.-kaaExpressionAttributeNames :: Lens' KeysAndAttributes (HashMap Text Text)-kaaExpressionAttributeNames =- lens _kaaExpressionAttributeNames- (\s a -> s { _kaaExpressionAttributeNames = a })- . _Map---- | The primary key attribute values that define the items and the attributes--- associated with the items.-kaaKeys :: Lens' KeysAndAttributes (NonEmpty (HashMap Text AttributeValue))-kaaKeys = lens _kaaKeys (\s a -> s { _kaaKeys = a }) . _List1---- | A string that identifies one or more attributes to retrieve from the table.--- These attributes can include scalars, sets, or elements of a JSON document.--- The attributes in the /ProjectionExpression/ must be separated by commas.------ If no attribute names are specified, then all attributes will be returned.--- If any of the requested attributes are not found, they will not appear in the--- result.------ For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes> in the /Amazon DynamoDBDeveloper Guide/.------ /ProjectionExpression/ replaces the legacy /AttributesToGet/ parameter.----kaaProjectionExpression :: Lens' KeysAndAttributes (Maybe Text)-kaaProjectionExpression =- lens _kaaProjectionExpression (\s a -> s { _kaaProjectionExpression = a })--instance FromJSON KeysAndAttributes where- parseJSON = withObject "KeysAndAttributes" $ \o -> KeysAndAttributes- <$> o .: "AttributesToGet"- <*> o .:? "ConsistentRead"- <*> o .:? "ExpressionAttributeNames" .!= mempty- <*> o .: "Keys"- <*> o .:? "ProjectionExpression"--instance ToJSON KeysAndAttributes where- toJSON KeysAndAttributes{..} = object- [ "Keys" .= _kaaKeys- , "AttributesToGet" .= _kaaAttributesToGet- , "ConsistentRead" .= _kaaConsistentRead- , "ProjectionExpression" .= _kaaProjectionExpression- , "ExpressionAttributeNames" .= _kaaExpressionAttributeNames- ]--data ReturnConsumedCapacity- = Indexes -- ^ INDEXES- | None -- ^ NONE- | Total -- ^ TOTAL- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ReturnConsumedCapacity--instance FromText ReturnConsumedCapacity where- parser = takeLowerText >>= \case- "indexes" -> pure Indexes- "none" -> pure None- "total" -> pure Total- e -> fail $- "Failure parsing ReturnConsumedCapacity from " ++ show e--instance ToText ReturnConsumedCapacity where- toText = \case- Indexes -> "INDEXES"- None -> "NONE"- Total -> "TOTAL"--instance ToByteString ReturnConsumedCapacity-instance ToHeader ReturnConsumedCapacity-instance ToQuery ReturnConsumedCapacity--instance FromJSON ReturnConsumedCapacity where- parseJSON = parseJSONText "ReturnConsumedCapacity"--instance ToJSON ReturnConsumedCapacity where- toJSON = toJSONText--data ReturnItemCollectionMetrics- = RICMNone -- ^ NONE- | RICMSize -- ^ SIZE- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ReturnItemCollectionMetrics--instance FromText ReturnItemCollectionMetrics where- parser = takeLowerText >>= \case- "none" -> pure RICMNone- "size" -> pure RICMSize- e -> fail $- "Failure parsing ReturnItemCollectionMetrics from " ++ show e--instance ToText ReturnItemCollectionMetrics where- toText = \case- RICMNone -> "NONE"- RICMSize -> "SIZE"--instance ToByteString ReturnItemCollectionMetrics-instance ToHeader ReturnItemCollectionMetrics-instance ToQuery ReturnItemCollectionMetrics--instance FromJSON ReturnItemCollectionMetrics where- parseJSON = parseJSONText "ReturnItemCollectionMetrics"--instance ToJSON ReturnItemCollectionMetrics where- toJSON = toJSONText--data AttributeValueUpdate = AttributeValueUpdate- { _avuAction :: Maybe AttributeAction- , _avuValue :: Maybe AttributeValue- } deriving (Eq, Read, Show)---- | 'AttributeValueUpdate' constructor.------ The fields accessible through corresponding lenses are:------ * 'avuAction' @::@ 'Maybe' 'AttributeAction'------ * 'avuValue' @::@ 'Maybe' 'AttributeValue'----attributeValueUpdate :: AttributeValueUpdate-attributeValueUpdate = AttributeValueUpdate- { _avuValue = Nothing- , _avuAction = Nothing- }---- | Specifies how to perform the update. Valid values are 'PUT' (default), 'DELETE',--- and 'ADD'. The behavior depends on whether the specified primary key already--- exists in the table.------ If an item with the specified /Key/ is found in the table:------ 'PUT' - Adds the specified attribute to the item. If the attribute already--- exists, it is replaced by the new value.------ 'DELETE' - If no value is specified, the attribute and its value are removed--- from the item. The data type of the specified value must match the existing--- value's data type.------ If a /set/ of values is specified, then those values are subtracted from the--- old set. For example, if the attribute value was the set '[a,b,c]' and the /DELETE/ action specified '[a,c]', then the final attribute value would be '[b]'.--- Specifying an empty set is an error.------ 'ADD' - If the attribute does not already exist, then the attribute and its--- values are added to the item. If the attribute does exist, then the behavior--- of 'ADD' depends on the data type of the attribute:------ If the existing attribute is a number, and if /Value/ is also a number, then--- the /Value/ is mathematically added to the existing attribute. If /Value/ is a--- negative number, then it is subtracted from the existing attribute.------ If you use 'ADD' to increment or decrement a number value for an item that--- doesn't exist before the update, DynamoDB uses 0 as the initial value.------ In addition, if you use 'ADD' to update an existing item, and intend to--- increment or decrement an attribute value which does not yet exist, DynamoDB--- uses '0' as the initial value. For example, suppose that the item you want to--- update does not yet have an attribute named /itemcount/, but you decide to 'ADD'--- the number '3' to this attribute anyway, even though it currently does not--- exist. DynamoDB will create the /itemcount/ attribute, set its initial value to '0', and finally add '3' to it. The result will be a new /itemcount/ attribute in--- the item, with a value of '3'.------ If the existing data type is a set, and if the /Value/ is also a set, then--- the /Value/ is added to the existing set. (This is a /set/ operation, not--- mathematical addition.) For example, if the attribute value was the set '[1,2]', and the--- 'ADD' action specified '[3]', then the final attribute value would be '[1,2,3]'. An--- error occurs if an Add action is specified for a set attribute and the--- attribute type specified does not match the existing set type.------ Both sets must have the same primitive data type. For example, if the--- existing data type is a set of strings, the /Value/ must also be a set of--- strings. The same holds true for number sets and binary sets.------ This action is only valid for an existing attribute whose data type is--- number or is a set. Do not use 'ADD' for any other data types.------ If no item with the specified /Key/ is found:------ 'PUT' - DynamoDB creates a new item with the specified primary key, and then--- adds the attribute.------ 'DELETE' - Nothing happens; there is no attribute to delete.------ 'ADD' - DynamoDB creates an item with the supplied primary key and number--- (or set of numbers) for the attribute value. The only data types allowed are--- number and number set; no other data types can be specified.-------avuAction :: Lens' AttributeValueUpdate (Maybe AttributeAction)-avuAction = lens _avuAction (\s a -> s { _avuAction = a })--avuValue :: Lens' AttributeValueUpdate (Maybe AttributeValue)-avuValue = lens _avuValue (\s a -> s { _avuValue = a })--instance FromJSON AttributeValueUpdate where- parseJSON = withObject "AttributeValueUpdate" $ \o -> AttributeValueUpdate- <$> o .:? "Action"- <*> o .:? "Value"--instance ToJSON AttributeValueUpdate where- toJSON AttributeValueUpdate{..} = object- [ "Value" .= _avuValue- , "Action" .= _avuAction- ]--data ExpectedAttributeValue = ExpectedAttributeValue- { _eavAttributeValueList :: List "AttributeValueList" AttributeValue- , _eavComparisonOperator :: Maybe ComparisonOperator- , _eavExists :: Maybe Bool- , _eavValue :: Maybe AttributeValue- } deriving (Eq, Read, Show)---- | 'ExpectedAttributeValue' constructor.------ The fields accessible through corresponding lenses are:------ * 'eavAttributeValueList' @::@ ['AttributeValue']------ * 'eavComparisonOperator' @::@ 'Maybe' 'ComparisonOperator'------ * 'eavExists' @::@ 'Maybe' 'Bool'------ * 'eavValue' @::@ 'Maybe' 'AttributeValue'----expectedAttributeValue :: ExpectedAttributeValue-expectedAttributeValue = ExpectedAttributeValue- { _eavValue = Nothing- , _eavExists = Nothing- , _eavComparisonOperator = Nothing- , _eavAttributeValueList = mempty- }---- | One or more values to evaluate against the supplied attribute. The number of--- values in the list depends on the /ComparisonOperator/ being used.------ For type Number, value comparisons are numeric.------ String value comparisons for greater than, equals, or less than are based on--- ASCII character code values. For example, 'a' is greater than 'A', and 'a' is--- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.------ For Binary, DynamoDB treats each byte of the binary data as unsigned when it--- compares binary values.------ For information on specifying data types in JSON, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html JSON Data Format> in--- the /Amazon DynamoDB Developer Guide/.-eavAttributeValueList :: Lens' ExpectedAttributeValue [AttributeValue]-eavAttributeValueList =- lens _eavAttributeValueList (\s a -> s { _eavAttributeValueList = a })- . _List---- | A comparator for evaluating attributes in the /AttributeValueList/. For--- example, equals, greater than, less than, etc.------ The following comparison operators are available:------ 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |BEGINS_WITH | IN | BETWEEN'------ The following are descriptions of each comparison operator.------ 'EQ' : Equal. 'EQ' is supported for all datatypes, including lists and maps.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, Binary, String Set, Number Set, or Binary Set. If an item--- contains an /AttributeValue/ element of a different type than the one provided--- in the request, the value does not match. For example, '{"S":"6"}' does not--- equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.------------ 'NE' : Not equal. 'NE' is supported for all datatypes, including lists and--- maps.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one provided in the request, the--- value does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.------------ 'LE' : Less than or equal.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'LT' : Less than.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, or Binary (not a set type). If an item contains an /AttributeValue/--- element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'GE' : Greater than or equal.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'GT' : Greater than.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'NOT_NULL' : The attribute exists. 'NOT_NULL' is supported for all datatypes,--- including lists and maps.------ This operator tests for the existence of an attribute, not its data type. If--- the data type of attribute "'a'" is null, and you evaluate it using 'NOT_NULL',--- the result is a Boolean /true/. This result is because the attribute "'a'"--- exists; its data type is not relevant to the 'NOT_NULL' comparison operator.------ 'NULL' : The attribute does not exist. 'NULL' is supported for all datatypes,--- including lists and maps.------ This operator tests for the nonexistence of an attribute, not its data type.--- If the data type of attribute "'a'" is null, and you evaluate it using 'NULL',--- the result is a Boolean /false/. This is because the attribute "'a'" exists; its--- data type is not relevant to the 'NULL' comparison operator.------ 'CONTAINS' : Checks for a subsequence, or value in a set.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If the target attribute of the--- comparison is of type String, then the operator checks for a substring match.--- If the target attribute of the comparison is of type Binary, then the--- operator looks for a subsequence of the target that matches the input. If the--- target attribute of the comparison is a set ("'SS'", "'NS'", or "'BS'"), then the--- operator evaluates to true if it finds an exact match with any member of the--- set.------ CONTAINS is supported for lists: When evaluating "'a CONTAINS b'", "'a'" can be--- a list; however, "'b'" cannot be a set, a map, or a list.------ 'NOT_CONTAINS' : Checks for absence of a subsequence, or absence of a value--- in a set.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If the target attribute of the--- comparison is a String, then the operator checks for the absence of a--- substring match. If the target attribute of the comparison is Binary, then--- the operator checks for the absence of a subsequence of the target that--- matches the input. If the target attribute of the comparison is a set ("'SS'", "'NS'", or "'BS'"), then the operator evaluates to true if it /does not/ find an--- exact match with any member of the set.------ NOT_CONTAINS is supported for lists: When evaluating "'a NOT CONTAINS b'", "'a'"--- can be a list; however, "'b'" cannot be a set, a map, or a list.------ 'BEGINS_WITH' : Checks for a prefix.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String or--- Binary (not a Number or a set type). The target attribute of the comparison--- must be of type String or Binary (not a Number or a set type).------------ 'IN' : Checks for matching elements within two sets.------ /AttributeValueList/ can contain one or more /AttributeValue/ elements of type--- String, Number, or Binary (not a set type). These attributes are compared--- against an existing set type attribute of an item. If any elements of the--- input set are present in the item attribute, the expression evaluates to true.------ 'BETWEEN' : Greater than or equal to the first value, and less than or equal--- to the second value.------ /AttributeValueList/ must contain two /AttributeValue/ elements of the same--- type, either String, Number, or Binary (not a set type). A target attribute--- matches if the target value is greater than, or equal to, the first element--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'-------eavComparisonOperator :: Lens' ExpectedAttributeValue (Maybe ComparisonOperator)-eavComparisonOperator =- lens _eavComparisonOperator (\s a -> s { _eavComparisonOperator = a })---- | Causes DynamoDB to evaluate the value before attempting a conditional--- operation:------ If /Exists/ is 'true', DynamoDB will check to see if that attribute value--- already exists in the table. If it is found, then the operation succeeds. If--- it is not found, the operation fails with a /ConditionalCheckFailedException/.------ If /Exists/ is 'false', DynamoDB assumes that the attribute value does not--- exist in the table. If in fact the value does not exist, then the assumption--- is valid and the operation succeeds. If the value is found, despite the--- assumption that it does not exist, the operation fails with a /ConditionalCheckFailedException/.------ The default setting for /Exists/ is 'true'. If you supply a /Value/ all by--- itself, DynamoDB assumes the attribute exists: You don't have to set /Exists/--- to 'true', because it is implied.------ DynamoDB returns a /ValidationException/ if:------ /Exists/ is 'true' but there is no /Value/ to check. (You expect a value to--- exist, but don't specify what that value is.)------ /Exists/ is 'false' but you also provide a /Value/. (You cannot expect an--- attribute to have a value, while also expecting it not to exist.)-------eavExists :: Lens' ExpectedAttributeValue (Maybe Bool)-eavExists = lens _eavExists (\s a -> s { _eavExists = a })--eavValue :: Lens' ExpectedAttributeValue (Maybe AttributeValue)-eavValue = lens _eavValue (\s a -> s { _eavValue = a })--instance FromJSON ExpectedAttributeValue where- parseJSON = withObject "ExpectedAttributeValue" $ \o -> ExpectedAttributeValue- <$> o .:? "AttributeValueList" .!= mempty- <*> o .:? "ComparisonOperator"- <*> o .:? "Exists"- <*> o .:? "Value"--instance ToJSON ExpectedAttributeValue where- toJSON ExpectedAttributeValue{..} = object- [ "Value" .= _eavValue- , "Exists" .= _eavExists- , "ComparisonOperator" .= _eavComparisonOperator- , "AttributeValueList" .= _eavAttributeValueList- ]--data AttributeDefinition = AttributeDefinition- { _adAttributeName :: Text- , _adAttributeType :: ScalarAttributeType- } deriving (Eq, Read, Show)---- | 'AttributeDefinition' constructor.------ The fields accessible through corresponding lenses are:------ * 'adAttributeName' @::@ 'Text'------ * 'adAttributeType' @::@ 'ScalarAttributeType'----attributeDefinition :: Text -- ^ 'adAttributeName'- -> ScalarAttributeType -- ^ 'adAttributeType'- -> AttributeDefinition-attributeDefinition p1 p2 = AttributeDefinition- { _adAttributeName = p1- , _adAttributeType = p2- }---- | A name for the attribute.-adAttributeName :: Lens' AttributeDefinition Text-adAttributeName = lens _adAttributeName (\s a -> s { _adAttributeName = a })---- | The data type for the attribute.-adAttributeType :: Lens' AttributeDefinition ScalarAttributeType-adAttributeType = lens _adAttributeType (\s a -> s { _adAttributeType = a })--instance FromJSON AttributeDefinition where- parseJSON = withObject "AttributeDefinition" $ \o -> AttributeDefinition- <$> o .: "AttributeName"- <*> o .: "AttributeType"--instance ToJSON AttributeDefinition where- toJSON AttributeDefinition{..} = object- [ "AttributeName" .= _adAttributeName- , "AttributeType" .= _adAttributeType- ]--data ComparisonOperator- = BeginsWith -- ^ BEGINS_WITH- | Between -- ^ BETWEEN- | Contains -- ^ CONTAINS- | Eq -- ^ EQ- | Ge -- ^ GE- | Gt -- ^ GT- | In' -- ^ IN- | Le -- ^ LE- | Lt -- ^ LT- | Ne -- ^ NE- | NotContains -- ^ NOT_CONTAINS- | NotNull -- ^ NOT_NULL- | Null -- ^ NULL- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ComparisonOperator--instance FromText ComparisonOperator where- parser = takeLowerText >>= \case- "begins_with" -> pure BeginsWith- "between" -> pure Between- "contains" -> pure Contains- "eq" -> pure Eq- "ge" -> pure Ge- "gt" -> pure Gt- "in" -> pure In'- "le" -> pure Le- "lt" -> pure Lt- "ne" -> pure Ne- "not_contains" -> pure NotContains- "not_null" -> pure NotNull- "null" -> pure Null- e -> fail $- "Failure parsing ComparisonOperator from " ++ show e--instance ToText ComparisonOperator where- toText = \case- BeginsWith -> "BEGINS_WITH"- Between -> "BETWEEN"- Contains -> "CONTAINS"- Eq -> "EQ"- Ge -> "GE"- Gt -> "GT"- In' -> "IN"- Le -> "LE"- Lt -> "LT"- Ne -> "NE"- NotContains -> "NOT_CONTAINS"- NotNull -> "NOT_NULL"- Null -> "NULL"--instance ToByteString ComparisonOperator-instance ToHeader ComparisonOperator-instance ToQuery ComparisonOperator--instance FromJSON ComparisonOperator where- parseJSON = parseJSONText "ComparisonOperator"--instance ToJSON ComparisonOperator where- toJSON = toJSONText--data ReturnValue- = RVAllNew -- ^ ALL_NEW- | RVAllOld -- ^ ALL_OLD- | RVNone -- ^ NONE- | RVUpdatedNew -- ^ UPDATED_NEW- | RVUpdatedOld -- ^ UPDATED_OLD- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ReturnValue--instance FromText ReturnValue where- parser = takeLowerText >>= \case- "all_new" -> pure RVAllNew- "all_old" -> pure RVAllOld- "none" -> pure RVNone- "updated_new" -> pure RVUpdatedNew- "updated_old" -> pure RVUpdatedOld- e -> fail $- "Failure parsing ReturnValue from " ++ show e--instance ToText ReturnValue where- toText = \case- RVAllNew -> "ALL_NEW"- RVAllOld -> "ALL_OLD"- RVNone -> "NONE"- RVUpdatedNew -> "UPDATED_NEW"- RVUpdatedOld -> "UPDATED_OLD"--instance ToByteString ReturnValue-instance ToHeader ReturnValue-instance ToQuery ReturnValue--instance FromJSON ReturnValue where- parseJSON = parseJSONText "ReturnValue"--instance ToJSON ReturnValue where- toJSON = toJSONText--data LocalSecondaryIndex = LocalSecondaryIndex- { _lsiIndexName :: Text- , _lsiKeySchema :: List1 "KeySchema" KeySchemaElement- , _lsiProjection :: Projection- } deriving (Eq, Read, Show)---- | 'LocalSecondaryIndex' constructor.------ The fields accessible through corresponding lenses are:------ * 'lsiIndexName' @::@ 'Text'------ * 'lsiKeySchema' @::@ 'NonEmpty' 'KeySchemaElement'------ * 'lsiProjection' @::@ 'Projection'----localSecondaryIndex :: Text -- ^ 'lsiIndexName'- -> NonEmpty KeySchemaElement -- ^ 'lsiKeySchema'- -> Projection -- ^ 'lsiProjection'- -> LocalSecondaryIndex-localSecondaryIndex p1 p2 p3 = LocalSecondaryIndex- { _lsiIndexName = p1- , _lsiKeySchema = withIso _List1 (const id) p2- , _lsiProjection = p3- }---- | The name of the local secondary index. The name must be unique among all--- other indexes on this table.-lsiIndexName :: Lens' LocalSecondaryIndex Text-lsiIndexName = lens _lsiIndexName (\s a -> s { _lsiIndexName = a })---- | The complete key schema for the local secondary index, consisting of one or--- more pairs of attribute names and key types ('HASH' or 'RANGE').-lsiKeySchema :: Lens' LocalSecondaryIndex (NonEmpty KeySchemaElement)-lsiKeySchema = lens _lsiKeySchema (\s a -> s { _lsiKeySchema = a }) . _List1--lsiProjection :: Lens' LocalSecondaryIndex Projection-lsiProjection = lens _lsiProjection (\s a -> s { _lsiProjection = a })--instance FromJSON LocalSecondaryIndex where- parseJSON = withObject "LocalSecondaryIndex" $ \o -> LocalSecondaryIndex- <$> o .: "IndexName"- <*> o .: "KeySchema"- <*> o .: "Projection"--instance ToJSON LocalSecondaryIndex where- toJSON LocalSecondaryIndex{..} = object- [ "IndexName" .= _lsiIndexName- , "KeySchema" .= _lsiKeySchema- , "Projection" .= _lsiProjection- ]--data GlobalSecondaryIndexDescription = GlobalSecondaryIndexDescription- { _gsidBackfilling :: Maybe Bool- , _gsidIndexName :: Maybe Text- , _gsidIndexSizeBytes :: Maybe Integer- , _gsidIndexStatus :: Maybe IndexStatus- , _gsidItemCount :: Maybe Integer- , _gsidKeySchema :: List1 "KeySchema" KeySchemaElement- , _gsidProjection :: Maybe Projection- , _gsidProvisionedThroughput :: Maybe ProvisionedThroughputDescription- } deriving (Eq, Read, Show)---- | 'GlobalSecondaryIndexDescription' constructor.------ The fields accessible through corresponding lenses are:------ * 'gsidBackfilling' @::@ 'Maybe' 'Bool'------ * 'gsidIndexName' @::@ 'Maybe' 'Text'------ * 'gsidIndexSizeBytes' @::@ 'Maybe' 'Integer'------ * 'gsidIndexStatus' @::@ 'Maybe' 'IndexStatus'------ * 'gsidItemCount' @::@ 'Maybe' 'Integer'------ * 'gsidKeySchema' @::@ 'NonEmpty' 'KeySchemaElement'------ * 'gsidProjection' @::@ 'Maybe' 'Projection'------ * 'gsidProvisionedThroughput' @::@ 'Maybe' 'ProvisionedThroughputDescription'----globalSecondaryIndexDescription :: NonEmpty KeySchemaElement -- ^ 'gsidKeySchema'- -> GlobalSecondaryIndexDescription-globalSecondaryIndexDescription p1 = GlobalSecondaryIndexDescription- { _gsidKeySchema = withIso _List1 (const id) p1- , _gsidIndexName = Nothing- , _gsidProjection = Nothing- , _gsidIndexStatus = Nothing- , _gsidBackfilling = Nothing- , _gsidProvisionedThroughput = Nothing- , _gsidIndexSizeBytes = Nothing- , _gsidItemCount = Nothing- }---- | Indicates whether the index is currently backfilling. /Backfilling/ is the--- process of reading items from the table and determining whether they can be--- added to the index. (Not all items will qualify: For example, a hash key--- attribute cannot have any duplicates.) If an item can be added to the index,--- DynamoDB will do so. After all items have been processed, the backfilling--- operation is complete and /Backfilling/ is false.------ For indexes that were created during a /CreateTable/ operation, the /Backfilling/--- attribute does not appear in the /DescribeTable/ output.----gsidBackfilling :: Lens' GlobalSecondaryIndexDescription (Maybe Bool)-gsidBackfilling = lens _gsidBackfilling (\s a -> s { _gsidBackfilling = a })---- | The name of the global secondary index.-gsidIndexName :: Lens' GlobalSecondaryIndexDescription (Maybe Text)-gsidIndexName = lens _gsidIndexName (\s a -> s { _gsidIndexName = a })---- | The total size of the specified index, in bytes. DynamoDB updates this value--- approximately every six hours. Recent changes might not be reflected in this--- value.-gsidIndexSizeBytes :: Lens' GlobalSecondaryIndexDescription (Maybe Integer)-gsidIndexSizeBytes =- lens _gsidIndexSizeBytes (\s a -> s { _gsidIndexSizeBytes = a })---- | The current state of the global secondary index:------ /CREATING/ - The index is being created.------ /UPDATING/ - The index is being updated.------ /DELETING/ - The index is being deleted.------ /ACTIVE/ - The index is ready for use.-------gsidIndexStatus :: Lens' GlobalSecondaryIndexDescription (Maybe IndexStatus)-gsidIndexStatus = lens _gsidIndexStatus (\s a -> s { _gsidIndexStatus = a })---- | The number of items in the specified index. DynamoDB updates this value--- approximately every six hours. Recent changes might not be reflected in this--- value.-gsidItemCount :: Lens' GlobalSecondaryIndexDescription (Maybe Integer)-gsidItemCount = lens _gsidItemCount (\s a -> s { _gsidItemCount = a })---- | The complete key schema for the global secondary index, consisting of one or--- more pairs of attribute names and key types ('HASH' or 'RANGE').-gsidKeySchema :: Lens' GlobalSecondaryIndexDescription (NonEmpty KeySchemaElement)-gsidKeySchema = lens _gsidKeySchema (\s a -> s { _gsidKeySchema = a }) . _List1--gsidProjection :: Lens' GlobalSecondaryIndexDescription (Maybe Projection)-gsidProjection = lens _gsidProjection (\s a -> s { _gsidProjection = a })--gsidProvisionedThroughput :: Lens' GlobalSecondaryIndexDescription (Maybe ProvisionedThroughputDescription)-gsidProvisionedThroughput =- lens _gsidProvisionedThroughput- (\s a -> s { _gsidProvisionedThroughput = a })--instance FromJSON GlobalSecondaryIndexDescription where- parseJSON = withObject "GlobalSecondaryIndexDescription" $ \o -> GlobalSecondaryIndexDescription- <$> o .:? "Backfilling"- <*> o .:? "IndexName"- <*> o .:? "IndexSizeBytes"- <*> o .:? "IndexStatus"- <*> o .:? "ItemCount"- <*> o .: "KeySchema"- <*> o .:? "Projection"- <*> o .:? "ProvisionedThroughput"--instance ToJSON GlobalSecondaryIndexDescription where- toJSON GlobalSecondaryIndexDescription{..} = object- [ "IndexName" .= _gsidIndexName- , "KeySchema" .= _gsidKeySchema- , "Projection" .= _gsidProjection- , "IndexStatus" .= _gsidIndexStatus- , "Backfilling" .= _gsidBackfilling- , "ProvisionedThroughput" .= _gsidProvisionedThroughput- , "IndexSizeBytes" .= _gsidIndexSizeBytes- , "ItemCount" .= _gsidItemCount- ]--data ItemCollectionMetrics = ItemCollectionMetrics- { _icmItemCollectionKey :: Map Text AttributeValue- , _icmSizeEstimateRangeGB :: List "SizeEstimateRangeGB" Double- } deriving (Eq, Read, Show)---- | 'ItemCollectionMetrics' constructor.------ The fields accessible through corresponding lenses are:------ * 'icmItemCollectionKey' @::@ 'HashMap' 'Text' 'AttributeValue'------ * 'icmSizeEstimateRangeGB' @::@ ['Double']----itemCollectionMetrics :: ItemCollectionMetrics-itemCollectionMetrics = ItemCollectionMetrics- { _icmItemCollectionKey = mempty- , _icmSizeEstimateRangeGB = mempty- }---- | The hash key value of the item collection. This value is the same as the hash--- key of the item.-icmItemCollectionKey :: Lens' ItemCollectionMetrics (HashMap Text AttributeValue)-icmItemCollectionKey =- lens _icmItemCollectionKey (\s a -> s { _icmItemCollectionKey = a })- . _Map---- | An estimate of item collection size, in gigabytes. This value is a--- two-element array containing a lower bound and an upper bound for the--- estimate. The estimate includes the size of all the items in the table, plus--- the size of all attributes projected into all of the local secondary indexes--- on that table. Use this estimate to measure whether a local secondary index--- is approaching its size limit.------ The estimate is subject to change over time; therefore, do not rely on the--- precision or accuracy of the estimate.-icmSizeEstimateRangeGB :: Lens' ItemCollectionMetrics [Double]-icmSizeEstimateRangeGB =- lens _icmSizeEstimateRangeGB (\s a -> s { _icmSizeEstimateRangeGB = a })- . _List--instance FromJSON ItemCollectionMetrics where- parseJSON = withObject "ItemCollectionMetrics" $ \o -> ItemCollectionMetrics- <$> o .:? "ItemCollectionKey" .!= mempty- <*> o .:? "SizeEstimateRangeGB" .!= mempty--instance ToJSON ItemCollectionMetrics where- toJSON ItemCollectionMetrics{..} = object- [ "ItemCollectionKey" .= _icmItemCollectionKey- , "SizeEstimateRangeGB" .= _icmSizeEstimateRangeGB- ]--newtype Capacity = Capacity- { _cCapacityUnits :: Maybe Double- } deriving (Eq, Ord, Read, Show)---- | 'Capacity' constructor.------ The fields accessible through corresponding lenses are:------ * 'cCapacityUnits' @::@ 'Maybe' 'Double'----capacity :: Capacity-capacity = Capacity- { _cCapacityUnits = Nothing- }---- | The total number of capacity units consumed on a table or an index.-cCapacityUnits :: Lens' Capacity (Maybe Double)-cCapacityUnits = lens _cCapacityUnits (\s a -> s { _cCapacityUnits = a })--instance FromJSON Capacity where- parseJSON = withObject "Capacity" $ \o -> Capacity- <$> o .:? "CapacityUnits"--instance ToJSON Capacity where- toJSON Capacity{..} = object- [ "CapacityUnits" .= _cCapacityUnits- ]--data ConsumedCapacity = ConsumedCapacity- { _ccCapacityUnits :: Maybe Double- , _ccGlobalSecondaryIndexes :: Map Text Capacity- , _ccLocalSecondaryIndexes :: Map Text Capacity- , _ccTable :: Maybe Capacity- , _ccTableName :: Maybe Text- } deriving (Eq, Read, Show)---- | 'ConsumedCapacity' constructor.------ The fields accessible through corresponding lenses are:------ * 'ccCapacityUnits' @::@ 'Maybe' 'Double'------ * 'ccGlobalSecondaryIndexes' @::@ 'HashMap' 'Text' 'Capacity'------ * 'ccLocalSecondaryIndexes' @::@ 'HashMap' 'Text' 'Capacity'------ * 'ccTable' @::@ 'Maybe' 'Capacity'------ * 'ccTableName' @::@ 'Maybe' 'Text'----consumedCapacity :: ConsumedCapacity-consumedCapacity = ConsumedCapacity- { _ccTableName = Nothing- , _ccCapacityUnits = Nothing- , _ccTable = Nothing- , _ccLocalSecondaryIndexes = mempty- , _ccGlobalSecondaryIndexes = mempty- }---- | The total number of capacity units consumed by the operation.-ccCapacityUnits :: Lens' ConsumedCapacity (Maybe Double)-ccCapacityUnits = lens _ccCapacityUnits (\s a -> s { _ccCapacityUnits = a })---- | The amount of throughput consumed on each global index affected by the--- operation.-ccGlobalSecondaryIndexes :: Lens' ConsumedCapacity (HashMap Text Capacity)-ccGlobalSecondaryIndexes =- lens _ccGlobalSecondaryIndexes- (\s a -> s { _ccGlobalSecondaryIndexes = a })- . _Map---- | The amount of throughput consumed on each local index affected by the--- operation.-ccLocalSecondaryIndexes :: Lens' ConsumedCapacity (HashMap Text Capacity)-ccLocalSecondaryIndexes =- lens _ccLocalSecondaryIndexes (\s a -> s { _ccLocalSecondaryIndexes = a })- . _Map---- | The amount of throughput consumed on the table affected by the operation.-ccTable :: Lens' ConsumedCapacity (Maybe Capacity)-ccTable = lens _ccTable (\s a -> s { _ccTable = a })---- | The name of the table that was affected by the operation.-ccTableName :: Lens' ConsumedCapacity (Maybe Text)-ccTableName = lens _ccTableName (\s a -> s { _ccTableName = a })--instance FromJSON ConsumedCapacity where- parseJSON = withObject "ConsumedCapacity" $ \o -> ConsumedCapacity- <$> o .:? "CapacityUnits"- <*> o .:? "GlobalSecondaryIndexes" .!= mempty- <*> o .:? "LocalSecondaryIndexes" .!= mempty- <*> o .:? "Table"- <*> o .:? "TableName"--instance ToJSON ConsumedCapacity where- toJSON ConsumedCapacity{..} = object- [ "TableName" .= _ccTableName- , "CapacityUnits" .= _ccCapacityUnits- , "Table" .= _ccTable- , "LocalSecondaryIndexes" .= _ccLocalSecondaryIndexes- , "GlobalSecondaryIndexes" .= _ccGlobalSecondaryIndexes- ]--data GlobalSecondaryIndex = GlobalSecondaryIndex- { _gsiIndexName :: Text- , _gsiKeySchema :: List1 "KeySchema" KeySchemaElement- , _gsiProjection :: Projection- , _gsiProvisionedThroughput :: ProvisionedThroughput- } deriving (Eq, Read, Show)---- | 'GlobalSecondaryIndex' constructor.------ The fields accessible through corresponding lenses are:------ * 'gsiIndexName' @::@ 'Text'------ * 'gsiKeySchema' @::@ 'NonEmpty' 'KeySchemaElement'------ * 'gsiProjection' @::@ 'Projection'------ * 'gsiProvisionedThroughput' @::@ 'ProvisionedThroughput'----globalSecondaryIndex :: Text -- ^ 'gsiIndexName'- -> NonEmpty KeySchemaElement -- ^ 'gsiKeySchema'- -> Projection -- ^ 'gsiProjection'- -> ProvisionedThroughput -- ^ 'gsiProvisionedThroughput'- -> GlobalSecondaryIndex-globalSecondaryIndex p1 p2 p3 p4 = GlobalSecondaryIndex- { _gsiIndexName = p1- , _gsiKeySchema = withIso _List1 (const id) p2- , _gsiProjection = p3- , _gsiProvisionedThroughput = p4- }---- | The name of the global secondary index. The name must be unique among all--- other indexes on this table.-gsiIndexName :: Lens' GlobalSecondaryIndex Text-gsiIndexName = lens _gsiIndexName (\s a -> s { _gsiIndexName = a })---- | The complete key schema for a global secondary index, which consists of one--- or more pairs of attribute names and key types ('HASH' or 'RANGE').-gsiKeySchema :: Lens' GlobalSecondaryIndex (NonEmpty KeySchemaElement)-gsiKeySchema = lens _gsiKeySchema (\s a -> s { _gsiKeySchema = a }) . _List1--gsiProjection :: Lens' GlobalSecondaryIndex Projection-gsiProjection = lens _gsiProjection (\s a -> s { _gsiProjection = a })--gsiProvisionedThroughput :: Lens' GlobalSecondaryIndex ProvisionedThroughput-gsiProvisionedThroughput =- lens _gsiProvisionedThroughput- (\s a -> s { _gsiProvisionedThroughput = a })--instance FromJSON GlobalSecondaryIndex where- parseJSON = withObject "GlobalSecondaryIndex" $ \o -> GlobalSecondaryIndex- <$> o .: "IndexName"- <*> o .: "KeySchema"- <*> o .: "Projection"- <*> o .: "ProvisionedThroughput"--instance ToJSON GlobalSecondaryIndex where- toJSON GlobalSecondaryIndex{..} = object- [ "IndexName" .= _gsiIndexName- , "KeySchema" .= _gsiKeySchema- , "Projection" .= _gsiProjection- , "ProvisionedThroughput" .= _gsiProvisionedThroughput- ]--data LocalSecondaryIndexDescription = LocalSecondaryIndexDescription- { _lsidIndexName :: Maybe Text- , _lsidIndexSizeBytes :: Maybe Integer- , _lsidItemCount :: Maybe Integer- , _lsidKeySchema :: List1 "KeySchema" KeySchemaElement- , _lsidProjection :: Maybe Projection- } deriving (Eq, Read, Show)---- | 'LocalSecondaryIndexDescription' constructor.------ The fields accessible through corresponding lenses are:------ * 'lsidIndexName' @::@ 'Maybe' 'Text'------ * 'lsidIndexSizeBytes' @::@ 'Maybe' 'Integer'------ * 'lsidItemCount' @::@ 'Maybe' 'Integer'------ * 'lsidKeySchema' @::@ 'NonEmpty' 'KeySchemaElement'------ * 'lsidProjection' @::@ 'Maybe' 'Projection'----localSecondaryIndexDescription :: NonEmpty KeySchemaElement -- ^ 'lsidKeySchema'- -> LocalSecondaryIndexDescription-localSecondaryIndexDescription p1 = LocalSecondaryIndexDescription- { _lsidKeySchema = withIso _List1 (const id) p1- , _lsidIndexName = Nothing- , _lsidProjection = Nothing- , _lsidIndexSizeBytes = Nothing- , _lsidItemCount = Nothing- }---- | Represents the name of the local secondary index.-lsidIndexName :: Lens' LocalSecondaryIndexDescription (Maybe Text)-lsidIndexName = lens _lsidIndexName (\s a -> s { _lsidIndexName = a })---- | The total size of the specified index, in bytes. DynamoDB updates this value--- approximately every six hours. Recent changes might not be reflected in this--- value.-lsidIndexSizeBytes :: Lens' LocalSecondaryIndexDescription (Maybe Integer)-lsidIndexSizeBytes =- lens _lsidIndexSizeBytes (\s a -> s { _lsidIndexSizeBytes = a })---- | The number of items in the specified index. DynamoDB updates this value--- approximately every six hours. Recent changes might not be reflected in this--- value.-lsidItemCount :: Lens' LocalSecondaryIndexDescription (Maybe Integer)-lsidItemCount = lens _lsidItemCount (\s a -> s { _lsidItemCount = a })---- | The complete index key schema, which consists of one or more pairs of--- attribute names and key types ('HASH' or 'RANGE').-lsidKeySchema :: Lens' LocalSecondaryIndexDescription (NonEmpty KeySchemaElement)-lsidKeySchema = lens _lsidKeySchema (\s a -> s { _lsidKeySchema = a }) . _List1--lsidProjection :: Lens' LocalSecondaryIndexDescription (Maybe Projection)-lsidProjection = lens _lsidProjection (\s a -> s { _lsidProjection = a })--instance FromJSON LocalSecondaryIndexDescription where- parseJSON = withObject "LocalSecondaryIndexDescription" $ \o -> LocalSecondaryIndexDescription- <$> o .:? "IndexName"- <*> o .:? "IndexSizeBytes"- <*> o .:? "ItemCount"- <*> o .: "KeySchema"- <*> o .:? "Projection"--instance ToJSON LocalSecondaryIndexDescription where- toJSON LocalSecondaryIndexDescription{..} = object- [ "IndexName" .= _lsidIndexName- , "KeySchema" .= _lsidKeySchema- , "Projection" .= _lsidProjection- , "IndexSizeBytes" .= _lsidIndexSizeBytes- , "ItemCount" .= _lsidItemCount- ]--data AttributeAction- = Add -- ^ ADD- | Delete' -- ^ DELETE- | Put -- ^ PUT- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable AttributeAction--instance FromText AttributeAction where- parser = takeLowerText >>= \case- "add" -> pure Add- "delete" -> pure Delete'- "put" -> pure Put- e -> fail $- "Failure parsing AttributeAction from " ++ show e--instance ToText AttributeAction where- toText = \case- Add -> "ADD"- Delete' -> "DELETE"- Put -> "PUT"--instance ToByteString AttributeAction-instance ToHeader AttributeAction-instance ToQuery AttributeAction--instance FromJSON AttributeAction where- parseJSON = parseJSONText "AttributeAction"--instance ToJSON AttributeAction where- toJSON = toJSONText--data ScalarAttributeType- = B -- ^ B- | N -- ^ N- | S -- ^ S- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ScalarAttributeType--instance FromText ScalarAttributeType where- parser = takeLowerText >>= \case- "b" -> pure B- "n" -> pure N- "s" -> pure S- e -> fail $- "Failure parsing ScalarAttributeType from " ++ show e--instance ToText ScalarAttributeType where- toText = \case- B -> "B"- N -> "N"- S -> "S"--instance ToByteString ScalarAttributeType-instance ToHeader ScalarAttributeType-instance ToQuery ScalarAttributeType--instance FromJSON ScalarAttributeType where- parseJSON = parseJSONText "ScalarAttributeType"--instance ToJSON ScalarAttributeType where- toJSON = toJSONText--data Projection = Projection- { _pNonKeyAttributes :: List1 "NonKeyAttributes" Text- , _pProjectionType :: Maybe ProjectionType- } deriving (Eq, Read, Show)---- | 'Projection' constructor.------ The fields accessible through corresponding lenses are:------ * 'pNonKeyAttributes' @::@ 'NonEmpty' 'Text'------ * 'pProjectionType' @::@ 'Maybe' 'ProjectionType'----projection :: NonEmpty Text -- ^ 'pNonKeyAttributes'- -> Projection-projection p1 = Projection- { _pNonKeyAttributes = withIso _List1 (const id) p1- , _pProjectionType = Nothing- }---- | Represents the non-key attribute names which will be projected into the index.------ For local secondary indexes, the total count of /NonKeyAttributes/ summed--- across all of the local secondary indexes, must not exceed 20. If you project--- the same attribute into two different indexes, this counts as two distinct--- attributes when determining the total.-pNonKeyAttributes :: Lens' Projection (NonEmpty Text)-pNonKeyAttributes =- lens _pNonKeyAttributes (\s a -> s { _pNonKeyAttributes = a })- . _List1---- | The set of attributes that are projected into the index:------ 'KEYS_ONLY' - Only the index and primary keys are projected into the index.------ 'INCLUDE' - Only the specified table attributes are projected into the--- index. The list of projected attributes are in /NonKeyAttributes/.------ 'ALL' - All of the table attributes are projected into the index.-------pProjectionType :: Lens' Projection (Maybe ProjectionType)-pProjectionType = lens _pProjectionType (\s a -> s { _pProjectionType = a })--instance FromJSON Projection where- parseJSON = withObject "Projection" $ \o -> Projection- <$> o .: "NonKeyAttributes"- <*> o .:? "ProjectionType"--instance ToJSON Projection where- toJSON Projection{..} = object- [ "ProjectionType" .= _pProjectionType- , "NonKeyAttributes" .= _pNonKeyAttributes- ]--data CreateGlobalSecondaryIndexAction = CreateGlobalSecondaryIndexAction- { _cgsiaIndexName :: Text- , _cgsiaKeySchema :: List1 "KeySchema" KeySchemaElement- , _cgsiaProjection :: Projection- , _cgsiaProvisionedThroughput :: ProvisionedThroughput- } deriving (Eq, Read, Show)---- | 'CreateGlobalSecondaryIndexAction' constructor.------ The fields accessible through corresponding lenses are:------ * 'cgsiaIndexName' @::@ 'Text'------ * 'cgsiaKeySchema' @::@ 'NonEmpty' 'KeySchemaElement'------ * 'cgsiaProjection' @::@ 'Projection'------ * 'cgsiaProvisionedThroughput' @::@ 'ProvisionedThroughput'----createGlobalSecondaryIndexAction :: Text -- ^ 'cgsiaIndexName'- -> NonEmpty KeySchemaElement -- ^ 'cgsiaKeySchema'- -> Projection -- ^ 'cgsiaProjection'- -> ProvisionedThroughput -- ^ 'cgsiaProvisionedThroughput'- -> CreateGlobalSecondaryIndexAction-createGlobalSecondaryIndexAction p1 p2 p3 p4 = CreateGlobalSecondaryIndexAction- { _cgsiaIndexName = p1- , _cgsiaKeySchema = withIso _List1 (const id) p2- , _cgsiaProjection = p3- , _cgsiaProvisionedThroughput = p4- }---- | The name of the global secondary index to be created.-cgsiaIndexName :: Lens' CreateGlobalSecondaryIndexAction Text-cgsiaIndexName = lens _cgsiaIndexName (\s a -> s { _cgsiaIndexName = a })---- | The key schema for the global secondary index.-cgsiaKeySchema :: Lens' CreateGlobalSecondaryIndexAction (NonEmpty KeySchemaElement)-cgsiaKeySchema = lens _cgsiaKeySchema (\s a -> s { _cgsiaKeySchema = a }) . _List1--cgsiaProjection :: Lens' CreateGlobalSecondaryIndexAction Projection-cgsiaProjection = lens _cgsiaProjection (\s a -> s { _cgsiaProjection = a })--cgsiaProvisionedThroughput :: Lens' CreateGlobalSecondaryIndexAction ProvisionedThroughput-cgsiaProvisionedThroughput =- lens _cgsiaProvisionedThroughput- (\s a -> s { _cgsiaProvisionedThroughput = a })--instance FromJSON CreateGlobalSecondaryIndexAction where- parseJSON = withObject "CreateGlobalSecondaryIndexAction" $ \o -> CreateGlobalSecondaryIndexAction- <$> o .: "IndexName"- <*> o .: "KeySchema"- <*> o .: "Projection"- <*> o .: "ProvisionedThroughput"--instance ToJSON CreateGlobalSecondaryIndexAction where- toJSON CreateGlobalSecondaryIndexAction{..} = object- [ "IndexName" .= _cgsiaIndexName- , "KeySchema" .= _cgsiaKeySchema- , "Projection" .= _cgsiaProjection- , "ProvisionedThroughput" .= _cgsiaProvisionedThroughput- ]--data Select- = AllAttributes -- ^ ALL_ATTRIBUTES- | AllProjectedAttributes -- ^ ALL_PROJECTED_ATTRIBUTES- | Count -- ^ COUNT- | SpecificAttributes -- ^ SPECIFIC_ATTRIBUTES- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable Select--instance FromText Select where- parser = takeLowerText >>= \case- "all_attributes" -> pure AllAttributes- "all_projected_attributes" -> pure AllProjectedAttributes- "count" -> pure Count- "specific_attributes" -> pure SpecificAttributes- e -> fail $- "Failure parsing Select from " ++ show e--instance ToText Select where- toText = \case- AllAttributes -> "ALL_ATTRIBUTES"- AllProjectedAttributes -> "ALL_PROJECTED_ATTRIBUTES"- Count -> "COUNT"- SpecificAttributes -> "SPECIFIC_ATTRIBUTES"--instance ToByteString Select-instance ToHeader Select-instance ToQuery Select--instance FromJSON Select where- parseJSON = parseJSONText "Select"--instance ToJSON Select where- toJSON = toJSONText--data KeySchemaElement = KeySchemaElement- { _kseAttributeName :: Text- , _kseKeyType :: KeyType- } deriving (Eq, Read, Show)---- | 'KeySchemaElement' constructor.------ The fields accessible through corresponding lenses are:------ * 'kseAttributeName' @::@ 'Text'------ * 'kseKeyType' @::@ 'KeyType'----keySchemaElement :: Text -- ^ 'kseAttributeName'- -> KeyType -- ^ 'kseKeyType'- -> KeySchemaElement-keySchemaElement p1 p2 = KeySchemaElement- { _kseAttributeName = p1- , _kseKeyType = p2- }---- | The name of a key attribute.-kseAttributeName :: Lens' KeySchemaElement Text-kseAttributeName = lens _kseAttributeName (\s a -> s { _kseAttributeName = a })---- | The attribute data, consisting of the data type and the attribute value--- itself.-kseKeyType :: Lens' KeySchemaElement KeyType-kseKeyType = lens _kseKeyType (\s a -> s { _kseKeyType = a })--instance FromJSON KeySchemaElement where- parseJSON = withObject "KeySchemaElement" $ \o -> KeySchemaElement- <$> o .: "AttributeName"- <*> o .: "KeyType"--instance ToJSON KeySchemaElement where- toJSON KeySchemaElement{..} = object- [ "AttributeName" .= _kseAttributeName- , "KeyType" .= _kseKeyType- ]--newtype DeleteGlobalSecondaryIndexAction = DeleteGlobalSecondaryIndexAction- { _dgsiaIndexName :: Text- } deriving (Eq, Ord, Read, Show, Monoid, IsString)---- | 'DeleteGlobalSecondaryIndexAction' constructor.------ The fields accessible through corresponding lenses are:------ * 'dgsiaIndexName' @::@ 'Text'----deleteGlobalSecondaryIndexAction :: Text -- ^ 'dgsiaIndexName'- -> DeleteGlobalSecondaryIndexAction-deleteGlobalSecondaryIndexAction p1 = DeleteGlobalSecondaryIndexAction- { _dgsiaIndexName = p1- }---- | The name of the global secondary index to be deleted.-dgsiaIndexName :: Lens' DeleteGlobalSecondaryIndexAction Text-dgsiaIndexName = lens _dgsiaIndexName (\s a -> s { _dgsiaIndexName = a })--instance FromJSON DeleteGlobalSecondaryIndexAction where- parseJSON = withObject "DeleteGlobalSecondaryIndexAction" $ \o -> DeleteGlobalSecondaryIndexAction- <$> o .: "IndexName"--instance ToJSON DeleteGlobalSecondaryIndexAction where- toJSON DeleteGlobalSecondaryIndexAction{..} = object- [ "IndexName" .= _dgsiaIndexName- ]--newtype DeleteRequest = DeleteRequest- { _dKey :: Map Text AttributeValue- } deriving (Eq, Read, Show, Monoid, Semigroup)---- | 'DeleteRequest' constructor.------ The fields accessible through corresponding lenses are:------ * 'dKey' @::@ 'HashMap' 'Text' 'AttributeValue'----deleteRequest :: DeleteRequest-deleteRequest = DeleteRequest- { _dKey = mempty- }---- | A map of attribute name to attribute values, representing the primary key of--- the item to delete. All of the table's primary key attributes must be--- specified, and their data types must match those of the table's key schema.-dKey :: Lens' DeleteRequest (HashMap Text AttributeValue)-dKey = lens _dKey (\s a -> s { _dKey = a }) . _Map--instance FromJSON DeleteRequest where- parseJSON = withObject "DeleteRequest" $ \o -> DeleteRequest- <$> o .:? "Key" .!= mempty--instance ToJSON DeleteRequest where- toJSON DeleteRequest{..} = object- [ "Key" .= _dKey- ]--data UpdateGlobalSecondaryIndexAction = UpdateGlobalSecondaryIndexAction- { _ugsiaIndexName :: Text- , _ugsiaProvisionedThroughput :: ProvisionedThroughput- } deriving (Eq, Read, Show)---- | 'UpdateGlobalSecondaryIndexAction' constructor.------ The fields accessible through corresponding lenses are:------ * 'ugsiaIndexName' @::@ 'Text'------ * 'ugsiaProvisionedThroughput' @::@ 'ProvisionedThroughput'----updateGlobalSecondaryIndexAction :: Text -- ^ 'ugsiaIndexName'- -> ProvisionedThroughput -- ^ 'ugsiaProvisionedThroughput'- -> UpdateGlobalSecondaryIndexAction-updateGlobalSecondaryIndexAction p1 p2 = UpdateGlobalSecondaryIndexAction- { _ugsiaIndexName = p1- , _ugsiaProvisionedThroughput = p2- }---- | The name of the global secondary index to be updated.-ugsiaIndexName :: Lens' UpdateGlobalSecondaryIndexAction Text-ugsiaIndexName = lens _ugsiaIndexName (\s a -> s { _ugsiaIndexName = a })--ugsiaProvisionedThroughput :: Lens' UpdateGlobalSecondaryIndexAction ProvisionedThroughput-ugsiaProvisionedThroughput =- lens _ugsiaProvisionedThroughput- (\s a -> s { _ugsiaProvisionedThroughput = a })--instance FromJSON UpdateGlobalSecondaryIndexAction where- parseJSON = withObject "UpdateGlobalSecondaryIndexAction" $ \o -> UpdateGlobalSecondaryIndexAction- <$> o .: "IndexName"- <*> o .: "ProvisionedThroughput"--instance ToJSON UpdateGlobalSecondaryIndexAction where- toJSON UpdateGlobalSecondaryIndexAction{..} = object- [ "IndexName" .= _ugsiaIndexName- , "ProvisionedThroughput" .= _ugsiaProvisionedThroughput- ]--newtype PutRequest = PutRequest- { _pItem :: Map Text AttributeValue- } deriving (Eq, Read, Show, Monoid, Semigroup)---- | 'PutRequest' constructor.------ The fields accessible through corresponding lenses are:------ * 'pItem' @::@ 'HashMap' 'Text' 'AttributeValue'----putRequest :: PutRequest-putRequest = PutRequest- { _pItem = mempty- }---- | A map of attribute name to attribute values, representing the primary key of--- an item to be processed by /PutItem/. All of the table's primary key attributes--- must be specified, and their data types must match those of the table's key--- schema. If any attributes are present in the item which are part of an index--- key schema for the table, their types must match the index key schema.-pItem :: Lens' PutRequest (HashMap Text AttributeValue)-pItem = lens _pItem (\s a -> s { _pItem = a }) . _Map--instance FromJSON PutRequest where- parseJSON = withObject "PutRequest" $ \o -> PutRequest- <$> o .:? "Item" .!= mempty--instance ToJSON PutRequest where- toJSON PutRequest{..} = object- [ "Item" .= _pItem- ]--data Condition = Condition- { _cAttributeValueList :: List "AttributeValueList" AttributeValue- , _cComparisonOperator :: ComparisonOperator- } deriving (Eq, Read, Show)---- | 'Condition' constructor.------ The fields accessible through corresponding lenses are:------ * 'cAttributeValueList' @::@ ['AttributeValue']------ * 'cComparisonOperator' @::@ 'ComparisonOperator'----condition :: ComparisonOperator -- ^ 'cComparisonOperator'- -> Condition-condition p1 = Condition- { _cComparisonOperator = p1- , _cAttributeValueList = mempty- }---- | One or more values to evaluate against the supplied attribute. The number of--- values in the list depends on the /ComparisonOperator/ being used.------ For type Number, value comparisons are numeric.------ String value comparisons for greater than, equals, or less than are based on--- ASCII character code values. For example, 'a' is greater than 'A', and 'a' is--- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.------ For Binary, DynamoDB treats each byte of the binary data as unsigned when it--- compares binary values.-cAttributeValueList :: Lens' Condition [AttributeValue]-cAttributeValueList =- lens _cAttributeValueList (\s a -> s { _cAttributeValueList = a })- . _List---- | A comparator for evaluating attributes. For example, equals, greater than,--- less than, etc.------ The following comparison operators are available:------ 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |BEGINS_WITH | IN | BETWEEN'------ The following are descriptions of each comparison operator.------ 'EQ' : Equal. 'EQ' is supported for all datatypes, including lists and maps.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, Binary, String Set, Number Set, or Binary Set. If an item--- contains an /AttributeValue/ element of a different type than the one provided--- in the request, the value does not match. For example, '{"S":"6"}' does not--- equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.------------ 'NE' : Not equal. 'NE' is supported for all datatypes, including lists and--- maps.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one provided in the request, the--- value does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.------------ 'LE' : Less than or equal.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'LT' : Less than.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, or Binary (not a set type). If an item contains an /AttributeValue/--- element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'GE' : Greater than or equal.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'GT' : Greater than.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'NOT_NULL' : The attribute exists. 'NOT_NULL' is supported for all datatypes,--- including lists and maps.------ This operator tests for the existence of an attribute, not its data type. If--- the data type of attribute "'a'" is null, and you evaluate it using 'NOT_NULL',--- the result is a Boolean /true/. This result is because the attribute "'a'"--- exists; its data type is not relevant to the 'NOT_NULL' comparison operator.------ 'NULL' : The attribute does not exist. 'NULL' is supported for all datatypes,--- including lists and maps.------ This operator tests for the nonexistence of an attribute, not its data type.--- If the data type of attribute "'a'" is null, and you evaluate it using 'NULL',--- the result is a Boolean /false/. This is because the attribute "'a'" exists; its--- data type is not relevant to the 'NULL' comparison operator.------ 'CONTAINS' : Checks for a subsequence, or value in a set.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If the target attribute of the--- comparison is of type String, then the operator checks for a substring match.--- If the target attribute of the comparison is of type Binary, then the--- operator looks for a subsequence of the target that matches the input. If the--- target attribute of the comparison is a set ("'SS'", "'NS'", or "'BS'"), then the--- operator evaluates to true if it finds an exact match with any member of the--- set.------ CONTAINS is supported for lists: When evaluating "'a CONTAINS b'", "'a'" can be--- a list; however, "'b'" cannot be a set, a map, or a list.------ 'NOT_CONTAINS' : Checks for absence of a subsequence, or absence of a value--- in a set.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If the target attribute of the--- comparison is a String, then the operator checks for the absence of a--- substring match. If the target attribute of the comparison is Binary, then--- the operator checks for the absence of a subsequence of the target that--- matches the input. If the target attribute of the comparison is a set ("'SS'", "'NS'", or "'BS'"), then the operator evaluates to true if it /does not/ find an--- exact match with any member of the set.------ NOT_CONTAINS is supported for lists: When evaluating "'a NOT CONTAINS b'", "'a'"--- can be a list; however, "'b'" cannot be a set, a map, or a list.------ 'BEGINS_WITH' : Checks for a prefix.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String or--- Binary (not a Number or a set type). The target attribute of the comparison--- must be of type String or Binary (not a Number or a set type).------------ 'IN' : Checks for matching elements within two sets.------ /AttributeValueList/ can contain one or more /AttributeValue/ elements of type--- String, Number, or Binary (not a set type). These attributes are compared--- against an existing set type attribute of an item. If any elements of the--- input set are present in the item attribute, the expression evaluates to true.------ 'BETWEEN' : Greater than or equal to the first value, and less than or equal--- to the second value.------ /AttributeValueList/ must contain two /AttributeValue/ elements of the same--- type, either String, Number, or Binary (not a set type). A target attribute--- matches if the target value is greater than, or equal to, the first element--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'------ For usage examples of /AttributeValueList/ and /ComparisonOperator/, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters> in the /Amazon DynamoDB Developer Guide/.-cComparisonOperator :: Lens' Condition ComparisonOperator-cComparisonOperator =- lens _cComparisonOperator (\s a -> s { _cComparisonOperator = a })--instance FromJSON Condition where- parseJSON = withObject "Condition" $ \o -> Condition- <$> o .:? "AttributeValueList" .!= mempty- <*> o .: "ComparisonOperator"--instance ToJSON Condition where- toJSON Condition{..} = object- [ "AttributeValueList" .= _cAttributeValueList- , "ComparisonOperator" .= _cComparisonOperator- ]--data ConditionalOperator- = And -- ^ AND- | Or -- ^ OR- deriving (Eq, Ord, Read, Show, Generic, Enum)--instance Hashable ConditionalOperator--instance FromText ConditionalOperator where- parser = takeLowerText >>= \case- "and" -> pure And- "or" -> pure Or- e -> fail $- "Failure parsing ConditionalOperator from " ++ show e--instance ToText ConditionalOperator where- toText = \case- And -> "AND"- Or -> "OR"--instance ToByteString ConditionalOperator-instance ToHeader ConditionalOperator-instance ToQuery ConditionalOperator--instance FromJSON ConditionalOperator where- parseJSON = parseJSONText "ConditionalOperator"--instance ToJSON ConditionalOperator where- toJSON = toJSONText--data GlobalSecondaryIndexUpdate = GlobalSecondaryIndexUpdate- { _gsiuCreate :: Maybe CreateGlobalSecondaryIndexAction- , _gsiuDelete :: Maybe DeleteGlobalSecondaryIndexAction- , _gsiuUpdate :: Maybe UpdateGlobalSecondaryIndexAction- } deriving (Eq, Read, Show)---- | 'GlobalSecondaryIndexUpdate' constructor.------ The fields accessible through corresponding lenses are:------ * 'gsiuCreate' @::@ 'Maybe' 'CreateGlobalSecondaryIndexAction'------ * 'gsiuDelete' @::@ 'Maybe' 'DeleteGlobalSecondaryIndexAction'------ * 'gsiuUpdate' @::@ 'Maybe' 'UpdateGlobalSecondaryIndexAction'----globalSecondaryIndexUpdate :: GlobalSecondaryIndexUpdate-globalSecondaryIndexUpdate = GlobalSecondaryIndexUpdate- { _gsiuUpdate = Nothing- , _gsiuCreate = Nothing- , _gsiuDelete = Nothing- }---- | The parameters required for creating a global secondary index on an existing--- table:------ 'IndexName '------ 'KeySchema '------ 'AttributeDefinitions '------ 'Projection '------ 'ProvisionedThroughput '-------gsiuCreate :: Lens' GlobalSecondaryIndexUpdate (Maybe CreateGlobalSecondaryIndexAction)-gsiuCreate = lens _gsiuCreate (\s a -> s { _gsiuCreate = a })---- | The name of an existing global secondary index to be removed.-gsiuDelete :: Lens' GlobalSecondaryIndexUpdate (Maybe DeleteGlobalSecondaryIndexAction)-gsiuDelete = lens _gsiuDelete (\s a -> s { _gsiuDelete = a })---- | The name of an existing global secondary index, along with new provisioned--- throughput settings to be applied to that index.-gsiuUpdate :: Lens' GlobalSecondaryIndexUpdate (Maybe UpdateGlobalSecondaryIndexAction)-gsiuUpdate = lens _gsiuUpdate (\s a -> s { _gsiuUpdate = a })--instance FromJSON GlobalSecondaryIndexUpdate where- parseJSON = withObject "GlobalSecondaryIndexUpdate" $ \o -> GlobalSecondaryIndexUpdate- <$> o .:? "Create"- <*> o .:? "Delete"- <*> o .:? "Update"--instance ToJSON GlobalSecondaryIndexUpdate where- toJSON GlobalSecondaryIndexUpdate{..} = object- [ "Update" .= _gsiuUpdate- , "Create" .= _gsiuCreate- , "Delete" .= _gsiuDelete- ]+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeFamilies #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Network.AWS.DynamoDB.Types+-- 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)+--+module Network.AWS.DynamoDB.Types+ (+ -- * Service+ DynamoDB++ -- * Errors+ , _ProvisionedThroughputExceededException+ , _ConditionalCheckFailedException+ , _ItemCollectionSizeLimitExceededException+ , _InternalServerError+ , _ResourceNotFoundException+ , _ResourceInUseException+ , _LimitExceededException++ -- * AttributeAction+ , AttributeAction (..)++ -- * ComparisonOperator+ , ComparisonOperator (..)++ -- * ConditionalOperator+ , ConditionalOperator (..)++ -- * IndexStatus+ , IndexStatus (..)++ -- * KeyType+ , KeyType (..)++ -- * ProjectionType+ , ProjectionType (..)++ -- * ReturnConsumedCapacity+ , ReturnConsumedCapacity (..)++ -- * ReturnItemCollectionMetrics+ , ReturnItemCollectionMetrics (..)++ -- * ReturnValue+ , ReturnValue (..)++ -- * ScalarAttributeType+ , ScalarAttributeType (..)++ -- * Select+ , Select (..)++ -- * StreamViewType+ , StreamViewType (..)++ -- * TableStatus+ , TableStatus (..)++ -- * AttributeDefinition+ , AttributeDefinition+ , attributeDefinition+ , adAttributeName+ , adAttributeType++ -- * AttributeValue+ , AttributeValue+ , attributeValue+ , avL+ , avM+ , avNS+ , avNULL+ , avN+ , avBS+ , avB+ , avSS+ , avS+ , avBOOL++ -- * AttributeValueUpdate+ , AttributeValueUpdate+ , attributeValueUpdate+ , avuValue+ , avuAction++ -- * Capacity+ , Capacity+ , capacity+ , cCapacityUnits++ -- * Condition+ , Condition+ , condition+ , cAttributeValueList+ , cComparisonOperator++ -- * ConsumedCapacity+ , ConsumedCapacity+ , consumedCapacity+ , ccCapacityUnits+ , ccGlobalSecondaryIndexes+ , ccLocalSecondaryIndexes+ , ccTable+ , ccTableName++ -- * CreateGlobalSecondaryIndexAction+ , CreateGlobalSecondaryIndexAction+ , createGlobalSecondaryIndexAction+ , cgsiaIndexName+ , cgsiaKeySchema+ , cgsiaProjection+ , cgsiaProvisionedThroughput++ -- * DeleteGlobalSecondaryIndexAction+ , DeleteGlobalSecondaryIndexAction+ , deleteGlobalSecondaryIndexAction+ , dgsiaIndexName++ -- * DeleteRequest+ , DeleteRequest+ , deleteRequest+ , drKey++ -- * ExpectedAttributeValue+ , ExpectedAttributeValue+ , expectedAttributeValue+ , eavAttributeValueList+ , eavExists+ , eavValue+ , eavComparisonOperator++ -- * GlobalSecondaryIndex+ , GlobalSecondaryIndex+ , globalSecondaryIndex+ , gsiIndexName+ , gsiKeySchema+ , gsiProjection+ , gsiProvisionedThroughput++ -- * GlobalSecondaryIndexDescription+ , GlobalSecondaryIndexDescription+ , globalSecondaryIndexDescription+ , gsidBackfilling+ , gsidProvisionedThroughput+ , gsidIndexStatus+ , gsidIndexSizeBytes+ , gsidIndexARN+ , gsidKeySchema+ , gsidProjection+ , gsidItemCount+ , gsidIndexName++ -- * GlobalSecondaryIndexUpdate+ , GlobalSecondaryIndexUpdate+ , globalSecondaryIndexUpdate+ , gsiuCreate+ , gsiuDelete+ , gsiuUpdate++ -- * ItemCollectionMetrics+ , ItemCollectionMetrics+ , itemCollectionMetrics+ , icmItemCollectionKey+ , icmSizeEstimateRangeGB++ -- * KeySchemaElement+ , KeySchemaElement+ , keySchemaElement+ , kseAttributeName+ , kseKeyType++ -- * KeysAndAttributes+ , KeysAndAttributes+ , keysAndAttributes+ , kaaProjectionExpression+ , kaaConsistentRead+ , kaaExpressionAttributeNames+ , kaaAttributesToGet+ , kaaKeys++ -- * LocalSecondaryIndex+ , LocalSecondaryIndex+ , localSecondaryIndex+ , lsiIndexName+ , lsiKeySchema+ , lsiProjection++ -- * LocalSecondaryIndexDescription+ , LocalSecondaryIndexDescription+ , localSecondaryIndexDescription+ , lsidIndexSizeBytes+ , lsidIndexARN+ , lsidKeySchema+ , lsidProjection+ , lsidItemCount+ , lsidIndexName++ -- * Projection+ , Projection+ , projection+ , pProjectionType+ , pNonKeyAttributes++ -- * ProvisionedThroughput+ , ProvisionedThroughput+ , provisionedThroughput+ , ptReadCapacityUnits+ , ptWriteCapacityUnits++ -- * ProvisionedThroughputDescription+ , ProvisionedThroughputDescription+ , provisionedThroughputDescription+ , ptdReadCapacityUnits+ , ptdLastDecreaseDateTime+ , ptdWriteCapacityUnits+ , ptdNumberOfDecreasesToday+ , ptdLastIncreaseDateTime++ -- * PutRequest+ , PutRequest+ , putRequest+ , prItem++ -- * StreamSpecification+ , StreamSpecification+ , streamSpecification+ , ssStreamEnabled+ , ssStreamViewType++ -- * TableDescription+ , TableDescription+ , tableDescription+ , tdProvisionedThroughput+ , tdAttributeDefinitions+ , tdLatestStreamARN+ , tdTableSizeBytes+ , tdTableStatus+ , tdTableARN+ , tdKeySchema+ , tdLatestStreamLabel+ , tdGlobalSecondaryIndexes+ , tdLocalSecondaryIndexes+ , tdCreationDateTime+ , tdItemCount+ , tdTableName+ , tdStreamSpecification++ -- * UpdateGlobalSecondaryIndexAction+ , UpdateGlobalSecondaryIndexAction+ , updateGlobalSecondaryIndexAction+ , ugsiaIndexName+ , ugsiaProvisionedThroughput++ -- * WriteRequest+ , WriteRequest+ , writeRequest+ , wrPutRequest+ , wrDeleteRequest+ ) where++import Network.AWS.DynamoDB.Types.Product+import Network.AWS.DynamoDB.Types.Sum+import Network.AWS.Prelude+import Network.AWS.Sign.V4++-- | Version @2012-08-10@ of the Amazon DynamoDB SDK.+data DynamoDB++instance AWSService DynamoDB where+ type Sg DynamoDB = V4+ service = const svc+ where+ svc =+ Service+ { _svcAbbrev = "DynamoDB"+ , _svcPrefix = "dynamodb"+ , _svcVersion = "2012-08-10"+ , _svcEndpoint = defaultEndpoint svc+ , _svcTimeout = Just 70+ , _svcStatus = statusSuccess+ , _svcError = parseJSONError+ , _svcRetry = retry+ }+ retry =+ Exponential+ { _retryBase = 5.0e-2+ , _retryGrowth = 2+ , _retryAttempts = 5+ , _retryCheck = check+ }+ check e+ | has (hasCode "ThrottlingException" . hasStatus 400) e =+ Just "throttling_exception"+ | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"+ | has+ (hasCode "ProvisionedThroughputExceededException" .+ hasStatus 400)+ e =+ Just "throughput_exceeded"+ | has (hasStatus 503) e = Just "service_unavailable"+ | has (hasStatus 500) e = Just "general_server_error"+ | has (hasStatus 509) e = Just "limit_exceeded"+ | otherwise = Nothing++-- | Your request rate is too high. The AWS SDKs for DynamoDB automatically+-- retry requests that receive this exception. Your request is eventually+-- successful, unless your retry queue is too large to finish. Reduce the+-- frequency of requests and use exponential backoff. For more information,+-- go to+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ErrorHandling.html#APIRetries Error Retries and Exponential Backoff>+-- in the /Amazon DynamoDB Developer Guide/.+_ProvisionedThroughputExceededException :: AsError a => Getting (First ServiceError) a ServiceError+_ProvisionedThroughputExceededException =+ _ServiceError . hasCode "ProvisionedThroughputExceededException"++-- | A condition specified in the operation could not be evaluated.+_ConditionalCheckFailedException :: AsError a => Getting (First ServiceError) a ServiceError+_ConditionalCheckFailedException =+ _ServiceError . hasCode "ConditionalCheckFailedException"++-- | An item collection is too large. This exception is only returned for+-- tables that have one or more local secondary indexes.+_ItemCollectionSizeLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError+_ItemCollectionSizeLimitExceededException =+ _ServiceError . hasCode "ItemCollectionSizeLimitExceededException"++-- | An error occurred on the server side.+_InternalServerError :: AsError a => Getting (First ServiceError) a ServiceError+_InternalServerError = _ServiceError . hasCode "InternalServerError"++-- | The operation tried to access a nonexistent table or index. The resource+-- might not be specified correctly, or its status might not be 'ACTIVE'.+_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError+_ResourceNotFoundException =+ _ServiceError . hasCode "ResourceNotFoundException"++-- | The operation conflicts with the resource\'s availability. For example,+-- you attempted to recreate an existing table, or tried to delete a table+-- currently in the 'CREATING' state.+_ResourceInUseException :: AsError a => Getting (First ServiceError) a ServiceError+_ResourceInUseException = _ServiceError . hasCode "ResourceInUseException"++-- | The number of concurrent table requests (cumulative number of tables in+-- the 'CREATING', 'DELETING' or 'UPDATING' state) exceeds the maximum+-- allowed of 10.+--+-- Also, for tables with secondary indexes, only one of those tables can be+-- in the 'CREATING' state at any point in time. Do not attempt to create+-- more than one such table simultaneously.+--+-- The total limit of tables in the 'ACTIVE' state is 250.+_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError+_LimitExceededException = _ServiceError . hasCode "LimitExceededException"
+ gen/Network/AWS/DynamoDB/Types/Product.hs view
@@ -0,0 +1,2333 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE TypeFamilies #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Network.AWS.DynamoDB.Types.Product+-- 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)+--+module Network.AWS.DynamoDB.Types.Product where++import Network.AWS.DynamoDB.Types.Sum+import Network.AWS.Prelude++-- | Represents an attribute for describing the key schema for the table and+-- indexes.+--+-- /See:/ 'attributeDefinition' smart constructor.+data AttributeDefinition = AttributeDefinition'+ { _adAttributeName :: !Text+ , _adAttributeType :: !ScalarAttributeType+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'AttributeDefinition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'adAttributeName'+--+-- * 'adAttributeType'+attributeDefinition+ :: Text -- ^ 'adAttributeName'+ -> ScalarAttributeType -- ^ 'adAttributeType'+ -> AttributeDefinition+attributeDefinition pAttributeName_ pAttributeType_ =+ AttributeDefinition'+ { _adAttributeName = pAttributeName_+ , _adAttributeType = pAttributeType_+ }++-- | A name for the attribute.+adAttributeName :: Lens' AttributeDefinition Text+adAttributeName = lens _adAttributeName (\ s a -> s{_adAttributeName = a});++-- | The data type for the attribute.+adAttributeType :: Lens' AttributeDefinition ScalarAttributeType+adAttributeType = lens _adAttributeType (\ s a -> s{_adAttributeType = a});++instance FromJSON AttributeDefinition where+ parseJSON+ = withObject "AttributeDefinition"+ (\ x ->+ AttributeDefinition' <$>+ (x .: "AttributeName") <*> (x .: "AttributeType"))++instance ToJSON AttributeDefinition where+ toJSON AttributeDefinition'{..}+ = object+ ["AttributeName" .= _adAttributeName,+ "AttributeType" .= _adAttributeType]++-- | Represents the data for an attribute. You can set one, and only one, of+-- the elements.+--+-- Each attribute in an item is a name-value pair. An attribute can be+-- single-valued or multi-valued set. For example, a book item can have+-- title and authors attributes. Each book has one title but can have many+-- authors. The multi-valued attribute is a set; duplicate values are not+-- allowed.+--+-- /See:/ 'attributeValue' smart constructor.+data AttributeValue = AttributeValue'+ { _avL :: !(Maybe [AttributeValue])+ , _avM :: !(Maybe (Map Text AttributeValue))+ , _avNS :: !(Maybe [Text])+ , _avNULL :: !(Maybe Bool)+ , _avN :: !(Maybe Text)+ , _avBS :: !(Maybe [Base64])+ , _avB :: !(Maybe Base64)+ , _avSS :: !(Maybe [Text])+ , _avS :: !(Maybe Text)+ , _avBOOL :: !(Maybe Bool)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'AttributeValue' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'avL'+--+-- * 'avM'+--+-- * 'avNS'+--+-- * 'avNULL'+--+-- * 'avN'+--+-- * 'avBS'+--+-- * 'avB'+--+-- * 'avSS'+--+-- * 'avS'+--+-- * 'avBOOL'+attributeValue+ :: AttributeValue+attributeValue =+ AttributeValue'+ { _avL = Nothing+ , _avM = Nothing+ , _avNS = Nothing+ , _avNULL = Nothing+ , _avN = Nothing+ , _avBS = Nothing+ , _avB = Nothing+ , _avSS = Nothing+ , _avS = Nothing+ , _avBOOL = Nothing+ }++-- | A List of attribute values.+avL :: Lens' AttributeValue [AttributeValue]+avL = lens _avL (\ s a -> s{_avL = a}) . _Default . _Coerce;++-- | A Map of attribute values.+avM :: Lens' AttributeValue (HashMap Text AttributeValue)+avM = lens _avM (\ s a -> s{_avM = a}) . _Default . _Map;++-- | A Number Set data type.+avNS :: Lens' AttributeValue [Text]+avNS = lens _avNS (\ s a -> s{_avNS = a}) . _Default . _Coerce;++-- | A Null data type.+avNULL :: Lens' AttributeValue (Maybe Bool)+avNULL = lens _avNULL (\ s a -> s{_avNULL = a});++-- | A Number data type.+avN :: Lens' AttributeValue (Maybe Text)+avN = lens _avN (\ s a -> s{_avN = a});++-- | A Binary Set data type.+avBS :: Lens' AttributeValue [ByteString]+avBS = lens _avBS (\ s a -> s{_avBS = a}) . _Default . _Coerce;++-- | A Binary data type.+avB :: Lens' AttributeValue (Maybe ByteString)+avB = lens _avB (\ s a -> s{_avB = a}) . mapping _Base64;++-- | A String Set data type.+avSS :: Lens' AttributeValue [Text]+avSS = lens _avSS (\ s a -> s{_avSS = a}) . _Default . _Coerce;++-- | A String data type.+avS :: Lens' AttributeValue (Maybe Text)+avS = lens _avS (\ s a -> s{_avS = a});++-- | A Boolean data type.+avBOOL :: Lens' AttributeValue (Maybe Bool)+avBOOL = lens _avBOOL (\ s a -> s{_avBOOL = a});++instance FromJSON AttributeValue where+ parseJSON+ = withObject "AttributeValue"+ (\ x ->+ AttributeValue' <$>+ (x .:? "L" .!= mempty) <*> (x .:? "M" .!= mempty) <*>+ (x .:? "NS" .!= mempty)+ <*> (x .:? "NULL")+ <*> (x .:? "N")+ <*> (x .:? "BS" .!= mempty)+ <*> (x .:? "B")+ <*> (x .:? "SS" .!= mempty)+ <*> (x .:? "S")+ <*> (x .:? "BOOL"))++instance ToJSON AttributeValue where+ toJSON AttributeValue'{..}+ = object+ ["L" .= _avL, "M" .= _avM, "NS" .= _avNS,+ "NULL" .= _avNULL, "N" .= _avN, "BS" .= _avBS,+ "B" .= _avB, "SS" .= _avSS, "S" .= _avS,+ "BOOL" .= _avBOOL]++-- | For the /UpdateItem/ operation, represents the attributes to be+-- modified, the action to perform on each, and the new value for each.+--+-- You cannot use /UpdateItem/ to update any primary key attributes.+-- Instead, you will need to delete the item, and then use /PutItem/ to+-- create a new item with new attributes.+--+-- Attribute values cannot be null; string and binary type attributes must+-- have lengths greater than zero; and set type attributes must not be+-- empty. Requests with empty values will be rejected with a+-- /ValidationException/ exception.+--+-- /See:/ 'attributeValueUpdate' smart constructor.+data AttributeValueUpdate = AttributeValueUpdate'+ { _avuValue :: !(Maybe AttributeValue)+ , _avuAction :: !(Maybe AttributeAction)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'AttributeValueUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'avuValue'+--+-- * 'avuAction'+attributeValueUpdate+ :: AttributeValueUpdate+attributeValueUpdate =+ AttributeValueUpdate'+ { _avuValue = Nothing+ , _avuAction = Nothing+ }++-- | Undocumented member.+avuValue :: Lens' AttributeValueUpdate (Maybe AttributeValue)+avuValue = lens _avuValue (\ s a -> s{_avuValue = a});++-- | Specifies how to perform the update. Valid values are 'PUT' (default),+-- 'DELETE', and 'ADD'. The behavior depends on whether the specified+-- primary key already exists in the table.+--+-- __If an item with the specified /Key/ is found in the table:__+--+-- - 'PUT' - Adds the specified attribute to the item. If the attribute+-- already exists, it is replaced by the new value.+--+-- - 'DELETE' - If no value is specified, the attribute and its value are+-- removed from the item. The data type of the specified value must+-- match the existing value\'s data type.+--+-- If a /set/ of values is specified, then those values are subtracted+-- from the old set. For example, if the attribute value was the set+-- '[a,b,c]' and the /DELETE/ action specified '[a,c]', then the final+-- attribute value would be '[b]'. Specifying an empty set is an error.+--+-- - 'ADD' - If the attribute does not already exist, then the attribute+-- and its values are added to the item. If the attribute does exist,+-- then the behavior of 'ADD' depends on the data type of the+-- attribute:+--+-- - If the existing attribute is a number, and if /Value/ is also a+-- number, then the /Value/ is mathematically added to the existing+-- attribute. If /Value/ is a negative number, then it is+-- subtracted from the existing attribute.+--+-- If you use 'ADD' to increment or decrement a number value for an+-- item that doesn\'t exist before the update, DynamoDB uses 0 as+-- the initial value.+--+-- In addition, if you use 'ADD' to update an existing item, and+-- intend to increment or decrement an attribute value which does+-- not yet exist, DynamoDB uses '0' as the initial value. For+-- example, suppose that the item you want to update does not yet+-- have an attribute named /itemcount/, but you decide to 'ADD' the+-- number '3' to this attribute anyway, even though it currently+-- does not exist. DynamoDB will create the /itemcount/ attribute,+-- set its initial value to '0', and finally add '3' to it. The+-- result will be a new /itemcount/ attribute in the item, with a+-- value of '3'.+--+-- - If the existing data type is a set, and if the /Value/ is also a+-- set, then the /Value/ is added to the existing set. (This is a+-- /set/ operation, not mathematical addition.) For example, if the+-- attribute value was the set '[1,2]', and the 'ADD' action+-- specified '[3]', then the final attribute value would be+-- '[1,2,3]'. An error occurs if an Add action is specified for a+-- set attribute and the attribute type specified does not match+-- the existing set type.+--+-- Both sets must have the same primitive data type. For example,+-- if the existing data type is a set of strings, the /Value/ must+-- also be a set of strings. The same holds true for number sets+-- and binary sets.+--+-- This action is only valid for an existing attribute whose data type+-- is number or is a set. Do not use 'ADD' for any other data types.+--+-- __If no item with the specified /Key/ is found:__+--+-- - 'PUT' - DynamoDB creates a new item with the specified primary key,+-- and then adds the attribute.+--+-- - 'DELETE' - Nothing happens; there is no attribute to delete.+--+-- - 'ADD' - DynamoDB creates an item with the supplied primary key and+-- number (or set of numbers) for the attribute value. The only data+-- types allowed are number and number set; no other data types can be+-- specified.+--+avuAction :: Lens' AttributeValueUpdate (Maybe AttributeAction)+avuAction = lens _avuAction (\ s a -> s{_avuAction = a});++instance ToJSON AttributeValueUpdate where+ toJSON AttributeValueUpdate'{..}+ = object+ ["Value" .= _avuValue, "Action" .= _avuAction]++-- | Represents the amount of provisioned throughput capacity consumed on a+-- table or an index.+--+-- /See:/ 'capacity' smart constructor.+newtype Capacity = Capacity'+ { _cCapacityUnits :: Maybe Double+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Capacity' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cCapacityUnits'+capacity+ :: Capacity+capacity =+ Capacity'+ { _cCapacityUnits = Nothing+ }++-- | The total number of capacity units consumed on a table or an index.+cCapacityUnits :: Lens' Capacity (Maybe Double)+cCapacityUnits = lens _cCapacityUnits (\ s a -> s{_cCapacityUnits = a});++instance FromJSON Capacity where+ parseJSON+ = withObject "Capacity"+ (\ x -> Capacity' <$> (x .:? "CapacityUnits"))++-- | Represents the selection criteria for a /Query/ or /Scan/ operation:+--+-- - For a /Query/ operation, /Condition/ is used for specifying the+-- /KeyConditions/ to use when querying a table or an index. For+-- /KeyConditions/, only the following comparison operators are+-- supported:+--+-- 'EQ | LE | LT | GE | GT | BEGINS_WITH | BETWEEN'+--+-- /Condition/ is also used in a /QueryFilter/, which evaluates the+-- query results and returns only the desired values.+--+-- - For a /Scan/ operation, /Condition/ is used in a /ScanFilter/, which+-- evaluates the scan results and returns only the desired values.+--+--+-- /See:/ 'condition' smart constructor.+data Condition = Condition'+ { _cAttributeValueList :: !(Maybe [AttributeValue])+ , _cComparisonOperator :: !ComparisonOperator+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Condition' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cAttributeValueList'+--+-- * 'cComparisonOperator'+condition+ :: ComparisonOperator -- ^ 'cComparisonOperator'+ -> Condition+condition pComparisonOperator_ =+ Condition'+ { _cAttributeValueList = Nothing+ , _cComparisonOperator = pComparisonOperator_+ }++-- | One or more values to evaluate against the supplied attribute. The+-- number of values in the list depends on the /ComparisonOperator/ being+-- used.+--+-- For type Number, value comparisons are numeric.+--+-- String value comparisons for greater than, equals, or less than are+-- based on ASCII character code values. For example, 'a' is greater than+-- 'A', and 'a' is greater than 'B'. For a list of code values, see+-- <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.+--+-- For Binary, DynamoDB treats each byte of the binary data as unsigned+-- when it compares binary values.+cAttributeValueList :: Lens' Condition [AttributeValue]+cAttributeValueList = lens _cAttributeValueList (\ s a -> s{_cAttributeValueList = a}) . _Default . _Coerce;++-- | A comparator for evaluating attributes. For example, equals, greater+-- than, less than, etc.+--+-- The following comparison operators are available:+--+-- 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN'+--+-- The following are descriptions of each comparison operator.+--+-- - 'EQ' : Equal. 'EQ' is supported for all datatypes, including lists+-- and maps.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, Binary, String Set, Number Set, or Binary+-- Set. If an item contains an /AttributeValue/ element of a different+-- type than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not equal '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'NE' : Not equal. 'NE' is supported for all datatypes, including+-- lists and maps.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of type+-- String, Number, Binary, String Set, Number Set, or Binary Set. If an+-- item contains an /AttributeValue/ of a different type than the one+-- provided in the request, the value does not match. For example,+-- '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not equal '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'LE' : Less than or equal.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, or Binary (not a set type). If an item+-- contains an /AttributeValue/ element of a different type than the+-- one provided in the request, the value does not match. For example,+-- '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'LT' : Less than.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of type+-- String, Number, or Binary (not a set type). If an item contains an+-- /AttributeValue/ element of a different type than the one provided+-- in the request, the value does not match. For example,+-- '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'GE' : Greater than or equal.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, or Binary (not a set type). If an item+-- contains an /AttributeValue/ element of a different type than the+-- one provided in the request, the value does not match. For example,+-- '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'GT' : Greater than.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, or Binary (not a set type). If an item+-- contains an /AttributeValue/ element of a different type than the+-- one provided in the request, the value does not match. For example,+-- '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'NOT_NULL' : The attribute exists. 'NOT_NULL' is supported for all+-- datatypes, including lists and maps.+--+-- This operator tests for the existence of an attribute, not its data+-- type. If the data type of attribute \"'a'\" is null, and you+-- evaluate it using 'NOT_NULL', the result is a Boolean /true/. This+-- result is because the attribute \"'a'\" exists; its data type is not+-- relevant to the 'NOT_NULL' comparison operator.+--+-- - 'NULL' : The attribute does not exist. 'NULL' is supported for all+-- datatypes, including lists and maps.+--+-- This operator tests for the nonexistence of an attribute, not its+-- data type. If the data type of attribute \"'a'\" is null, and you+-- evaluate it using 'NULL', the result is a Boolean /false/. This is+-- because the attribute \"'a'\" exists; its data type is not relevant+-- to the 'NULL' comparison operator.+--+-- - 'CONTAINS' : Checks for a subsequence, or value in a set.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, or Binary (not a set type). If the target+-- attribute of the comparison is of type String, then the operator+-- checks for a substring match. If the target attribute of the+-- comparison is of type Binary, then the operator looks for a+-- subsequence of the target that matches the input. If the target+-- attribute of the comparison is a set (\"'SS'\", \"'NS'\", or+-- \"'BS'\"), then the operator evaluates to true if it finds an exact+-- match with any member of the set.+--+-- CONTAINS is supported for lists: When evaluating \"'a CONTAINS b'\",+-- \"'a'\" can be a list; however, \"'b'\" cannot be a set, a map, or a+-- list.+--+-- - 'NOT_CONTAINS' : Checks for absence of a subsequence, or absence of+-- a value in a set.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, or Binary (not a set type). If the target+-- attribute of the comparison is a String, then the operator checks+-- for the absence of a substring match. If the target attribute of the+-- comparison is Binary, then the operator checks for the absence of a+-- subsequence of the target that matches the input. If the target+-- attribute of the comparison is a set (\"'SS'\", \"'NS'\", or+-- \"'BS'\"), then the operator evaluates to true if it /does not/ find+-- an exact match with any member of the set.+--+-- NOT_CONTAINS is supported for lists: When evaluating+-- \"'a NOT CONTAINS b'\", \"'a'\" can be a list; however, \"'b'\"+-- cannot be a set, a map, or a list.+--+-- - 'BEGINS_WITH' : Checks for a prefix.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of type+-- String or Binary (not a Number or a set type). The target attribute+-- of the comparison must be of type String or Binary (not a Number or+-- a set type).+--+-- - 'IN' : Checks for matching elements within two sets.+--+-- /AttributeValueList/ can contain one or more /AttributeValue/+-- elements of type String, Number, or Binary (not a set type). These+-- attributes are compared against an existing set type attribute of an+-- item. If any elements of the input set are present in the item+-- attribute, the expression evaluates to true.+--+-- - 'BETWEEN' : Greater than or equal to the first value, and less than+-- or equal to the second value.+--+-- /AttributeValueList/ must contain two /AttributeValue/ elements of+-- the same type, either String, Number, or Binary (not a set type). A+-- target attribute matches if the target value is greater than, or+-- equal to, the first element and less than, or equal to, the second+-- element. If an item contains an /AttributeValue/ element of a+-- different type than the one provided in the request, the value does+-- not match. For example, '{\"S\":\"6\"}' does not compare to+-- '{\"N\":\"6\"}'. Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'+--+-- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters>+-- in the /Amazon DynamoDB Developer Guide/.+cComparisonOperator :: Lens' Condition ComparisonOperator+cComparisonOperator = lens _cComparisonOperator (\ s a -> s{_cComparisonOperator = a});++instance ToJSON Condition where+ toJSON Condition'{..}+ = object+ ["AttributeValueList" .= _cAttributeValueList,+ "ComparisonOperator" .= _cComparisonOperator]++-- | The capacity units consumed by an operation. The data returned includes+-- the total provisioned throughput consumed, along with statistics for the+-- table and any indexes involved in the operation. /ConsumedCapacity/ is+-- only returned if the request asked for it. For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ProvisionedThroughputIntro.html Provisioned Throughput>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- /See:/ 'consumedCapacity' smart constructor.+data ConsumedCapacity = ConsumedCapacity'+ { _ccCapacityUnits :: !(Maybe Double)+ , _ccGlobalSecondaryIndexes :: !(Maybe (Map Text Capacity))+ , _ccLocalSecondaryIndexes :: !(Maybe (Map Text Capacity))+ , _ccTable :: !(Maybe Capacity)+ , _ccTableName :: !(Maybe Text)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ConsumedCapacity' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ccCapacityUnits'+--+-- * 'ccGlobalSecondaryIndexes'+--+-- * 'ccLocalSecondaryIndexes'+--+-- * 'ccTable'+--+-- * 'ccTableName'+consumedCapacity+ :: ConsumedCapacity+consumedCapacity =+ ConsumedCapacity'+ { _ccCapacityUnits = Nothing+ , _ccGlobalSecondaryIndexes = Nothing+ , _ccLocalSecondaryIndexes = Nothing+ , _ccTable = Nothing+ , _ccTableName = Nothing+ }++-- | The total number of capacity units consumed by the operation.+ccCapacityUnits :: Lens' ConsumedCapacity (Maybe Double)+ccCapacityUnits = lens _ccCapacityUnits (\ s a -> s{_ccCapacityUnits = a});++-- | The amount of throughput consumed on each global index affected by the+-- operation.+ccGlobalSecondaryIndexes :: Lens' ConsumedCapacity (HashMap Text Capacity)+ccGlobalSecondaryIndexes = lens _ccGlobalSecondaryIndexes (\ s a -> s{_ccGlobalSecondaryIndexes = a}) . _Default . _Map;++-- | The amount of throughput consumed on each local index affected by the+-- operation.+ccLocalSecondaryIndexes :: Lens' ConsumedCapacity (HashMap Text Capacity)+ccLocalSecondaryIndexes = lens _ccLocalSecondaryIndexes (\ s a -> s{_ccLocalSecondaryIndexes = a}) . _Default . _Map;++-- | The amount of throughput consumed on the table affected by the+-- operation.+ccTable :: Lens' ConsumedCapacity (Maybe Capacity)+ccTable = lens _ccTable (\ s a -> s{_ccTable = a});++-- | The name of the table that was affected by the operation.+ccTableName :: Lens' ConsumedCapacity (Maybe Text)+ccTableName = lens _ccTableName (\ s a -> s{_ccTableName = a});++instance FromJSON ConsumedCapacity where+ parseJSON+ = withObject "ConsumedCapacity"+ (\ x ->+ ConsumedCapacity' <$>+ (x .:? "CapacityUnits") <*>+ (x .:? "GlobalSecondaryIndexes" .!= mempty)+ <*> (x .:? "LocalSecondaryIndexes" .!= mempty)+ <*> (x .:? "Table")+ <*> (x .:? "TableName"))++-- | Represents a new global secondary index to be added to an existing+-- table.+--+-- /See:/ 'createGlobalSecondaryIndexAction' smart constructor.+data CreateGlobalSecondaryIndexAction = CreateGlobalSecondaryIndexAction'+ { _cgsiaIndexName :: !Text+ , _cgsiaKeySchema :: !(List1 KeySchemaElement)+ , _cgsiaProjection :: !Projection+ , _cgsiaProvisionedThroughput :: !ProvisionedThroughput+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'CreateGlobalSecondaryIndexAction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'cgsiaIndexName'+--+-- * 'cgsiaKeySchema'+--+-- * 'cgsiaProjection'+--+-- * 'cgsiaProvisionedThroughput'+createGlobalSecondaryIndexAction+ :: Text -- ^ 'cgsiaIndexName'+ -> NonEmpty KeySchemaElement -- ^ 'cgsiaKeySchema'+ -> Projection -- ^ 'cgsiaProjection'+ -> ProvisionedThroughput -- ^ 'cgsiaProvisionedThroughput'+ -> CreateGlobalSecondaryIndexAction+createGlobalSecondaryIndexAction pIndexName_ pKeySchema_ pProjection_ pProvisionedThroughput_ =+ CreateGlobalSecondaryIndexAction'+ { _cgsiaIndexName = pIndexName_+ , _cgsiaKeySchema = _List1 # pKeySchema_+ , _cgsiaProjection = pProjection_+ , _cgsiaProvisionedThroughput = pProvisionedThroughput_+ }++-- | The name of the global secondary index to be created.+cgsiaIndexName :: Lens' CreateGlobalSecondaryIndexAction Text+cgsiaIndexName = lens _cgsiaIndexName (\ s a -> s{_cgsiaIndexName = a});++-- | The key schema for the global secondary index.+cgsiaKeySchema :: Lens' CreateGlobalSecondaryIndexAction (NonEmpty KeySchemaElement)+cgsiaKeySchema = lens _cgsiaKeySchema (\ s a -> s{_cgsiaKeySchema = a}) . _List1;++-- | Undocumented member.+cgsiaProjection :: Lens' CreateGlobalSecondaryIndexAction Projection+cgsiaProjection = lens _cgsiaProjection (\ s a -> s{_cgsiaProjection = a});++-- | Undocumented member.+cgsiaProvisionedThroughput :: Lens' CreateGlobalSecondaryIndexAction ProvisionedThroughput+cgsiaProvisionedThroughput = lens _cgsiaProvisionedThroughput (\ s a -> s{_cgsiaProvisionedThroughput = a});++instance ToJSON CreateGlobalSecondaryIndexAction+ where+ toJSON CreateGlobalSecondaryIndexAction'{..}+ = object+ ["IndexName" .= _cgsiaIndexName,+ "KeySchema" .= _cgsiaKeySchema,+ "Projection" .= _cgsiaProjection,+ "ProvisionedThroughput" .=+ _cgsiaProvisionedThroughput]++-- | Represents a global secondary index to be deleted from an existing+-- table.+--+-- /See:/ 'deleteGlobalSecondaryIndexAction' smart constructor.+newtype DeleteGlobalSecondaryIndexAction = DeleteGlobalSecondaryIndexAction'+ { _dgsiaIndexName :: Text+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteGlobalSecondaryIndexAction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'dgsiaIndexName'+deleteGlobalSecondaryIndexAction+ :: Text -- ^ 'dgsiaIndexName'+ -> DeleteGlobalSecondaryIndexAction+deleteGlobalSecondaryIndexAction pIndexName_ =+ DeleteGlobalSecondaryIndexAction'+ { _dgsiaIndexName = pIndexName_+ }++-- | The name of the global secondary index to be deleted.+dgsiaIndexName :: Lens' DeleteGlobalSecondaryIndexAction Text+dgsiaIndexName = lens _dgsiaIndexName (\ s a -> s{_dgsiaIndexName = a});++instance ToJSON DeleteGlobalSecondaryIndexAction+ where+ toJSON DeleteGlobalSecondaryIndexAction'{..}+ = object ["IndexName" .= _dgsiaIndexName]++-- | Represents a request to perform a /DeleteItem/ operation on an item.+--+-- /See:/ 'deleteRequest' smart constructor.+newtype DeleteRequest = DeleteRequest'+ { _drKey :: Map Text AttributeValue+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'DeleteRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'drKey'+deleteRequest+ :: DeleteRequest+deleteRequest =+ DeleteRequest'+ { _drKey = mempty+ }++-- | A map of attribute name to attribute values, representing the primary+-- key of the item to delete. All of the table\'s primary key attributes+-- must be specified, and their data types must match those of the table\'s+-- key schema.+drKey :: Lens' DeleteRequest (HashMap Text AttributeValue)+drKey = lens _drKey (\ s a -> s{_drKey = a}) . _Map;++instance FromJSON DeleteRequest where+ parseJSON+ = withObject "DeleteRequest"+ (\ x -> DeleteRequest' <$> (x .:? "Key" .!= mempty))++instance ToJSON DeleteRequest where+ toJSON DeleteRequest'{..} = object ["Key" .= _drKey]++-- | Represents a condition to be compared with an attribute value. This+-- condition can be used with /DeleteItem/, /PutItem/ or /UpdateItem/+-- operations; if the comparison evaluates to true, the operation succeeds;+-- if not, the operation fails. You can use /ExpectedAttributeValue/ in one+-- of two different ways:+--+-- - Use /AttributeValueList/ to specify one or more values to compare+-- against an attribute. Use /ComparisonOperator/ to specify how you+-- want to perform the comparison. If the comparison evaluates to true,+-- then the conditional operation succeeds.+--+-- - Use /Value/ to specify a value that DynamoDB will compare against an+-- attribute. If the values match, then /ExpectedAttributeValue/+-- evaluates to true and the conditional operation succeeds.+-- Optionally, you can also set /Exists/ to false, indicating that you+-- /do not/ expect to find the attribute value in the table. In this+-- case, the conditional operation succeeds only if the comparison+-- evaluates to false.+--+-- /Value/ and /Exists/ are incompatible with /AttributeValueList/ and+-- /ComparisonOperator/. Note that if you use both sets of parameters at+-- once, DynamoDB will return a /ValidationException/ exception.+--+-- /See:/ 'expectedAttributeValue' smart constructor.+data ExpectedAttributeValue = ExpectedAttributeValue'+ { _eavAttributeValueList :: !(Maybe [AttributeValue])+ , _eavExists :: !(Maybe Bool)+ , _eavValue :: !(Maybe AttributeValue)+ , _eavComparisonOperator :: !(Maybe ComparisonOperator)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ExpectedAttributeValue' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'eavAttributeValueList'+--+-- * 'eavExists'+--+-- * 'eavValue'+--+-- * 'eavComparisonOperator'+expectedAttributeValue+ :: ExpectedAttributeValue+expectedAttributeValue =+ ExpectedAttributeValue'+ { _eavAttributeValueList = Nothing+ , _eavExists = Nothing+ , _eavValue = Nothing+ , _eavComparisonOperator = Nothing+ }++-- | One or more values to evaluate against the supplied attribute. The+-- number of values in the list depends on the /ComparisonOperator/ being+-- used.+--+-- For type Number, value comparisons are numeric.+--+-- String value comparisons for greater than, equals, or less than are+-- based on ASCII character code values. For example, 'a' is greater than+-- 'A', and 'a' is greater than 'B'. For a list of code values, see+-- <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.+--+-- For Binary, DynamoDB treats each byte of the binary data as unsigned+-- when it compares binary values.+--+-- For information on specifying data types in JSON, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataFormat.html JSON Data Format>+-- in the /Amazon DynamoDB Developer Guide/.+eavAttributeValueList :: Lens' ExpectedAttributeValue [AttributeValue]+eavAttributeValueList = lens _eavAttributeValueList (\ s a -> s{_eavAttributeValueList = a}) . _Default . _Coerce;++-- | Causes DynamoDB to evaluate the value before attempting a conditional+-- operation:+--+-- - If /Exists/ is 'true', DynamoDB will check to see if that attribute+-- value already exists in the table. If it is found, then the+-- operation succeeds. If it is not found, the operation fails with a+-- /ConditionalCheckFailedException/.+--+-- - If /Exists/ is 'false', DynamoDB assumes that the attribute value+-- does not exist in the table. If in fact the value does not exist,+-- then the assumption is valid and the operation succeeds. If the+-- value is found, despite the assumption that it does not exist, the+-- operation fails with a /ConditionalCheckFailedException/.+--+-- The default setting for /Exists/ is 'true'. If you supply a /Value/ all+-- by itself, DynamoDB assumes the attribute exists: You don\'t have to set+-- /Exists/ to 'true', because it is implied.+--+-- DynamoDB returns a /ValidationException/ if:+--+-- - /Exists/ is 'true' but there is no /Value/ to check. (You expect a+-- value to exist, but don\'t specify what that value is.)+--+-- - /Exists/ is 'false' but you also provide a /Value/. (You cannot+-- expect an attribute to have a value, while also expecting it not to+-- exist.)+--+eavExists :: Lens' ExpectedAttributeValue (Maybe Bool)+eavExists = lens _eavExists (\ s a -> s{_eavExists = a});++-- | Undocumented member.+eavValue :: Lens' ExpectedAttributeValue (Maybe AttributeValue)+eavValue = lens _eavValue (\ s a -> s{_eavValue = a});++-- | A comparator for evaluating attributes in the /AttributeValueList/. For+-- example, equals, greater than, less than, etc.+--+-- The following comparison operators are available:+--+-- 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN'+--+-- The following are descriptions of each comparison operator.+--+-- - 'EQ' : Equal. 'EQ' is supported for all datatypes, including lists+-- and maps.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, Binary, String Set, Number Set, or Binary+-- Set. If an item contains an /AttributeValue/ element of a different+-- type than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not equal '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'NE' : Not equal. 'NE' is supported for all datatypes, including+-- lists and maps.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of type+-- String, Number, Binary, String Set, Number Set, or Binary Set. If an+-- item contains an /AttributeValue/ of a different type than the one+-- provided in the request, the value does not match. For example,+-- '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not equal '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'LE' : Less than or equal.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, or Binary (not a set type). If an item+-- contains an /AttributeValue/ element of a different type than the+-- one provided in the request, the value does not match. For example,+-- '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'LT' : Less than.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of type+-- String, Number, or Binary (not a set type). If an item contains an+-- /AttributeValue/ element of a different type than the one provided+-- in the request, the value does not match. For example,+-- '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'GE' : Greater than or equal.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, or Binary (not a set type). If an item+-- contains an /AttributeValue/ element of a different type than the+-- one provided in the request, the value does not match. For example,+-- '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'GT' : Greater than.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, or Binary (not a set type). If an item+-- contains an /AttributeValue/ element of a different type than the+-- one provided in the request, the value does not match. For example,+-- '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'NOT_NULL' : The attribute exists. 'NOT_NULL' is supported for all+-- datatypes, including lists and maps.+--+-- This operator tests for the existence of an attribute, not its data+-- type. If the data type of attribute \"'a'\" is null, and you+-- evaluate it using 'NOT_NULL', the result is a Boolean /true/. This+-- result is because the attribute \"'a'\" exists; its data type is not+-- relevant to the 'NOT_NULL' comparison operator.+--+-- - 'NULL' : The attribute does not exist. 'NULL' is supported for all+-- datatypes, including lists and maps.+--+-- This operator tests for the nonexistence of an attribute, not its+-- data type. If the data type of attribute \"'a'\" is null, and you+-- evaluate it using 'NULL', the result is a Boolean /false/. This is+-- because the attribute \"'a'\" exists; its data type is not relevant+-- to the 'NULL' comparison operator.+--+-- - 'CONTAINS' : Checks for a subsequence, or value in a set.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, or Binary (not a set type). If the target+-- attribute of the comparison is of type String, then the operator+-- checks for a substring match. If the target attribute of the+-- comparison is of type Binary, then the operator looks for a+-- subsequence of the target that matches the input. If the target+-- attribute of the comparison is a set (\"'SS'\", \"'NS'\", or+-- \"'BS'\"), then the operator evaluates to true if it finds an exact+-- match with any member of the set.+--+-- CONTAINS is supported for lists: When evaluating \"'a CONTAINS b'\",+-- \"'a'\" can be a list; however, \"'b'\" cannot be a set, a map, or a+-- list.+--+-- - 'NOT_CONTAINS' : Checks for absence of a subsequence, or absence of+-- a value in a set.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ element+-- of type String, Number, or Binary (not a set type). If the target+-- attribute of the comparison is a String, then the operator checks+-- for the absence of a substring match. If the target attribute of the+-- comparison is Binary, then the operator checks for the absence of a+-- subsequence of the target that matches the input. If the target+-- attribute of the comparison is a set (\"'SS'\", \"'NS'\", or+-- \"'BS'\"), then the operator evaluates to true if it /does not/ find+-- an exact match with any member of the set.+--+-- NOT_CONTAINS is supported for lists: When evaluating+-- \"'a NOT CONTAINS b'\", \"'a'\" can be a list; however, \"'b'\"+-- cannot be a set, a map, or a list.+--+-- - 'BEGINS_WITH' : Checks for a prefix.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of type+-- String or Binary (not a Number or a set type). The target attribute+-- of the comparison must be of type String or Binary (not a Number or+-- a set type).+--+-- - 'IN' : Checks for matching elements within two sets.+--+-- /AttributeValueList/ can contain one or more /AttributeValue/+-- elements of type String, Number, or Binary (not a set type). These+-- attributes are compared against an existing set type attribute of an+-- item. If any elements of the input set are present in the item+-- attribute, the expression evaluates to true.+--+-- - 'BETWEEN' : Greater than or equal to the first value, and less than+-- or equal to the second value.+--+-- /AttributeValueList/ must contain two /AttributeValue/ elements of+-- the same type, either String, Number, or Binary (not a set type). A+-- target attribute matches if the target value is greater than, or+-- equal to, the first element and less than, or equal to, the second+-- element. If an item contains an /AttributeValue/ element of a+-- different type than the one provided in the request, the value does+-- not match. For example, '{\"S\":\"6\"}' does not compare to+-- '{\"N\":\"6\"}'. Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'+--+eavComparisonOperator :: Lens' ExpectedAttributeValue (Maybe ComparisonOperator)+eavComparisonOperator = lens _eavComparisonOperator (\ s a -> s{_eavComparisonOperator = a});++instance ToJSON ExpectedAttributeValue where+ toJSON ExpectedAttributeValue'{..}+ = object+ ["AttributeValueList" .= _eavAttributeValueList,+ "Exists" .= _eavExists, "Value" .= _eavValue,+ "ComparisonOperator" .= _eavComparisonOperator]++-- | Represents the properties of a global secondary index.+--+-- /See:/ 'globalSecondaryIndex' smart constructor.+data GlobalSecondaryIndex = GlobalSecondaryIndex'+ { _gsiIndexName :: !Text+ , _gsiKeySchema :: !(List1 KeySchemaElement)+ , _gsiProjection :: !Projection+ , _gsiProvisionedThroughput :: !ProvisionedThroughput+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'GlobalSecondaryIndex' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gsiIndexName'+--+-- * 'gsiKeySchema'+--+-- * 'gsiProjection'+--+-- * 'gsiProvisionedThroughput'+globalSecondaryIndex+ :: Text -- ^ 'gsiIndexName'+ -> NonEmpty KeySchemaElement -- ^ 'gsiKeySchema'+ -> Projection -- ^ 'gsiProjection'+ -> ProvisionedThroughput -- ^ 'gsiProvisionedThroughput'+ -> GlobalSecondaryIndex+globalSecondaryIndex pIndexName_ pKeySchema_ pProjection_ pProvisionedThroughput_ =+ GlobalSecondaryIndex'+ { _gsiIndexName = pIndexName_+ , _gsiKeySchema = _List1 # pKeySchema_+ , _gsiProjection = pProjection_+ , _gsiProvisionedThroughput = pProvisionedThroughput_+ }++-- | The name of the global secondary index. The name must be unique among+-- all other indexes on this table.+gsiIndexName :: Lens' GlobalSecondaryIndex Text+gsiIndexName = lens _gsiIndexName (\ s a -> s{_gsiIndexName = a});++-- | The complete key schema for a global secondary index, which consists of+-- one or more pairs of attribute names and key types ('HASH' or 'RANGE').+gsiKeySchema :: Lens' GlobalSecondaryIndex (NonEmpty KeySchemaElement)+gsiKeySchema = lens _gsiKeySchema (\ s a -> s{_gsiKeySchema = a}) . _List1;++-- | Undocumented member.+gsiProjection :: Lens' GlobalSecondaryIndex Projection+gsiProjection = lens _gsiProjection (\ s a -> s{_gsiProjection = a});++-- | Undocumented member.+gsiProvisionedThroughput :: Lens' GlobalSecondaryIndex ProvisionedThroughput+gsiProvisionedThroughput = lens _gsiProvisionedThroughput (\ s a -> s{_gsiProvisionedThroughput = a});++instance ToJSON GlobalSecondaryIndex where+ toJSON GlobalSecondaryIndex'{..}+ = object+ ["IndexName" .= _gsiIndexName,+ "KeySchema" .= _gsiKeySchema,+ "Projection" .= _gsiProjection,+ "ProvisionedThroughput" .= _gsiProvisionedThroughput]++-- | Represents the properties of a global secondary index.+--+-- /See:/ 'globalSecondaryIndexDescription' smart constructor.+data GlobalSecondaryIndexDescription = GlobalSecondaryIndexDescription'+ { _gsidBackfilling :: !(Maybe Bool)+ , _gsidProvisionedThroughput :: !(Maybe ProvisionedThroughputDescription)+ , _gsidIndexStatus :: !(Maybe IndexStatus)+ , _gsidIndexSizeBytes :: !(Maybe Integer)+ , _gsidIndexARN :: !(Maybe Text)+ , _gsidKeySchema :: !(Maybe (List1 KeySchemaElement))+ , _gsidProjection :: !(Maybe Projection)+ , _gsidItemCount :: !(Maybe Integer)+ , _gsidIndexName :: !(Maybe Text)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'GlobalSecondaryIndexDescription' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gsidBackfilling'+--+-- * 'gsidProvisionedThroughput'+--+-- * 'gsidIndexStatus'+--+-- * 'gsidIndexSizeBytes'+--+-- * 'gsidIndexARN'+--+-- * 'gsidKeySchema'+--+-- * 'gsidProjection'+--+-- * 'gsidItemCount'+--+-- * 'gsidIndexName'+globalSecondaryIndexDescription+ :: GlobalSecondaryIndexDescription+globalSecondaryIndexDescription =+ GlobalSecondaryIndexDescription'+ { _gsidBackfilling = Nothing+ , _gsidProvisionedThroughput = Nothing+ , _gsidIndexStatus = Nothing+ , _gsidIndexSizeBytes = Nothing+ , _gsidIndexARN = Nothing+ , _gsidKeySchema = Nothing+ , _gsidProjection = Nothing+ , _gsidItemCount = Nothing+ , _gsidIndexName = Nothing+ }++-- | Indicates whether the index is currently backfilling. /Backfilling/ is+-- the process of reading items from the table and determining whether they+-- can be added to the index. (Not all items will qualify: For example, a+-- hash key attribute cannot have any duplicates.) If an item can be added+-- to the index, DynamoDB will do so. After all items have been processed,+-- the backfilling operation is complete and /Backfilling/ is false.+--+-- For indexes that were created during a /CreateTable/ operation, the+-- /Backfilling/ attribute does not appear in the /DescribeTable/ output.+gsidBackfilling :: Lens' GlobalSecondaryIndexDescription (Maybe Bool)+gsidBackfilling = lens _gsidBackfilling (\ s a -> s{_gsidBackfilling = a});++-- | Undocumented member.+gsidProvisionedThroughput :: Lens' GlobalSecondaryIndexDescription (Maybe ProvisionedThroughputDescription)+gsidProvisionedThroughput = lens _gsidProvisionedThroughput (\ s a -> s{_gsidProvisionedThroughput = a});++-- | The current state of the global secondary index:+--+-- - /CREATING/ - The index is being created.+--+-- - /UPDATING/ - The index is being updated.+--+-- - /DELETING/ - The index is being deleted.+--+-- - /ACTIVE/ - The index is ready for use.+--+gsidIndexStatus :: Lens' GlobalSecondaryIndexDescription (Maybe IndexStatus)+gsidIndexStatus = lens _gsidIndexStatus (\ s a -> s{_gsidIndexStatus = a});++-- | The total size of the specified index, in bytes. DynamoDB updates this+-- value approximately every six hours. Recent changes might not be+-- reflected in this value.+gsidIndexSizeBytes :: Lens' GlobalSecondaryIndexDescription (Maybe Integer)+gsidIndexSizeBytes = lens _gsidIndexSizeBytes (\ s a -> s{_gsidIndexSizeBytes = a});++-- | The Amazon Resource Name (ARN) that uniquely identifies the index.+gsidIndexARN :: Lens' GlobalSecondaryIndexDescription (Maybe Text)+gsidIndexARN = lens _gsidIndexARN (\ s a -> s{_gsidIndexARN = a});++-- | The complete key schema for the global secondary index, consisting of+-- one or more pairs of attribute names and key types ('HASH' or 'RANGE').+gsidKeySchema :: Lens' GlobalSecondaryIndexDescription (Maybe (NonEmpty KeySchemaElement))+gsidKeySchema = lens _gsidKeySchema (\ s a -> s{_gsidKeySchema = a}) . mapping _List1;++-- | Undocumented member.+gsidProjection :: Lens' GlobalSecondaryIndexDescription (Maybe Projection)+gsidProjection = lens _gsidProjection (\ s a -> s{_gsidProjection = a});++-- | The number of items in the specified index. DynamoDB updates this value+-- approximately every six hours. Recent changes might not be reflected in+-- this value.+gsidItemCount :: Lens' GlobalSecondaryIndexDescription (Maybe Integer)+gsidItemCount = lens _gsidItemCount (\ s a -> s{_gsidItemCount = a});++-- | The name of the global secondary index.+gsidIndexName :: Lens' GlobalSecondaryIndexDescription (Maybe Text)+gsidIndexName = lens _gsidIndexName (\ s a -> s{_gsidIndexName = a});++instance FromJSON GlobalSecondaryIndexDescription+ where+ parseJSON+ = withObject "GlobalSecondaryIndexDescription"+ (\ x ->+ GlobalSecondaryIndexDescription' <$>+ (x .:? "Backfilling") <*>+ (x .:? "ProvisionedThroughput")+ <*> (x .:? "IndexStatus")+ <*> (x .:? "IndexSizeBytes")+ <*> (x .:? "IndexArn")+ <*> (x .:? "KeySchema")+ <*> (x .:? "Projection")+ <*> (x .:? "ItemCount")+ <*> (x .:? "IndexName"))++-- | Represents one of the following:+--+-- - A new global secondary index to be added to an existing table.+--+-- - New provisioned throughput parameters for an existing global+-- secondary index.+--+-- - An existing global secondary index to be removed from an existing+-- table.+--+--+-- /See:/ 'globalSecondaryIndexUpdate' smart constructor.+data GlobalSecondaryIndexUpdate = GlobalSecondaryIndexUpdate'+ { _gsiuCreate :: !(Maybe CreateGlobalSecondaryIndexAction)+ , _gsiuDelete :: !(Maybe DeleteGlobalSecondaryIndexAction)+ , _gsiuUpdate :: !(Maybe UpdateGlobalSecondaryIndexAction)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'GlobalSecondaryIndexUpdate' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'gsiuCreate'+--+-- * 'gsiuDelete'+--+-- * 'gsiuUpdate'+globalSecondaryIndexUpdate+ :: GlobalSecondaryIndexUpdate+globalSecondaryIndexUpdate =+ GlobalSecondaryIndexUpdate'+ { _gsiuCreate = Nothing+ , _gsiuDelete = Nothing+ , _gsiuUpdate = Nothing+ }++-- | The parameters required for creating a global secondary index on an+-- existing table:+--+-- - 'IndexName '+--+-- - 'KeySchema '+--+-- - 'AttributeDefinitions '+--+-- - 'Projection '+--+-- - 'ProvisionedThroughput '+--+gsiuCreate :: Lens' GlobalSecondaryIndexUpdate (Maybe CreateGlobalSecondaryIndexAction)+gsiuCreate = lens _gsiuCreate (\ s a -> s{_gsiuCreate = a});++-- | The name of an existing global secondary index to be removed.+gsiuDelete :: Lens' GlobalSecondaryIndexUpdate (Maybe DeleteGlobalSecondaryIndexAction)+gsiuDelete = lens _gsiuDelete (\ s a -> s{_gsiuDelete = a});++-- | The name of an existing global secondary index, along with new+-- provisioned throughput settings to be applied to that index.+gsiuUpdate :: Lens' GlobalSecondaryIndexUpdate (Maybe UpdateGlobalSecondaryIndexAction)+gsiuUpdate = lens _gsiuUpdate (\ s a -> s{_gsiuUpdate = a});++instance ToJSON GlobalSecondaryIndexUpdate where+ toJSON GlobalSecondaryIndexUpdate'{..}+ = object+ ["Create" .= _gsiuCreate, "Delete" .= _gsiuDelete,+ "Update" .= _gsiuUpdate]++-- | Information about item collections, if any, that were affected by the+-- operation. /ItemCollectionMetrics/ is only returned if the request asked+-- for it. If the table does not have any local secondary indexes, this+-- information is not returned in the response.+--+-- /See:/ 'itemCollectionMetrics' smart constructor.+data ItemCollectionMetrics = ItemCollectionMetrics'+ { _icmItemCollectionKey :: !(Maybe (Map Text AttributeValue))+ , _icmSizeEstimateRangeGB :: !(Maybe [Double])+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ItemCollectionMetrics' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'icmItemCollectionKey'+--+-- * 'icmSizeEstimateRangeGB'+itemCollectionMetrics+ :: ItemCollectionMetrics+itemCollectionMetrics =+ ItemCollectionMetrics'+ { _icmItemCollectionKey = Nothing+ , _icmSizeEstimateRangeGB = Nothing+ }++-- | The hash key value of the item collection. This value is the same as the+-- hash key of the item.+icmItemCollectionKey :: Lens' ItemCollectionMetrics (HashMap Text AttributeValue)+icmItemCollectionKey = lens _icmItemCollectionKey (\ s a -> s{_icmItemCollectionKey = a}) . _Default . _Map;++-- | An estimate of item collection size, in gigabytes. This value is a+-- two-element array containing a lower bound and an upper bound for the+-- estimate. The estimate includes the size of all the items in the table,+-- plus the size of all attributes projected into all of the local+-- secondary indexes on that table. Use this estimate to measure whether a+-- local secondary index is approaching its size limit.+--+-- The estimate is subject to change over time; therefore, do not rely on+-- the precision or accuracy of the estimate.+icmSizeEstimateRangeGB :: Lens' ItemCollectionMetrics [Double]+icmSizeEstimateRangeGB = lens _icmSizeEstimateRangeGB (\ s a -> s{_icmSizeEstimateRangeGB = a}) . _Default . _Coerce;++instance FromJSON ItemCollectionMetrics where+ parseJSON+ = withObject "ItemCollectionMetrics"+ (\ x ->+ ItemCollectionMetrics' <$>+ (x .:? "ItemCollectionKey" .!= mempty) <*>+ (x .:? "SizeEstimateRangeGB" .!= mempty))++-- | Represents /a single element/ of a key schema. A key schema specifies+-- the attributes that make up the primary key of a table, or the key+-- attributes of an index.+--+-- A /KeySchemaElement/ represents exactly one attribute of the primary+-- key. For example, a hash type primary key would be represented by one+-- /KeySchemaElement/. A hash-and-range type primary key would require one+-- /KeySchemaElement/ for the hash attribute, and another+-- /KeySchemaElement/ for the range attribute.+--+-- /See:/ 'keySchemaElement' smart constructor.+data KeySchemaElement = KeySchemaElement'+ { _kseAttributeName :: !Text+ , _kseKeyType :: !KeyType+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'KeySchemaElement' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'kseAttributeName'+--+-- * 'kseKeyType'+keySchemaElement+ :: Text -- ^ 'kseAttributeName'+ -> KeyType -- ^ 'kseKeyType'+ -> KeySchemaElement+keySchemaElement pAttributeName_ pKeyType_ =+ KeySchemaElement'+ { _kseAttributeName = pAttributeName_+ , _kseKeyType = pKeyType_+ }++-- | The name of a key attribute.+kseAttributeName :: Lens' KeySchemaElement Text+kseAttributeName = lens _kseAttributeName (\ s a -> s{_kseAttributeName = a});++-- | The attribute data, consisting of the data type and the attribute value+-- itself.+kseKeyType :: Lens' KeySchemaElement KeyType+kseKeyType = lens _kseKeyType (\ s a -> s{_kseKeyType = a});++instance FromJSON KeySchemaElement where+ parseJSON+ = withObject "KeySchemaElement"+ (\ x ->+ KeySchemaElement' <$>+ (x .: "AttributeName") <*> (x .: "KeyType"))++instance ToJSON KeySchemaElement where+ toJSON KeySchemaElement'{..}+ = object+ ["AttributeName" .= _kseAttributeName,+ "KeyType" .= _kseKeyType]++-- | Represents a set of primary keys and, for each key, the attributes to+-- retrieve from the table.+--+-- For each primary key, you must provide /all/ of the key attributes. For+-- example, with a hash type primary key, you only need to provide the hash+-- attribute. For a hash-and-range type primary key, you must provide+-- /both/ the hash attribute and the range attribute.+--+-- /See:/ 'keysAndAttributes' smart constructor.+data KeysAndAttributes = KeysAndAttributes'+ { _kaaProjectionExpression :: !(Maybe Text)+ , _kaaConsistentRead :: !(Maybe Bool)+ , _kaaExpressionAttributeNames :: !(Maybe (Map Text Text))+ , _kaaAttributesToGet :: !(Maybe (List1 Text))+ , _kaaKeys :: !(List1 (Map Text AttributeValue))+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'KeysAndAttributes' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'kaaProjectionExpression'+--+-- * 'kaaConsistentRead'+--+-- * 'kaaExpressionAttributeNames'+--+-- * 'kaaAttributesToGet'+--+-- * 'kaaKeys'+keysAndAttributes+ :: NonEmpty (HashMap Text AttributeValue) -- ^ 'kaaKeys'+ -> KeysAndAttributes+keysAndAttributes pKeys_ =+ KeysAndAttributes'+ { _kaaProjectionExpression = Nothing+ , _kaaConsistentRead = Nothing+ , _kaaExpressionAttributeNames = Nothing+ , _kaaAttributesToGet = Nothing+ , _kaaKeys = _List1 # pKeys_+ }++-- | A string that identifies one or more attributes to retrieve from the+-- table. These attributes can include scalars, sets, or elements of a JSON+-- document. The attributes in the /ProjectionExpression/ must be separated+-- by commas.+--+-- If no attribute names are specified, then all attributes will be+-- returned. If any of the requested attributes are not found, they will+-- not appear in the result.+--+-- For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- /ProjectionExpression/ replaces the legacy /AttributesToGet/ parameter.+kaaProjectionExpression :: Lens' KeysAndAttributes (Maybe Text)+kaaProjectionExpression = lens _kaaProjectionExpression (\ s a -> s{_kaaProjectionExpression = a});++-- | The consistency of a read operation. If set to 'true', then a strongly+-- consistent read is used; otherwise, an eventually consistent read is+-- used.+kaaConsistentRead :: Lens' KeysAndAttributes (Maybe Bool)+kaaConsistentRead = lens _kaaConsistentRead (\ s a -> s{_kaaConsistentRead = a});++-- | One or more substitution tokens for attribute names in an expression.+-- The following are some use cases for using /ExpressionAttributeNames/:+--+-- - To access an attribute whose name conflicts with a DynamoDB reserved+-- word.+--+-- - To create a placeholder for repeating occurrences of an attribute+-- name in an expression.+--+-- - To prevent special characters in an attribute name from being+-- misinterpreted in an expression.+--+-- Use the __#__ character in an expression to dereference an attribute+-- name. For example, consider the following attribute name:+--+-- - 'Percentile'+--+-- The name of this attribute conflicts with a reserved word, so it cannot+-- be used directly in an expression. (For the complete list of reserved+-- words, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words>+-- in the /Amazon DynamoDB Developer Guide/). To work around this, you+-- could specify the following for /ExpressionAttributeNames/:+--+-- - '{\"#P\":\"Percentile\"}'+--+-- You could then use this substitution in an expression, as in this+-- example:+--+-- - '#P = :val'+--+-- Tokens that begin with the __:__ character are /expression attribute+-- values/, which are placeholders for the actual value at runtime.+--+-- For more information on expression attribute names, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/.+kaaExpressionAttributeNames :: Lens' KeysAndAttributes (HashMap Text Text)+kaaExpressionAttributeNames = lens _kaaExpressionAttributeNames (\ s a -> s{_kaaExpressionAttributeNames = a}) . _Default . _Map;++-- | One or more attributes to retrieve from the table or index. If no+-- attribute names are specified then all attributes will be returned. If+-- any of the specified attributes are not found, they will not appear in+-- the result.+kaaAttributesToGet :: Lens' KeysAndAttributes (Maybe (NonEmpty Text))+kaaAttributesToGet = lens _kaaAttributesToGet (\ s a -> s{_kaaAttributesToGet = a}) . mapping _List1;++-- | The primary key attribute values that define the items and the+-- attributes associated with the items.+kaaKeys :: Lens' KeysAndAttributes (NonEmpty (HashMap Text AttributeValue))+kaaKeys = lens _kaaKeys (\ s a -> s{_kaaKeys = a}) . _List1;++instance FromJSON KeysAndAttributes where+ parseJSON+ = withObject "KeysAndAttributes"+ (\ x ->+ KeysAndAttributes' <$>+ (x .:? "ProjectionExpression") <*>+ (x .:? "ConsistentRead")+ <*> (x .:? "ExpressionAttributeNames" .!= mempty)+ <*> (x .:? "AttributesToGet")+ <*> (x .: "Keys"))++instance ToJSON KeysAndAttributes where+ toJSON KeysAndAttributes'{..}+ = object+ ["ProjectionExpression" .= _kaaProjectionExpression,+ "ConsistentRead" .= _kaaConsistentRead,+ "ExpressionAttributeNames" .=+ _kaaExpressionAttributeNames,+ "AttributesToGet" .= _kaaAttributesToGet,+ "Keys" .= _kaaKeys]++-- | Represents the properties of a local secondary index.+--+-- /See:/ 'localSecondaryIndex' smart constructor.+data LocalSecondaryIndex = LocalSecondaryIndex'+ { _lsiIndexName :: !Text+ , _lsiKeySchema :: !(List1 KeySchemaElement)+ , _lsiProjection :: !Projection+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'LocalSecondaryIndex' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lsiIndexName'+--+-- * 'lsiKeySchema'+--+-- * 'lsiProjection'+localSecondaryIndex+ :: Text -- ^ 'lsiIndexName'+ -> NonEmpty KeySchemaElement -- ^ 'lsiKeySchema'+ -> Projection -- ^ 'lsiProjection'+ -> LocalSecondaryIndex+localSecondaryIndex pIndexName_ pKeySchema_ pProjection_ =+ LocalSecondaryIndex'+ { _lsiIndexName = pIndexName_+ , _lsiKeySchema = _List1 # pKeySchema_+ , _lsiProjection = pProjection_+ }++-- | The name of the local secondary index. The name must be unique among all+-- other indexes on this table.+lsiIndexName :: Lens' LocalSecondaryIndex Text+lsiIndexName = lens _lsiIndexName (\ s a -> s{_lsiIndexName = a});++-- | The complete key schema for the local secondary index, consisting of one+-- or more pairs of attribute names and key types ('HASH' or 'RANGE').+lsiKeySchema :: Lens' LocalSecondaryIndex (NonEmpty KeySchemaElement)+lsiKeySchema = lens _lsiKeySchema (\ s a -> s{_lsiKeySchema = a}) . _List1;++-- | Undocumented member.+lsiProjection :: Lens' LocalSecondaryIndex Projection+lsiProjection = lens _lsiProjection (\ s a -> s{_lsiProjection = a});++instance ToJSON LocalSecondaryIndex where+ toJSON LocalSecondaryIndex'{..}+ = object+ ["IndexName" .= _lsiIndexName,+ "KeySchema" .= _lsiKeySchema,+ "Projection" .= _lsiProjection]++-- | Represents the properties of a local secondary index.+--+-- /See:/ 'localSecondaryIndexDescription' smart constructor.+data LocalSecondaryIndexDescription = LocalSecondaryIndexDescription'+ { _lsidIndexSizeBytes :: !(Maybe Integer)+ , _lsidIndexARN :: !(Maybe Text)+ , _lsidKeySchema :: !(Maybe (List1 KeySchemaElement))+ , _lsidProjection :: !(Maybe Projection)+ , _lsidItemCount :: !(Maybe Integer)+ , _lsidIndexName :: !(Maybe Text)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'LocalSecondaryIndexDescription' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'lsidIndexSizeBytes'+--+-- * 'lsidIndexARN'+--+-- * 'lsidKeySchema'+--+-- * 'lsidProjection'+--+-- * 'lsidItemCount'+--+-- * 'lsidIndexName'+localSecondaryIndexDescription+ :: LocalSecondaryIndexDescription+localSecondaryIndexDescription =+ LocalSecondaryIndexDescription'+ { _lsidIndexSizeBytes = Nothing+ , _lsidIndexARN = Nothing+ , _lsidKeySchema = Nothing+ , _lsidProjection = Nothing+ , _lsidItemCount = Nothing+ , _lsidIndexName = Nothing+ }++-- | The total size of the specified index, in bytes. DynamoDB updates this+-- value approximately every six hours. Recent changes might not be+-- reflected in this value.+lsidIndexSizeBytes :: Lens' LocalSecondaryIndexDescription (Maybe Integer)+lsidIndexSizeBytes = lens _lsidIndexSizeBytes (\ s a -> s{_lsidIndexSizeBytes = a});++-- | The Amazon Resource Name (ARN) that uniquely identifies the index.+lsidIndexARN :: Lens' LocalSecondaryIndexDescription (Maybe Text)+lsidIndexARN = lens _lsidIndexARN (\ s a -> s{_lsidIndexARN = a});++-- | The complete index key schema, which consists of one or more pairs of+-- attribute names and key types ('HASH' or 'RANGE').+lsidKeySchema :: Lens' LocalSecondaryIndexDescription (Maybe (NonEmpty KeySchemaElement))+lsidKeySchema = lens _lsidKeySchema (\ s a -> s{_lsidKeySchema = a}) . mapping _List1;++-- | Undocumented member.+lsidProjection :: Lens' LocalSecondaryIndexDescription (Maybe Projection)+lsidProjection = lens _lsidProjection (\ s a -> s{_lsidProjection = a});++-- | The number of items in the specified index. DynamoDB updates this value+-- approximately every six hours. Recent changes might not be reflected in+-- this value.+lsidItemCount :: Lens' LocalSecondaryIndexDescription (Maybe Integer)+lsidItemCount = lens _lsidItemCount (\ s a -> s{_lsidItemCount = a});++-- | Represents the name of the local secondary index.+lsidIndexName :: Lens' LocalSecondaryIndexDescription (Maybe Text)+lsidIndexName = lens _lsidIndexName (\ s a -> s{_lsidIndexName = a});++instance FromJSON LocalSecondaryIndexDescription+ where+ parseJSON+ = withObject "LocalSecondaryIndexDescription"+ (\ x ->+ LocalSecondaryIndexDescription' <$>+ (x .:? "IndexSizeBytes") <*> (x .:? "IndexArn") <*>+ (x .:? "KeySchema")+ <*> (x .:? "Projection")+ <*> (x .:? "ItemCount")+ <*> (x .:? "IndexName"))++-- | Represents attributes that are copied (projected) from the table into an+-- index. These are in addition to the primary key attributes and index key+-- attributes, which are automatically projected.+--+-- /See:/ 'projection' smart constructor.+data Projection = Projection'+ { _pProjectionType :: !(Maybe ProjectionType)+ , _pNonKeyAttributes :: !(Maybe (List1 Text))+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'Projection' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'pProjectionType'+--+-- * 'pNonKeyAttributes'+projection+ :: Projection+projection =+ Projection'+ { _pProjectionType = Nothing+ , _pNonKeyAttributes = Nothing+ }++-- | The set of attributes that are projected into the index:+--+-- - 'KEYS_ONLY' - Only the index and primary keys are projected into the+-- index.+--+-- - 'INCLUDE' - Only the specified table attributes are projected into+-- the index. The list of projected attributes are in+-- /NonKeyAttributes/.+--+-- - 'ALL' - All of the table attributes are projected into the index.+--+pProjectionType :: Lens' Projection (Maybe ProjectionType)+pProjectionType = lens _pProjectionType (\ s a -> s{_pProjectionType = a});++-- | Represents the non-key attribute names which will be projected into the+-- index.+--+-- For local secondary indexes, the total count of /NonKeyAttributes/+-- summed across all of the local secondary indexes, must not exceed 20. If+-- you project the same attribute into two different indexes, this counts+-- as two distinct attributes when determining the total.+pNonKeyAttributes :: Lens' Projection (Maybe (NonEmpty Text))+pNonKeyAttributes = lens _pNonKeyAttributes (\ s a -> s{_pNonKeyAttributes = a}) . mapping _List1;++instance FromJSON Projection where+ parseJSON+ = withObject "Projection"+ (\ x ->+ Projection' <$>+ (x .:? "ProjectionType") <*>+ (x .:? "NonKeyAttributes"))++instance ToJSON Projection where+ toJSON Projection'{..}+ = object+ ["ProjectionType" .= _pProjectionType,+ "NonKeyAttributes" .= _pNonKeyAttributes]++-- | Represents the provisioned throughput settings for a specified table or+-- index. The settings can be modified using the /UpdateTable/ operation.+--+-- For current minimum and maximum provisioned throughput values, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html Limits>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- /See:/ 'provisionedThroughput' smart constructor.+data ProvisionedThroughput = ProvisionedThroughput'+ { _ptReadCapacityUnits :: !Nat+ , _ptWriteCapacityUnits :: !Nat+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ProvisionedThroughput' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ptReadCapacityUnits'+--+-- * 'ptWriteCapacityUnits'+provisionedThroughput+ :: Natural -- ^ 'ptReadCapacityUnits'+ -> Natural -- ^ 'ptWriteCapacityUnits'+ -> ProvisionedThroughput+provisionedThroughput pReadCapacityUnits_ pWriteCapacityUnits_ =+ ProvisionedThroughput'+ { _ptReadCapacityUnits = _Nat # pReadCapacityUnits_+ , _ptWriteCapacityUnits = _Nat # pWriteCapacityUnits_+ }++-- | The maximum number of strongly consistent reads consumed per second+-- before DynamoDB returns a /ThrottlingException/. For more information,+-- see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput Specifying Read and Write Requirements>+-- in the /Amazon DynamoDB Developer Guide/.+ptReadCapacityUnits :: Lens' ProvisionedThroughput Natural+ptReadCapacityUnits = lens _ptReadCapacityUnits (\ s a -> s{_ptReadCapacityUnits = a}) . _Nat;++-- | The maximum number of writes consumed per second before DynamoDB returns+-- a /ThrottlingException/. For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#ProvisionedThroughput Specifying Read and Write Requirements>+-- in the /Amazon DynamoDB Developer Guide/.+ptWriteCapacityUnits :: Lens' ProvisionedThroughput Natural+ptWriteCapacityUnits = lens _ptWriteCapacityUnits (\ s a -> s{_ptWriteCapacityUnits = a}) . _Nat;++instance ToJSON ProvisionedThroughput where+ toJSON ProvisionedThroughput'{..}+ = object+ ["ReadCapacityUnits" .= _ptReadCapacityUnits,+ "WriteCapacityUnits" .= _ptWriteCapacityUnits]++-- | Represents the provisioned throughput settings for the table, consisting+-- of read and write capacity units, along with data about increases and+-- decreases.+--+-- /See:/ 'provisionedThroughputDescription' smart constructor.+data ProvisionedThroughputDescription = ProvisionedThroughputDescription'+ { _ptdReadCapacityUnits :: !(Maybe Nat)+ , _ptdLastDecreaseDateTime :: !(Maybe POSIX)+ , _ptdWriteCapacityUnits :: !(Maybe Nat)+ , _ptdNumberOfDecreasesToday :: !(Maybe Nat)+ , _ptdLastIncreaseDateTime :: !(Maybe POSIX)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'ProvisionedThroughputDescription' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ptdReadCapacityUnits'+--+-- * 'ptdLastDecreaseDateTime'+--+-- * 'ptdWriteCapacityUnits'+--+-- * 'ptdNumberOfDecreasesToday'+--+-- * 'ptdLastIncreaseDateTime'+provisionedThroughputDescription+ :: ProvisionedThroughputDescription+provisionedThroughputDescription =+ ProvisionedThroughputDescription'+ { _ptdReadCapacityUnits = Nothing+ , _ptdLastDecreaseDateTime = Nothing+ , _ptdWriteCapacityUnits = Nothing+ , _ptdNumberOfDecreasesToday = Nothing+ , _ptdLastIncreaseDateTime = Nothing+ }++-- | The maximum number of strongly consistent reads consumed per second+-- before DynamoDB returns a /ThrottlingException/. Eventually consistent+-- reads require less effort than strongly consistent reads, so a setting+-- of 50 /ReadCapacityUnits/ per second provides 100 eventually consistent+-- /ReadCapacityUnits/ per second.+ptdReadCapacityUnits :: Lens' ProvisionedThroughputDescription (Maybe Natural)+ptdReadCapacityUnits = lens _ptdReadCapacityUnits (\ s a -> s{_ptdReadCapacityUnits = a}) . mapping _Nat;++-- | The date and time of the last provisioned throughput decrease for this+-- table.+ptdLastDecreaseDateTime :: Lens' ProvisionedThroughputDescription (Maybe UTCTime)+ptdLastDecreaseDateTime = lens _ptdLastDecreaseDateTime (\ s a -> s{_ptdLastDecreaseDateTime = a}) . mapping _Time;++-- | The maximum number of writes consumed per second before DynamoDB returns+-- a /ThrottlingException/.+ptdWriteCapacityUnits :: Lens' ProvisionedThroughputDescription (Maybe Natural)+ptdWriteCapacityUnits = lens _ptdWriteCapacityUnits (\ s a -> s{_ptdWriteCapacityUnits = a}) . mapping _Nat;++-- | The number of provisioned throughput decreases for this table during+-- this UTC calendar day. For current maximums on provisioned throughput+-- decreases, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html Limits>+-- in the /Amazon DynamoDB Developer Guide/.+ptdNumberOfDecreasesToday :: Lens' ProvisionedThroughputDescription (Maybe Natural)+ptdNumberOfDecreasesToday = lens _ptdNumberOfDecreasesToday (\ s a -> s{_ptdNumberOfDecreasesToday = a}) . mapping _Nat;++-- | The date and time of the last provisioned throughput increase for this+-- table.+ptdLastIncreaseDateTime :: Lens' ProvisionedThroughputDescription (Maybe UTCTime)+ptdLastIncreaseDateTime = lens _ptdLastIncreaseDateTime (\ s a -> s{_ptdLastIncreaseDateTime = a}) . mapping _Time;++instance FromJSON ProvisionedThroughputDescription+ where+ parseJSON+ = withObject "ProvisionedThroughputDescription"+ (\ x ->+ ProvisionedThroughputDescription' <$>+ (x .:? "ReadCapacityUnits") <*>+ (x .:? "LastDecreaseDateTime")+ <*> (x .:? "WriteCapacityUnits")+ <*> (x .:? "NumberOfDecreasesToday")+ <*> (x .:? "LastIncreaseDateTime"))++-- | Represents a request to perform a /PutItem/ operation on an item.+--+-- /See:/ 'putRequest' smart constructor.+newtype PutRequest = PutRequest'+ { _prItem :: Map Text AttributeValue+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'PutRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'prItem'+putRequest+ :: PutRequest+putRequest =+ PutRequest'+ { _prItem = mempty+ }++-- | A map of attribute name to attribute values, representing the primary+-- key of an item to be processed by /PutItem/. All of the table\'s primary+-- key attributes must be specified, and their data types must match those+-- of the table\'s key schema. If any attributes are present in the item+-- which are part of an index key schema for the table, their types must+-- match the index key schema.+prItem :: Lens' PutRequest (HashMap Text AttributeValue)+prItem = lens _prItem (\ s a -> s{_prItem = a}) . _Map;++instance FromJSON PutRequest where+ parseJSON+ = withObject "PutRequest"+ (\ x -> PutRequest' <$> (x .:? "Item" .!= mempty))++instance ToJSON PutRequest where+ toJSON PutRequest'{..} = object ["Item" .= _prItem]++-- | Represents the DynamoDB Streams configuration for a table in DynamoDB.+--+-- /See:/ 'streamSpecification' smart constructor.+data StreamSpecification = StreamSpecification'+ { _ssStreamEnabled :: !(Maybe Bool)+ , _ssStreamViewType :: !(Maybe StreamViewType)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'StreamSpecification' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ssStreamEnabled'+--+-- * 'ssStreamViewType'+streamSpecification+ :: StreamSpecification+streamSpecification =+ StreamSpecification'+ { _ssStreamEnabled = Nothing+ , _ssStreamViewType = Nothing+ }++-- | Indicates whether DynamoDB Streams is enabled (true) or disabled (false)+-- on the table.+ssStreamEnabled :: Lens' StreamSpecification (Maybe Bool)+ssStreamEnabled = lens _ssStreamEnabled (\ s a -> s{_ssStreamEnabled = a});++-- | The DynamoDB Streams settings for the table. These settings consist of:+--+-- - /StreamEnabled/ - Indicates whether DynamoDB Streams is enabled+-- (true) or disabled (false) on the table.+--+-- - /StreamViewType/ - When an item in the table is modified,+-- /StreamViewType/ determines what information is written to the+-- stream for this table. Valid values for /StreamViewType/ are:+--+-- - /KEYS_ONLY/ - Only the key attributes of the modified item are+-- written to the stream.+--+-- - /NEW_IMAGE/ - The entire item, as it appears after it was+-- modified, is written to the stream.+--+-- - /OLD_IMAGE/ - The entire item, as it appeared before it was+-- modified, is written to the stream.+--+-- - /NEW_AND_OLD_IMAGES/ - Both the new and the old item images of+-- the item are written to the stream.+--+ssStreamViewType :: Lens' StreamSpecification (Maybe StreamViewType)+ssStreamViewType = lens _ssStreamViewType (\ s a -> s{_ssStreamViewType = a});++instance FromJSON StreamSpecification where+ parseJSON+ = withObject "StreamSpecification"+ (\ x ->+ StreamSpecification' <$>+ (x .:? "StreamEnabled") <*> (x .:? "StreamViewType"))++instance ToJSON StreamSpecification where+ toJSON StreamSpecification'{..}+ = object+ ["StreamEnabled" .= _ssStreamEnabled,+ "StreamViewType" .= _ssStreamViewType]++-- | Represents the properties of a table.+--+-- /See:/ 'tableDescription' smart constructor.+data TableDescription = TableDescription'+ { _tdProvisionedThroughput :: !(Maybe ProvisionedThroughputDescription)+ , _tdAttributeDefinitions :: !(Maybe [AttributeDefinition])+ , _tdLatestStreamARN :: !(Maybe Text)+ , _tdTableSizeBytes :: !(Maybe Integer)+ , _tdTableStatus :: !(Maybe TableStatus)+ , _tdTableARN :: !(Maybe Text)+ , _tdKeySchema :: !(Maybe (List1 KeySchemaElement))+ , _tdLatestStreamLabel :: !(Maybe Text)+ , _tdGlobalSecondaryIndexes :: !(Maybe [GlobalSecondaryIndexDescription])+ , _tdLocalSecondaryIndexes :: !(Maybe [LocalSecondaryIndexDescription])+ , _tdCreationDateTime :: !(Maybe POSIX)+ , _tdItemCount :: !(Maybe Integer)+ , _tdTableName :: !(Maybe Text)+ , _tdStreamSpecification :: !(Maybe StreamSpecification)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'TableDescription' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'tdProvisionedThroughput'+--+-- * 'tdAttributeDefinitions'+--+-- * 'tdLatestStreamARN'+--+-- * 'tdTableSizeBytes'+--+-- * 'tdTableStatus'+--+-- * 'tdTableARN'+--+-- * 'tdKeySchema'+--+-- * 'tdLatestStreamLabel'+--+-- * 'tdGlobalSecondaryIndexes'+--+-- * 'tdLocalSecondaryIndexes'+--+-- * 'tdCreationDateTime'+--+-- * 'tdItemCount'+--+-- * 'tdTableName'+--+-- * 'tdStreamSpecification'+tableDescription+ :: TableDescription+tableDescription =+ TableDescription'+ { _tdProvisionedThroughput = Nothing+ , _tdAttributeDefinitions = Nothing+ , _tdLatestStreamARN = Nothing+ , _tdTableSizeBytes = Nothing+ , _tdTableStatus = Nothing+ , _tdTableARN = Nothing+ , _tdKeySchema = Nothing+ , _tdLatestStreamLabel = Nothing+ , _tdGlobalSecondaryIndexes = Nothing+ , _tdLocalSecondaryIndexes = Nothing+ , _tdCreationDateTime = Nothing+ , _tdItemCount = Nothing+ , _tdTableName = Nothing+ , _tdStreamSpecification = Nothing+ }++-- | The provisioned throughput settings for the table, consisting of read+-- and write capacity units, along with data about increases and decreases.+tdProvisionedThroughput :: Lens' TableDescription (Maybe ProvisionedThroughputDescription)+tdProvisionedThroughput = lens _tdProvisionedThroughput (\ s a -> s{_tdProvisionedThroughput = a});++-- | An array of /AttributeDefinition/ objects. Each of these objects+-- describes one attribute in the table and index key schema.+--+-- Each /AttributeDefinition/ object in this array is composed of:+--+-- - /AttributeName/ - The name of the attribute.+--+-- - /AttributeType/ - The data type for the attribute.+--+tdAttributeDefinitions :: Lens' TableDescription [AttributeDefinition]+tdAttributeDefinitions = lens _tdAttributeDefinitions (\ s a -> s{_tdAttributeDefinitions = a}) . _Default . _Coerce;++-- | The Amazon Resource Name (ARN) that uniquely identifies the latest+-- stream for this table.+tdLatestStreamARN :: Lens' TableDescription (Maybe Text)+tdLatestStreamARN = lens _tdLatestStreamARN (\ s a -> s{_tdLatestStreamARN = a});++-- | The total size of the specified table, in bytes. DynamoDB updates this+-- value approximately every six hours. Recent changes might not be+-- reflected in this value.+tdTableSizeBytes :: Lens' TableDescription (Maybe Integer)+tdTableSizeBytes = lens _tdTableSizeBytes (\ s a -> s{_tdTableSizeBytes = a});++-- | The current state of the table:+--+-- - /CREATING/ - The table is being created.+--+-- - /UPDATING/ - The table is being updated.+--+-- - /DELETING/ - The table is being deleted.+--+-- - /ACTIVE/ - The table is ready for use.+--+tdTableStatus :: Lens' TableDescription (Maybe TableStatus)+tdTableStatus = lens _tdTableStatus (\ s a -> s{_tdTableStatus = a});++-- | The Amazon Resource Name (ARN) that uniquely identifies the table.+tdTableARN :: Lens' TableDescription (Maybe Text)+tdTableARN = lens _tdTableARN (\ s a -> s{_tdTableARN = a});++-- | The primary key structure for the table. Each /KeySchemaElement/+-- consists of:+--+-- - /AttributeName/ - The name of the attribute.+--+-- - /KeyType/ - The key type for the attribute. Can be either 'HASH' or+-- 'RANGE'.+--+-- For more information about primary keys, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModelPrimaryKey Primary Key>+-- in the /Amazon DynamoDB Developer Guide/.+tdKeySchema :: Lens' TableDescription (Maybe (NonEmpty KeySchemaElement))+tdKeySchema = lens _tdKeySchema (\ s a -> s{_tdKeySchema = a}) . mapping _List1;++-- | A timestamp, in ISO 8601 format, for this stream.+--+-- Note that /LatestStreamLabel/ is not a unique identifier for the stream,+-- because it is possible that a stream from another table might have the+-- same timestamp. However, the combination of the following three elements+-- is guaranteed to be unique:+--+-- - the AWS customer ID.+--+-- - the table name.+--+-- - the /StreamLabel/.+--+tdLatestStreamLabel :: Lens' TableDescription (Maybe Text)+tdLatestStreamLabel = lens _tdLatestStreamLabel (\ s a -> s{_tdLatestStreamLabel = a});++-- | The global secondary indexes, if any, on the table. Each index is scoped+-- to a given hash key value. Each element is composed of:+--+-- - /Backfilling/ - If true, then the index is currently in the+-- backfilling phase. Backfilling occurs only when a new global+-- secondary index is added to the table; it is the process by which+-- DynamoDB populates the new index with data from the table. (This+-- attribute does not appear for indexes that were created during a+-- /CreateTable/ operation.)+--+-- - /IndexName/ - The name of the global secondary index.+--+-- - /IndexSizeBytes/ - The total size of the global secondary index, in+-- bytes. DynamoDB updates this value approximately every six hours.+-- Recent changes might not be reflected in this value.+--+-- - /IndexStatus/ - The current status of the global secondary index:+--+-- - /CREATING/ - The index is being created.+--+-- - /UPDATING/ - The index is being updated.+--+-- - /DELETING/ - The index is being deleted.+--+-- - /ACTIVE/ - The index is ready for use.+--+-- - /ItemCount/ - The number of items in the global secondary index.+-- DynamoDB updates this value approximately every six hours. Recent+-- changes might not be reflected in this value.+--+-- - /KeySchema/ - Specifies the complete index key schema. The attribute+-- names in the key schema must be between 1 and 255 characters+-- (inclusive). The key schema must begin with the same hash key+-- attribute as the table.+--+-- - /Projection/ - Specifies attributes that are copied (projected) from+-- the table into the index. These are in addition to the primary key+-- attributes and index key attributes, which are automatically+-- projected. Each attribute specification is composed of:+--+-- - /ProjectionType/ - One of the following:+--+-- - 'KEYS_ONLY' - Only the index and primary keys are projected+-- into the index.+--+-- - 'INCLUDE' - Only the specified table attributes are+-- projected into the index. The list of projected attributes+-- are in /NonKeyAttributes/.+--+-- - 'ALL' - All of the table attributes are projected into the+-- index.+--+-- - /NonKeyAttributes/ - A list of one or more non-key attribute+-- names that are projected into the secondary index. The total+-- count of attributes provided in /NonKeyAttributes/, summed+-- across all of the secondary indexes, must not exceed 20. If you+-- project the same attribute into two different indexes, this+-- counts as two distinct attributes when determining the total.+--+-- - /ProvisionedThroughput/ - The provisioned throughput settings for+-- the global secondary index, consisting of read and write capacity+-- units, along with data about increases and decreases.+--+-- If the table is in the 'DELETING' state, no information about indexes+-- will be returned.+tdGlobalSecondaryIndexes :: Lens' TableDescription [GlobalSecondaryIndexDescription]+tdGlobalSecondaryIndexes = lens _tdGlobalSecondaryIndexes (\ s a -> s{_tdGlobalSecondaryIndexes = a}) . _Default . _Coerce;++-- | Represents one or more local secondary indexes on the table. Each index+-- is scoped to a given hash key value. Tables with one or more local+-- secondary indexes are subject to an item collection size limit, where+-- the amount of data within a given item collection cannot exceed 10 GB.+-- Each element is composed of:+--+-- - /IndexName/ - The name of the local secondary index.+--+-- - /KeySchema/ - Specifies the complete index key schema. The attribute+-- names in the key schema must be between 1 and 255 characters+-- (inclusive). The key schema must begin with the same hash key+-- attribute as the table.+--+-- - /Projection/ - Specifies attributes that are copied (projected) from+-- the table into the index. These are in addition to the primary key+-- attributes and index key attributes, which are automatically+-- projected. Each attribute specification is composed of:+--+-- - /ProjectionType/ - One of the following:+--+-- - 'KEYS_ONLY' - Only the index and primary keys are projected+-- into the index.+--+-- - 'INCLUDE' - Only the specified table attributes are+-- projected into the index. The list of projected attributes+-- are in /NonKeyAttributes/.+--+-- - 'ALL' - All of the table attributes are projected into the+-- index.+--+-- - /NonKeyAttributes/ - A list of one or more non-key attribute+-- names that are projected into the secondary index. The total+-- count of attributes provided in /NonKeyAttributes/, summed+-- across all of the secondary indexes, must not exceed 20. If you+-- project the same attribute into two different indexes, this+-- counts as two distinct attributes when determining the total.+--+-- - /IndexSizeBytes/ - Represents the total size of the index, in bytes.+-- DynamoDB updates this value approximately every six hours. Recent+-- changes might not be reflected in this value.+--+-- - /ItemCount/ - Represents the number of items in the index. DynamoDB+-- updates this value approximately every six hours. Recent changes+-- might not be reflected in this value.+--+-- If the table is in the 'DELETING' state, no information about indexes+-- will be returned.+tdLocalSecondaryIndexes :: Lens' TableDescription [LocalSecondaryIndexDescription]+tdLocalSecondaryIndexes = lens _tdLocalSecondaryIndexes (\ s a -> s{_tdLocalSecondaryIndexes = a}) . _Default . _Coerce;++-- | The date and time when the table was created, in+-- <http://www.epochconverter.com/ UNIX epoch time> format.+tdCreationDateTime :: Lens' TableDescription (Maybe UTCTime)+tdCreationDateTime = lens _tdCreationDateTime (\ s a -> s{_tdCreationDateTime = a}) . mapping _Time;++-- | The number of items in the specified table. DynamoDB updates this value+-- approximately every six hours. Recent changes might not be reflected in+-- this value.+tdItemCount :: Lens' TableDescription (Maybe Integer)+tdItemCount = lens _tdItemCount (\ s a -> s{_tdItemCount = a});++-- | The name of the table.+tdTableName :: Lens' TableDescription (Maybe Text)+tdTableName = lens _tdTableName (\ s a -> s{_tdTableName = a});++-- | The current DynamoDB Streams configuration for the table.+tdStreamSpecification :: Lens' TableDescription (Maybe StreamSpecification)+tdStreamSpecification = lens _tdStreamSpecification (\ s a -> s{_tdStreamSpecification = a});++instance FromJSON TableDescription where+ parseJSON+ = withObject "TableDescription"+ (\ x ->+ TableDescription' <$>+ (x .:? "ProvisionedThroughput") <*>+ (x .:? "AttributeDefinitions" .!= mempty)+ <*> (x .:? "LatestStreamArn")+ <*> (x .:? "TableSizeBytes")+ <*> (x .:? "TableStatus")+ <*> (x .:? "TableArn")+ <*> (x .:? "KeySchema")+ <*> (x .:? "LatestStreamLabel")+ <*> (x .:? "GlobalSecondaryIndexes" .!= mempty)+ <*> (x .:? "LocalSecondaryIndexes" .!= mempty)+ <*> (x .:? "CreationDateTime")+ <*> (x .:? "ItemCount")+ <*> (x .:? "TableName")+ <*> (x .:? "StreamSpecification"))++-- | Represents the new provisioned throughput settings to be applied to a+-- global secondary index.+--+-- /See:/ 'updateGlobalSecondaryIndexAction' smart constructor.+data UpdateGlobalSecondaryIndexAction = UpdateGlobalSecondaryIndexAction'+ { _ugsiaIndexName :: !Text+ , _ugsiaProvisionedThroughput :: !ProvisionedThroughput+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateGlobalSecondaryIndexAction' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'ugsiaIndexName'+--+-- * 'ugsiaProvisionedThroughput'+updateGlobalSecondaryIndexAction+ :: Text -- ^ 'ugsiaIndexName'+ -> ProvisionedThroughput -- ^ 'ugsiaProvisionedThroughput'+ -> UpdateGlobalSecondaryIndexAction+updateGlobalSecondaryIndexAction pIndexName_ pProvisionedThroughput_ =+ UpdateGlobalSecondaryIndexAction'+ { _ugsiaIndexName = pIndexName_+ , _ugsiaProvisionedThroughput = pProvisionedThroughput_+ }++-- | The name of the global secondary index to be updated.+ugsiaIndexName :: Lens' UpdateGlobalSecondaryIndexAction Text+ugsiaIndexName = lens _ugsiaIndexName (\ s a -> s{_ugsiaIndexName = a});++-- | Undocumented member.+ugsiaProvisionedThroughput :: Lens' UpdateGlobalSecondaryIndexAction ProvisionedThroughput+ugsiaProvisionedThroughput = lens _ugsiaProvisionedThroughput (\ s a -> s{_ugsiaProvisionedThroughput = a});++instance ToJSON UpdateGlobalSecondaryIndexAction+ where+ toJSON UpdateGlobalSecondaryIndexAction'{..}+ = object+ ["IndexName" .= _ugsiaIndexName,+ "ProvisionedThroughput" .=+ _ugsiaProvisionedThroughput]++-- | Represents an operation to perform - either /DeleteItem/ or /PutItem/.+-- You can only request one of these operations, not both, in a single+-- /WriteRequest/. If you do need to perform both of these operations, you+-- will need to provide two separate /WriteRequest/ objects.+--+-- /See:/ 'writeRequest' smart constructor.+data WriteRequest = WriteRequest'+ { _wrPutRequest :: !(Maybe PutRequest)+ , _wrDeleteRequest :: !(Maybe DeleteRequest)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'WriteRequest' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'wrPutRequest'+--+-- * 'wrDeleteRequest'+writeRequest+ :: WriteRequest+writeRequest =+ WriteRequest'+ { _wrPutRequest = Nothing+ , _wrDeleteRequest = Nothing+ }++-- | A request to perform a /PutItem/ operation.+wrPutRequest :: Lens' WriteRequest (Maybe PutRequest)+wrPutRequest = lens _wrPutRequest (\ s a -> s{_wrPutRequest = a});++-- | A request to perform a /DeleteItem/ operation.+wrDeleteRequest :: Lens' WriteRequest (Maybe DeleteRequest)+wrDeleteRequest = lens _wrDeleteRequest (\ s a -> s{_wrDeleteRequest = a});++instance FromJSON WriteRequest where+ parseJSON+ = withObject "WriteRequest"+ (\ x ->+ WriteRequest' <$>+ (x .:? "PutRequest") <*> (x .:? "DeleteRequest"))++instance ToJSON WriteRequest where+ toJSON WriteRequest'{..}+ = object+ ["PutRequest" .= _wrPutRequest,+ "DeleteRequest" .= _wrDeleteRequest]
+ gen/Network/AWS/DynamoDB/Types/Sum.hs view
@@ -0,0 +1,451 @@+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE LambdaCase #-}+{-# LANGUAGE OverloadedStrings #-}++{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Network.AWS.DynamoDB.Types.Sum+-- 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)+--+module Network.AWS.DynamoDB.Types.Sum where++import Network.AWS.Prelude++data AttributeAction+ = Add+ | Delete+ | Put+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText AttributeAction where+ parser = takeLowerText >>= \case+ "add" -> pure Add+ "delete" -> pure Delete+ "put" -> pure Put+ e -> fromTextError $ "Failure parsing AttributeAction from value: '" <> e+ <> "'. Accepted values: add, delete, put"++instance ToText AttributeAction where+ toText = \case+ Add -> "add"+ Delete -> "delete"+ Put -> "put"++instance Hashable AttributeAction+instance ToByteString AttributeAction+instance ToQuery AttributeAction+instance ToHeader AttributeAction++instance ToJSON AttributeAction where+ toJSON = toJSONText++data ComparisonOperator+ = BeginsWith+ | Between+ | Contains+ | EQ'+ | GE+ | GT'+ | IN+ | LE+ | LT'+ | NE+ | NotContains+ | NotNull+ | Null+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText ComparisonOperator where+ parser = takeLowerText >>= \case+ "begins_with" -> pure BeginsWith+ "between" -> pure Between+ "contains" -> pure Contains+ "eq" -> pure EQ'+ "ge" -> pure GE+ "gt" -> pure GT'+ "in" -> pure IN+ "le" -> pure LE+ "lt" -> pure LT'+ "ne" -> pure NE+ "not_contains" -> pure NotContains+ "not_null" -> pure NotNull+ "null" -> pure Null+ e -> fromTextError $ "Failure parsing ComparisonOperator from value: '" <> e+ <> "'. Accepted values: begins_with, between, contains, eq, ge, gt, in, le, lt, ne, not_contains, not_null, null"++instance ToText ComparisonOperator where+ toText = \case+ BeginsWith -> "begins_with"+ Between -> "between"+ Contains -> "contains"+ EQ' -> "eq"+ GE -> "ge"+ GT' -> "gt"+ IN -> "in"+ LE -> "le"+ LT' -> "lt"+ NE -> "ne"+ NotContains -> "not_contains"+ NotNull -> "not_null"+ Null -> "null"++instance Hashable ComparisonOperator+instance ToByteString ComparisonOperator+instance ToQuery ComparisonOperator+instance ToHeader ComparisonOperator++instance ToJSON ComparisonOperator where+ toJSON = toJSONText++data ConditionalOperator+ = And+ | OR+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText ConditionalOperator where+ parser = takeLowerText >>= \case+ "and" -> pure And+ "or" -> pure OR+ e -> fromTextError $ "Failure parsing ConditionalOperator from value: '" <> e+ <> "'. Accepted values: and, or"++instance ToText ConditionalOperator where+ toText = \case+ And -> "and"+ OR -> "or"++instance Hashable ConditionalOperator+instance ToByteString ConditionalOperator+instance ToQuery ConditionalOperator+instance ToHeader ConditionalOperator++instance ToJSON ConditionalOperator where+ toJSON = toJSONText++data IndexStatus+ = ISActive+ | ISCreating+ | ISDeleting+ | ISUpdating+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText IndexStatus where+ parser = takeLowerText >>= \case+ "active" -> pure ISActive+ "creating" -> pure ISCreating+ "deleting" -> pure ISDeleting+ "updating" -> pure ISUpdating+ e -> fromTextError $ "Failure parsing IndexStatus from value: '" <> e+ <> "'. Accepted values: active, creating, deleting, updating"++instance ToText IndexStatus where+ toText = \case+ ISActive -> "active"+ ISCreating -> "creating"+ ISDeleting -> "deleting"+ ISUpdating -> "updating"++instance Hashable IndexStatus+instance ToByteString IndexStatus+instance ToQuery IndexStatus+instance ToHeader IndexStatus++instance FromJSON IndexStatus where+ parseJSON = parseJSONText "IndexStatus"++data KeyType+ = Hash+ | Range+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText KeyType where+ parser = takeLowerText >>= \case+ "hash" -> pure Hash+ "range" -> pure Range+ e -> fromTextError $ "Failure parsing KeyType from value: '" <> e+ <> "'. Accepted values: hash, range"++instance ToText KeyType where+ toText = \case+ Hash -> "hash"+ Range -> "range"++instance Hashable KeyType+instance ToByteString KeyType+instance ToQuery KeyType+instance ToHeader KeyType++instance ToJSON KeyType where+ toJSON = toJSONText++instance FromJSON KeyType where+ parseJSON = parseJSONText "KeyType"++data ProjectionType+ = All+ | Include+ | KeysOnly+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText ProjectionType where+ parser = takeLowerText >>= \case+ "all" -> pure All+ "include" -> pure Include+ "keys_only" -> pure KeysOnly+ e -> fromTextError $ "Failure parsing ProjectionType from value: '" <> e+ <> "'. Accepted values: all, include, keys_only"++instance ToText ProjectionType where+ toText = \case+ All -> "all"+ Include -> "include"+ KeysOnly -> "keys_only"++instance Hashable ProjectionType+instance ToByteString ProjectionType+instance ToQuery ProjectionType+instance ToHeader ProjectionType++instance ToJSON ProjectionType where+ toJSON = toJSONText++instance FromJSON ProjectionType where+ parseJSON = parseJSONText "ProjectionType"++-- | Determines the level of detail about provisioned throughput consumption+-- that is returned in the response:+--+-- - /INDEXES/ - The response includes the aggregate /ConsumedCapacity/+-- for the operation, together with /ConsumedCapacity/ for each table+-- and secondary index that was accessed.+--+-- Note that some operations, such as /GetItem/ and /BatchGetItem/, do+-- not access any indexes at all. In these cases, specifying /INDEXES/+-- will only return /ConsumedCapacity/ information for table(s).+--+-- - /TOTAL/ - The response includes only the aggregate+-- /ConsumedCapacity/ for the operation.+--+-- - /NONE/ - No /ConsumedCapacity/ details are included in the response.+--+data ReturnConsumedCapacity+ = RCCIndexes+ | RCCNone+ | RCCTotal+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText ReturnConsumedCapacity where+ parser = takeLowerText >>= \case+ "indexes" -> pure RCCIndexes+ "none" -> pure RCCNone+ "total" -> pure RCCTotal+ e -> fromTextError $ "Failure parsing ReturnConsumedCapacity from value: '" <> e+ <> "'. Accepted values: indexes, none, total"++instance ToText ReturnConsumedCapacity where+ toText = \case+ RCCIndexes -> "indexes"+ RCCNone -> "none"+ RCCTotal -> "total"++instance Hashable ReturnConsumedCapacity+instance ToByteString ReturnConsumedCapacity+instance ToQuery ReturnConsumedCapacity+instance ToHeader ReturnConsumedCapacity++instance ToJSON ReturnConsumedCapacity where+ toJSON = toJSONText++data ReturnItemCollectionMetrics+ = RICMNone+ | RICMSize+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText ReturnItemCollectionMetrics where+ parser = takeLowerText >>= \case+ "none" -> pure RICMNone+ "size" -> pure RICMSize+ e -> fromTextError $ "Failure parsing ReturnItemCollectionMetrics from value: '" <> e+ <> "'. Accepted values: none, size"++instance ToText ReturnItemCollectionMetrics where+ toText = \case+ RICMNone -> "none"+ RICMSize -> "size"++instance Hashable ReturnItemCollectionMetrics+instance ToByteString ReturnItemCollectionMetrics+instance ToQuery ReturnItemCollectionMetrics+instance ToHeader ReturnItemCollectionMetrics++instance ToJSON ReturnItemCollectionMetrics where+ toJSON = toJSONText++data ReturnValue+ = AllNew+ | AllOld+ | None+ | UpdatedNew+ | UpdatedOld+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText ReturnValue where+ parser = takeLowerText >>= \case+ "all_new" -> pure AllNew+ "all_old" -> pure AllOld+ "none" -> pure None+ "updated_new" -> pure UpdatedNew+ "updated_old" -> pure UpdatedOld+ e -> fromTextError $ "Failure parsing ReturnValue from value: '" <> e+ <> "'. Accepted values: all_new, all_old, none, updated_new, updated_old"++instance ToText ReturnValue where+ toText = \case+ AllNew -> "all_new"+ AllOld -> "all_old"+ None -> "none"+ UpdatedNew -> "updated_new"+ UpdatedOld -> "updated_old"++instance Hashable ReturnValue+instance ToByteString ReturnValue+instance ToQuery ReturnValue+instance ToHeader ReturnValue++instance ToJSON ReturnValue where+ toJSON = toJSONText++data ScalarAttributeType+ = B+ | N+ | S+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText ScalarAttributeType where+ parser = takeLowerText >>= \case+ "b" -> pure B+ "n" -> pure N+ "s" -> pure S+ e -> fromTextError $ "Failure parsing ScalarAttributeType from value: '" <> e+ <> "'. Accepted values: b, n, s"++instance ToText ScalarAttributeType where+ toText = \case+ B -> "b"+ N -> "n"+ S -> "s"++instance Hashable ScalarAttributeType+instance ToByteString ScalarAttributeType+instance ToQuery ScalarAttributeType+instance ToHeader ScalarAttributeType++instance ToJSON ScalarAttributeType where+ toJSON = toJSONText++instance FromJSON ScalarAttributeType where+ parseJSON = parseJSONText "ScalarAttributeType"++data Select+ = AllAttributes+ | AllProjectedAttributes+ | Count+ | SpecificAttributes+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText Select where+ parser = takeLowerText >>= \case+ "all_attributes" -> pure AllAttributes+ "all_projected_attributes" -> pure AllProjectedAttributes+ "count" -> pure Count+ "specific_attributes" -> pure SpecificAttributes+ e -> fromTextError $ "Failure parsing Select from value: '" <> e+ <> "'. Accepted values: all_attributes, all_projected_attributes, count, specific_attributes"++instance ToText Select where+ toText = \case+ AllAttributes -> "all_attributes"+ AllProjectedAttributes -> "all_projected_attributes"+ Count -> "count"+ SpecificAttributes -> "specific_attributes"++instance Hashable Select+instance ToByteString Select+instance ToQuery Select+instance ToHeader Select++instance ToJSON Select where+ toJSON = toJSONText++data StreamViewType+ = SVTKeysOnly+ | SVTNewAndOldImages+ | SVTNewImage+ | SVTOldImage+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText StreamViewType where+ parser = takeLowerText >>= \case+ "keys_only" -> pure SVTKeysOnly+ "new_and_old_images" -> pure SVTNewAndOldImages+ "new_image" -> pure SVTNewImage+ "old_image" -> pure SVTOldImage+ e -> fromTextError $ "Failure parsing StreamViewType from value: '" <> e+ <> "'. Accepted values: keys_only, new_and_old_images, new_image, old_image"++instance ToText StreamViewType where+ toText = \case+ SVTKeysOnly -> "keys_only"+ SVTNewAndOldImages -> "new_and_old_images"+ SVTNewImage -> "new_image"+ SVTOldImage -> "old_image"++instance Hashable StreamViewType+instance ToByteString StreamViewType+instance ToQuery StreamViewType+instance ToHeader StreamViewType++instance ToJSON StreamViewType where+ toJSON = toJSONText++instance FromJSON StreamViewType where+ parseJSON = parseJSONText "StreamViewType"++data TableStatus+ = Active+ | Creating+ | Deleting+ | Updating+ deriving (Eq,Ord,Read,Show,Enum,Data,Typeable,Generic)++instance FromText TableStatus where+ parser = takeLowerText >>= \case+ "active" -> pure Active+ "creating" -> pure Creating+ "deleting" -> pure Deleting+ "updating" -> pure Updating+ e -> fromTextError $ "Failure parsing TableStatus from value: '" <> e+ <> "'. Accepted values: active, creating, deleting, updating"++instance ToText TableStatus where+ toText = \case+ Active -> "active"+ Creating -> "creating"+ Deleting -> "deleting"+ Updating -> "updating"++instance Hashable TableStatus+instance ToByteString TableStatus+instance ToQuery TableStatus+instance ToHeader TableStatus++instance FromJSON TableStatus where+ parseJSON = parseJSONText "TableStatus"
gen/Network/AWS/DynamoDB/UpdateItem.hs view
@@ -1,709 +1,796 @@-{-# 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.DynamoDB.UpdateItem--- 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)------ Derived from AWS service descriptions, licensed under Apache 2.0.---- | Edits an existing item's attributes, or adds a new item to the table if it--- does not already exist. You can put, delete, or add attribute values. You can--- also perform a conditional update on an existing item (insert a new attribute--- name-value pair if it doesn't exist, or replace an existing name-value pair--- if it has certain expected attribute values). If conditions are specified and--- the item does not exist, then the operation fails and a new item is not--- created.------ You can also return the item's attribute values in the same /UpdateItem/--- operation using the /ReturnValues/ parameter.------ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html>-module Network.AWS.DynamoDB.UpdateItem- (- -- * Request- UpdateItem- -- ** Request constructor- , updateItem- -- ** Request lenses- , uiAttributeUpdates- , uiConditionExpression- , uiConditionalOperator- , uiExpected- , uiExpressionAttributeNames- , uiExpressionAttributeValues- , uiKey- , uiReturnConsumedCapacity- , uiReturnItemCollectionMetrics- , uiReturnValues- , uiTableName- , uiUpdateExpression-- -- * Response- , UpdateItemResponse- -- ** Response constructor- , updateItemResponse- -- ** Response lenses- , uirAttributes- , uirConsumedCapacity- , uirItemCollectionMetrics- ) where--import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts--data UpdateItem = UpdateItem- { _uiAttributeUpdates :: Map Text AttributeValueUpdate- , _uiConditionExpression :: Maybe Text- , _uiConditionalOperator :: Maybe ConditionalOperator- , _uiExpected :: Map Text ExpectedAttributeValue- , _uiExpressionAttributeNames :: Map Text Text- , _uiExpressionAttributeValues :: Map Text AttributeValue- , _uiKey :: Map Text AttributeValue- , _uiReturnConsumedCapacity :: Maybe ReturnConsumedCapacity- , _uiReturnItemCollectionMetrics :: Maybe ReturnItemCollectionMetrics- , _uiReturnValues :: Maybe ReturnValue- , _uiTableName :: Text- , _uiUpdateExpression :: Maybe Text- } deriving (Eq, Read, Show)---- | 'UpdateItem' constructor.------ The fields accessible through corresponding lenses are:------ * 'uiAttributeUpdates' @::@ 'HashMap' 'Text' 'AttributeValueUpdate'------ * 'uiConditionExpression' @::@ 'Maybe' 'Text'------ * 'uiConditionalOperator' @::@ 'Maybe' 'ConditionalOperator'------ * 'uiExpected' @::@ 'HashMap' 'Text' 'ExpectedAttributeValue'------ * 'uiExpressionAttributeNames' @::@ 'HashMap' 'Text' 'Text'------ * 'uiExpressionAttributeValues' @::@ 'HashMap' 'Text' 'AttributeValue'------ * 'uiKey' @::@ 'HashMap' 'Text' 'AttributeValue'------ * 'uiReturnConsumedCapacity' @::@ 'Maybe' 'ReturnConsumedCapacity'------ * 'uiReturnItemCollectionMetrics' @::@ 'Maybe' 'ReturnItemCollectionMetrics'------ * 'uiReturnValues' @::@ 'Maybe' 'ReturnValue'------ * 'uiTableName' @::@ 'Text'------ * 'uiUpdateExpression' @::@ 'Maybe' 'Text'----updateItem :: Text -- ^ 'uiTableName'- -> UpdateItem-updateItem p1 = UpdateItem- { _uiTableName = p1- , _uiKey = mempty- , _uiAttributeUpdates = mempty- , _uiExpected = mempty- , _uiConditionalOperator = Nothing- , _uiReturnValues = Nothing- , _uiReturnConsumedCapacity = Nothing- , _uiReturnItemCollectionMetrics = Nothing- , _uiUpdateExpression = Nothing- , _uiConditionExpression = Nothing- , _uiExpressionAttributeNames = mempty- , _uiExpressionAttributeValues = mempty- }---- | This is a legacy parameter, for backward compatibility. New applications--- should use /UpdateExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.------ This parameter can be used for modifying top-level attributes; however, it--- does not support individual list or map elements.------ The names of attributes to be modified, the action to perform on each, and--- the new value for each. If you are updating an attribute that is an index key--- attribute for any indexes on that table, the attribute type must match the--- index key type defined in the /AttributesDefinition/ of the table description.--- You can use /UpdateItem/ to update any nonkey attributes.------ Attribute values cannot be null. String and Binary type attributes must have--- lengths greater than zero. Set type attributes must not be empty. Requests--- with empty values will be rejected with a /ValidationException/ exception.------ Each /AttributeUpdates/ element consists of an attribute name to modify, along--- with the following:------ /Value/ - The new value, if applicable, for this attribute.------ /Action/ - A value that specifies how to perform the update. This action is--- only valid for an existing attribute whose data type is Number or is a set;--- do not use 'ADD' for other data types.------ If an item with the specified primary key is found in the table, the--- following values perform the following actions:------ 'PUT' - Adds the specified attribute to the item. If the attribute already--- exists, it is replaced by the new value.------ 'DELETE' - Removes the attribute and its value, if no value is specified for 'DELETE'. The data type of the specified value must match the existing value's--- data type.------ If a set of values is specified, then those values are subtracted from the--- old set. For example, if the attribute value was the set '[a,b,c]' and the 'DELETE' action specifies '[a,c]', then the final attribute value is '[b]'. Specifying an--- empty set is an error.------ 'ADD' - Adds the specified value to the item, if the attribute does not--- already exist. If the attribute does exist, then the behavior of 'ADD' depends--- on the data type of the attribute:------ If the existing attribute is a number, and if /Value/ is also a number, then /Value/ is mathematically added to the existing attribute. If /Value/ is a--- negative number, then it is subtracted from the existing attribute.------ If you use 'ADD' to increment or decrement a number value for an item that--- doesn't exist before the update, DynamoDB uses 0 as the initial value.------ Similarly, if you use 'ADD' for an existing item to increment or decrement an--- attribute value that doesn't exist before the update, DynamoDB uses '0' as the--- initial value. For example, suppose that the item you want to update doesn't--- have an attribute named /itemcount/, but you decide to 'ADD' the number '3' to this--- attribute anyway. DynamoDB will create the /itemcount/ attribute, set its--- initial value to '0', and finally add '3' to it. The result will be a new /itemcount/ attribute, with a value of '3'.------ If the existing data type is a set, and if /Value/ is also a set, then /Value/--- is appended to the existing set. For example, if the attribute value is the--- set '[1,2]', and the 'ADD' action specified '[3]', then the final attribute value--- is '[1,2,3]'. An error occurs if an 'ADD' action is specified for a set attribute--- and the attribute type specified does not match the existing set type.------ Both sets must have the same primitive data type. For example, if the--- existing data type is a set of strings, /Value/ must also be a set of strings.------ If no item with the specified key is found in the table, the following--- values perform the following actions:------ 'PUT' - Causes DynamoDB to create a new item with the specified primary key,--- and then adds the attribute.------ 'DELETE' - Nothing happens, because attributes cannot be deleted from a--- nonexistent item. The operation succeeds, but DynamoDB does not create a new--- item.------ 'ADD' - Causes DynamoDB to create an item with the supplied primary key and--- number (or set of numbers) for the attribute value. The only data types--- allowed are Number and Number Set.------ If you provide any attributes that are part of an index key, then the--- data types for those attributes must match those of the schema in the table's--- attribute definition.-uiAttributeUpdates :: Lens' UpdateItem (HashMap Text AttributeValueUpdate)-uiAttributeUpdates =- lens _uiAttributeUpdates (\s a -> s { _uiAttributeUpdates = a })- . _Map---- | A condition that must be satisfied in order for a conditional update to--- succeed.------ An expression can contain any of the following:------ Boolean functions: 'attribute_exists | attribute_not_exists | contains |begins_with'------ These function names are case-sensitive.------ Comparison operators: ' = | <> | < | > | <= | >= | BETWEEN | IN'------ Logical operators: 'AND | OR | NOT'------ For more information on condition expressions, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions>--- in the /Amazon DynamoDB Developer Guide/.------ /ConditionExpression/ replaces the legacy /ConditionalOperator/ and /Expected/--- parameters.----uiConditionExpression :: Lens' UpdateItem (Maybe Text)-uiConditionExpression =- lens _uiConditionExpression (\s a -> s { _uiConditionExpression = a })---- | This is a legacy parameter, for backward compatibility. New applications--- should use /ConditionExpression/ instead. Do not combine legacy parameters and--- expression parameters in a single API call; otherwise, DynamoDB will return a /ValidationException/ exception.------ A logical operator to apply to the conditions in the /Expected/ map:------ 'AND' - If all of the conditions evaluate to true, then the entire map--- evaluates to true.------ 'OR' - If at least one of the conditions evaluate to true, then the entire map--- evaluates to true.------ If you omit /ConditionalOperator/, then 'AND' is the default.------ The operation will succeed only if the entire map evaluates to true.------ This parameter does not support attributes of type List or Map.----uiConditionalOperator :: Lens' UpdateItem (Maybe ConditionalOperator)-uiConditionalOperator =- lens _uiConditionalOperator (\s a -> s { _uiConditionalOperator = a })---- | This is a legacy parameter, for backward compatibility. New applications--- should use / ConditionExpression / instead. Do not combine legacy parameters--- and expression parameters in a single API call; otherwise, DynamoDB will--- return a /ValidationException/ exception.------ A map of attribute/condition pairs. /Expected/ provides a conditional block--- for the /UpdateItem/ operation.------ Each element of /Expected/ consists of an attribute name, a comparison--- operator, and one or more values. DynamoDB compares the attribute with the--- value(s) you supplied, using the comparison operator. For each /Expected/--- element, the result of the evaluation is either true or false.------ If you specify more than one element in the /Expected/ map, then by default--- all of the conditions must evaluate to true. In other words, the conditions--- are ANDed together. (You can use the /ConditionalOperator/ parameter to OR the--- conditions instead. If you do this, then at least one of the conditions must--- evaluate to true, rather than all of them.)------ If the /Expected/ map evaluates to true, then the conditional operation--- succeeds; otherwise, it fails.------ /Expected/ contains the following:------ /AttributeValueList/ - One or more values to evaluate against the supplied--- attribute. The number of values in the list depends on the /ComparisonOperator/--- being used.------ For type Number, value comparisons are numeric.------ String value comparisons for greater than, equals, or less than are based on--- ASCII character code values. For example, 'a' is greater than 'A', and 'a' is--- greater than 'B'. For a list of code values, see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.------ For type Binary, DynamoDB treats each byte of the binary data as unsigned--- when it compares binary values.------ /ComparisonOperator/ - A comparator for evaluating attributes in the /AttributeValueList/. When performing the comparison, DynamoDB uses strongly consistent reads.------ The following comparison operators are available:------ 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS |BEGINS_WITH | IN | BETWEEN'------ The following are descriptions of each comparison operator.------ 'EQ' : Equal. 'EQ' is supported for all datatypes, including lists and maps.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, Binary, String Set, Number Set, or Binary Set. If an item--- contains an /AttributeValue/ element of a different type than the one provided--- in the request, the value does not match. For example, '{"S":"6"}' does not--- equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.------------ 'NE' : Not equal. 'NE' is supported for all datatypes, including lists and--- maps.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, Binary, String Set, Number Set, or Binary Set. If an item contains an /AttributeValue/ of a different type than the one provided in the request, the--- value does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not equal '{"NS":["6", "2", "1"]}'.------------ 'LE' : Less than or equal.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'LT' : Less than.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String,--- Number, or Binary (not a set type). If an item contains an /AttributeValue/--- element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'GE' : Greater than or equal.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'GT' : Greater than.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not equal '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'.------------ 'NOT_NULL' : The attribute exists. 'NOT_NULL' is supported for all datatypes,--- including lists and maps.------ This operator tests for the existence of an attribute, not its data type. If--- the data type of attribute "'a'" is null, and you evaluate it using 'NOT_NULL',--- the result is a Boolean /true/. This result is because the attribute "'a'"--- exists; its data type is not relevant to the 'NOT_NULL' comparison operator.------ 'NULL' : The attribute does not exist. 'NULL' is supported for all datatypes,--- including lists and maps.------ This operator tests for the nonexistence of an attribute, not its data type.--- If the data type of attribute "'a'" is null, and you evaluate it using 'NULL',--- the result is a Boolean /false/. This is because the attribute "'a'" exists; its--- data type is not relevant to the 'NULL' comparison operator.------ 'CONTAINS' : Checks for a subsequence, or value in a set.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If the target attribute of the--- comparison is of type String, then the operator checks for a substring match.--- If the target attribute of the comparison is of type Binary, then the--- operator looks for a subsequence of the target that matches the input. If the--- target attribute of the comparison is a set ("'SS'", "'NS'", or "'BS'"), then the--- operator evaluates to true if it finds an exact match with any member of the--- set.------ CONTAINS is supported for lists: When evaluating "'a CONTAINS b'", "'a'" can be--- a list; however, "'b'" cannot be a set, a map, or a list.------ 'NOT_CONTAINS' : Checks for absence of a subsequence, or absence of a value--- in a set.------ /AttributeValueList/ can contain only one /AttributeValue/ element of type--- String, Number, or Binary (not a set type). If the target attribute of the--- comparison is a String, then the operator checks for the absence of a--- substring match. If the target attribute of the comparison is Binary, then--- the operator checks for the absence of a subsequence of the target that--- matches the input. If the target attribute of the comparison is a set ("'SS'", "'NS'", or "'BS'"), then the operator evaluates to true if it /does not/ find an--- exact match with any member of the set.------ NOT_CONTAINS is supported for lists: When evaluating "'a NOT CONTAINS b'", "'a'"--- can be a list; however, "'b'" cannot be a set, a map, or a list.------ 'BEGINS_WITH' : Checks for a prefix.------ /AttributeValueList/ can contain only one /AttributeValue/ of type String or--- Binary (not a Number or a set type). The target attribute of the comparison--- must be of type String or Binary (not a Number or a set type).------------ 'IN' : Checks for matching elements within two sets.------ /AttributeValueList/ can contain one or more /AttributeValue/ elements of type--- String, Number, or Binary (not a set type). These attributes are compared--- against an existing set type attribute of an item. If any elements of the--- input set are present in the item attribute, the expression evaluates to true.------ 'BETWEEN' : Greater than or equal to the first value, and less than or equal--- to the second value.------ /AttributeValueList/ must contain two /AttributeValue/ elements of the same--- type, either String, Number, or Binary (not a set type). A target attribute--- matches if the target value is greater than, or equal to, the first element--- and less than, or equal to, the second element. If an item contains an /AttributeValue/ element of a different type than the one provided in the request, the value--- does not match. For example, '{"S":"6"}' does not compare to '{"N":"6"}'. Also, '{"N":"6"}' does not compare to '{"NS":["6", "2", "1"]}'------ For usage examples of /AttributeValueList/ and /ComparisonOperator/, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters> in the /Amazon DynamoDB Developer Guide/.------ For backward compatibility with previous DynamoDB releases, the following--- parameters can be used instead of /AttributeValueList/ and /ComparisonOperator/:------ /Value/ - A value for DynamoDB to compare with an attribute.------ /Exists/ - A Boolean value that causes DynamoDB to evaluate the value before--- attempting the conditional operation:------ If /Exists/ is 'true', DynamoDB will check to see if that attribute value--- already exists in the table. If it is found, then the condition evaluates to--- true; otherwise the condition evaluate to false.------ If /Exists/ is 'false', DynamoDB assumes that the attribute value does /not/--- exist in the table. If in fact the value does not exist, then the assumption--- is valid and the condition evaluates to true. If the value is found, despite--- the assumption that it does not exist, the condition evaluates to false.------ Note that the default value for /Exists/ is 'true'.------ The /Value/ and /Exists/ parameters are incompatible with /AttributeValueList/--- and /ComparisonOperator/. Note that if you use both sets of parameters at once,--- DynamoDB will return a /ValidationException/ exception.------ This parameter does not support attributes of type List or Map.----uiExpected :: Lens' UpdateItem (HashMap Text ExpectedAttributeValue)-uiExpected = lens _uiExpected (\s a -> s { _uiExpected = a }) . _Map---- | One or more substitution tokens for attribute names in an expression. The--- following are some use cases for using /ExpressionAttributeNames/:------ To access an attribute whose name conflicts with a DynamoDB reserved word.------ To create a placeholder for repeating occurrences of an attribute name in--- an expression.------ To prevent special characters in an attribute name from being--- misinterpreted in an expression.------ Use the # character in an expression to dereference an attribute name. For--- example, consider the following attribute name:------ 'Percentile'------ The name of this attribute conflicts with a reserved word, so it cannot be--- used directly in an expression. (For the complete list of reserved words, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words> in the /Amazon DynamoDB Developer Guide/). To work around this,--- you could specify the following for /ExpressionAttributeNames/:------ '{"#P":"Percentile"}'------ You could then use this substitution in an expression, as in this example:------ '#P = :val'------ Tokens that begin with the : character are /expression attribute values/,--- which are placeholders for the actual value at runtime.------ For more information on expression attribute names, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.-uiExpressionAttributeNames :: Lens' UpdateItem (HashMap Text Text)-uiExpressionAttributeNames =- lens _uiExpressionAttributeNames- (\s a -> s { _uiExpressionAttributeNames = a })- . _Map---- | One or more values that can be substituted in an expression.------ Use the : (colon) character in an expression to dereference an attribute--- value. For example, suppose that you wanted to check whether the value of the /ProductStatus/ attribute was one of the following:------ 'Available | Backordered | Discontinued'------ You would first need to specify /ExpressionAttributeValues/ as follows:------ '{ ":avail":{"S":"Available"}, ":back":{"S":"Backordered"},":disc":{"S":"Discontinued"} }'------ You could then use these values in an expression, such as this:------ 'ProductStatus IN (:avail, :back, :disc)'------ For more information on expression attribute values, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionPlaceholders.html Using Placeholdersfor Attribute Names and Values> in the /Amazon DynamoDB Developer Guide/.-uiExpressionAttributeValues :: Lens' UpdateItem (HashMap Text AttributeValue)-uiExpressionAttributeValues =- lens _uiExpressionAttributeValues- (\s a -> s { _uiExpressionAttributeValues = a })- . _Map---- | The primary key of the item to be updated. Each element consists of an--- attribute name and a value for that attribute.------ For the primary key, you must provide all of the attributes. For example,--- with a hash type primary key, you only need to provide the hash attribute.--- For a hash-and-range type primary key, you must provide both the hash--- attribute and the range attribute.-uiKey :: Lens' UpdateItem (HashMap Text AttributeValue)-uiKey = lens _uiKey (\s a -> s { _uiKey = a }) . _Map--uiReturnConsumedCapacity :: Lens' UpdateItem (Maybe ReturnConsumedCapacity)-uiReturnConsumedCapacity =- lens _uiReturnConsumedCapacity- (\s a -> s { _uiReturnConsumedCapacity = a })---- | A value that if set to 'SIZE', the response includes statistics about item--- collections, if any, that were modified during the operation are returned in--- the response. If set to 'NONE' (the default), no statistics are returned.-uiReturnItemCollectionMetrics :: Lens' UpdateItem (Maybe ReturnItemCollectionMetrics)-uiReturnItemCollectionMetrics =- lens _uiReturnItemCollectionMetrics- (\s a -> s { _uiReturnItemCollectionMetrics = a })---- | Use /ReturnValues/ if you want to get the item attributes as they appeared--- either before or after they were updated. For /UpdateItem/, the valid values--- are:------ 'NONE' - If /ReturnValues/ is not specified, or if its value is 'NONE', then--- nothing is returned. (This setting is the default for /ReturnValues/.)------ 'ALL_OLD' - If /UpdateItem/ overwrote an attribute name-value pair, then the--- content of the old item is returned.------ 'UPDATED_OLD' - The old versions of only the updated attributes are returned.------ 'ALL_NEW' - All of the attributes of the new version of the item are--- returned.------ 'UPDATED_NEW' - The new versions of only the updated attributes are returned.-------uiReturnValues :: Lens' UpdateItem (Maybe ReturnValue)-uiReturnValues = lens _uiReturnValues (\s a -> s { _uiReturnValues = a })---- | The name of the table containing the item to update.-uiTableName :: Lens' UpdateItem Text-uiTableName = lens _uiTableName (\s a -> s { _uiTableName = a })---- | An expression that defines one or more attributes to be updated, the action--- to be performed on them, and new value(s) for them.------ The following action values are available for /UpdateExpression/.------ 'SET' - Adds one or more attributes and values to an item. If any of these--- attribute already exist, they are replaced by the new values. You can also--- use 'SET' to add or subtract from an attribute that is of type Number.------ 'SET' supports the following functions:------ 'if_not_exists (path, operand)' - if the item does not contain an attribute--- at the specified path, then 'if_not_exists' evaluates to operand; otherwise, it--- evaluates to path. You can use this function to avoid overwriting an--- attribute that may already be present in the item.------ 'list_append (operand, operand)' - evaluates to a list with a new element--- added to it. You can append the new element to the start or the end of the--- list by reversing the order of the operands.------ These function names are case-sensitive.------ 'REMOVE' - Removes one or more attributes from an item.------ 'ADD' - Adds the specified value to the item, if the attribute does not--- already exist. If the attribute does exist, then the behavior of 'ADD' depends--- on the data type of the attribute:------ If the existing attribute is a number, and if /Value/ is also a number, then /Value/ is mathematically added to the existing attribute. If /Value/ is a--- negative number, then it is subtracted from the existing attribute.------ If you use 'ADD' to increment or decrement a number value for an item that--- doesn't exist before the update, DynamoDB uses '0' as the initial value.------ Similarly, if you use 'ADD' for an existing item to increment or decrement an--- attribute value that doesn't exist before the update, DynamoDB uses '0' as the--- initial value. For example, suppose that the item you want to update doesn't--- have an attribute named /itemcount/, but you decide to 'ADD' the number '3' to this--- attribute anyway. DynamoDB will create the /itemcount/ attribute, set its--- initial value to '0', and finally add '3' to it. The result will be a new /itemcount/ attribute in the item, with a value of '3'.------ If the existing data type is a set and if /Value/ is also a set, then /Value/--- is added to the existing set. For example, if the attribute value is the set '[1,2]', and the 'ADD' action specified '[3]', then the final attribute value is '[1,2,3]'. An error occurs if an--- 'ADD' action is specified for a set attribute and the attribute type specified--- does not match the existing set type.------ Both sets must have the same primitive data type. For example, if the--- existing data type is a set of strings, the /Value/ must also be a set of--- strings.------ The 'ADD' action only supports Number and set data types. In addition, 'ADD'--- can only be used on top-level attributes, not nested attributes.------ 'DELETE' - Deletes an element from a set.------ If a set of values is specified, then those values are subtracted from the--- old set. For example, if the attribute value was the set '[a,b,c]' and the 'DELETE' action specifies '[a,c]', then the final attribute value is '[b]'. Specifying an--- empty set is an error.------ The 'DELETE' action only supports Number and set data types. In addition, 'DELETE' can only be used on top-level attributes, not nested attributes.------ You can have many actions in a single expression, such as the following: 'SET a=:value1, b=:value2 DELETE :value3, :value4, :value5'------ For more information on update expressions, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html Modifying Items andAttributes> in the /Amazon DynamoDB Developer Guide/.------ /UpdateExpression/ replaces the legacy /AttributeUpdates/ parameter.----uiUpdateExpression :: Lens' UpdateItem (Maybe Text)-uiUpdateExpression =- lens _uiUpdateExpression (\s a -> s { _uiUpdateExpression = a })--data UpdateItemResponse = UpdateItemResponse- { _uirAttributes :: Map Text AttributeValue- , _uirConsumedCapacity :: Maybe ConsumedCapacity- , _uirItemCollectionMetrics :: Maybe ItemCollectionMetrics- } deriving (Eq, Read, Show)---- | 'UpdateItemResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'uirAttributes' @::@ 'HashMap' 'Text' 'AttributeValue'------ * 'uirConsumedCapacity' @::@ 'Maybe' 'ConsumedCapacity'------ * 'uirItemCollectionMetrics' @::@ 'Maybe' 'ItemCollectionMetrics'----updateItemResponse :: UpdateItemResponse-updateItemResponse = UpdateItemResponse- { _uirAttributes = mempty- , _uirConsumedCapacity = Nothing- , _uirItemCollectionMetrics = Nothing- }---- | A map of attribute values as they appeared before the /UpdateItem/ operation.--- This map only appears if /ReturnValues/ was specified as something other than 'NONE' in the request. Each element represents one attribute.-uirAttributes :: Lens' UpdateItemResponse (HashMap Text AttributeValue)-uirAttributes = lens _uirAttributes (\s a -> s { _uirAttributes = a }) . _Map--uirConsumedCapacity :: Lens' UpdateItemResponse (Maybe ConsumedCapacity)-uirConsumedCapacity =- lens _uirConsumedCapacity (\s a -> s { _uirConsumedCapacity = a })--uirItemCollectionMetrics :: Lens' UpdateItemResponse (Maybe ItemCollectionMetrics)-uirItemCollectionMetrics =- lens _uirItemCollectionMetrics- (\s a -> s { _uirItemCollectionMetrics = a })--instance ToPath UpdateItem where- toPath = const "/"--instance ToQuery UpdateItem where- toQuery = const mempty--instance ToHeaders UpdateItem--instance ToJSON UpdateItem where- toJSON UpdateItem{..} = object- [ "TableName" .= _uiTableName- , "Key" .= _uiKey- , "AttributeUpdates" .= _uiAttributeUpdates- , "Expected" .= _uiExpected- , "ConditionalOperator" .= _uiConditionalOperator- , "ReturnValues" .= _uiReturnValues- , "ReturnConsumedCapacity" .= _uiReturnConsumedCapacity- , "ReturnItemCollectionMetrics" .= _uiReturnItemCollectionMetrics- , "UpdateExpression" .= _uiUpdateExpression- , "ConditionExpression" .= _uiConditionExpression- , "ExpressionAttributeNames" .= _uiExpressionAttributeNames- , "ExpressionAttributeValues" .= _uiExpressionAttributeValues- ]--instance AWSRequest UpdateItem where- type Sv UpdateItem = DynamoDB- type Rs UpdateItem = UpdateItemResponse-- request = post "UpdateItem"- response = jsonResponse--instance FromJSON UpdateItemResponse where- parseJSON = withObject "UpdateItemResponse" $ \o -> UpdateItemResponse- <$> o .:? "Attributes" .!= mempty- <*> o .:? "ConsumedCapacity"- <*> o .:? "ItemCollectionMetrics"+{-# 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.DynamoDB.UpdateItem+-- 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)+--+-- Edits an existing item\'s attributes, or adds a new item to the table if+-- it does not already exist. You can put, delete, or add attribute values.+-- You can also perform a conditional update on an existing item (insert a+-- new attribute name-value pair if it doesn\'t exist, or replace an+-- existing name-value pair if it has certain expected attribute values).+-- If conditions are specified and the item does not exist, then the+-- operation fails and a new item is not created.+--+-- You can also return the item\'s attribute values in the same+-- /UpdateItem/ operation using the /ReturnValues/ parameter.+--+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html AWS API Reference> for UpdateItem.+module Network.AWS.DynamoDB.UpdateItem+ (+ -- * Creating a Request+ updateItem+ , UpdateItem+ -- * Request Lenses+ , uiReturnValues+ , uiExpressionAttributeNames+ , uiUpdateExpression+ , uiAttributeUpdates+ , uiReturnConsumedCapacity+ , uiExpressionAttributeValues+ , uiReturnItemCollectionMetrics+ , uiConditionExpression+ , uiConditionalOperator+ , uiExpected+ , uiTableName+ , uiKey++ -- * Destructuring the Response+ , updateItemResponse+ , UpdateItemResponse+ -- * Response Lenses+ , uirsConsumedCapacity+ , uirsItemCollectionMetrics+ , uirsAttributes+ , uirsStatus+ ) where++import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response++-- | Represents the input of an /UpdateItem/ operation.+--+-- /See:/ 'updateItem' smart constructor.+data UpdateItem = UpdateItem'+ { _uiReturnValues :: !(Maybe ReturnValue)+ , _uiExpressionAttributeNames :: !(Maybe (Map Text Text))+ , _uiUpdateExpression :: !(Maybe Text)+ , _uiAttributeUpdates :: !(Maybe (Map Text AttributeValueUpdate))+ , _uiReturnConsumedCapacity :: !(Maybe ReturnConsumedCapacity)+ , _uiExpressionAttributeValues :: !(Maybe (Map Text AttributeValue))+ , _uiReturnItemCollectionMetrics :: !(Maybe ReturnItemCollectionMetrics)+ , _uiConditionExpression :: !(Maybe Text)+ , _uiConditionalOperator :: !(Maybe ConditionalOperator)+ , _uiExpected :: !(Maybe (Map Text ExpectedAttributeValue))+ , _uiTableName :: !Text+ , _uiKey :: !(Map Text AttributeValue)+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateItem' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uiReturnValues'+--+-- * 'uiExpressionAttributeNames'+--+-- * 'uiUpdateExpression'+--+-- * 'uiAttributeUpdates'+--+-- * 'uiReturnConsumedCapacity'+--+-- * 'uiExpressionAttributeValues'+--+-- * 'uiReturnItemCollectionMetrics'+--+-- * 'uiConditionExpression'+--+-- * 'uiConditionalOperator'+--+-- * 'uiExpected'+--+-- * 'uiTableName'+--+-- * 'uiKey'+updateItem+ :: Text -- ^ 'uiTableName'+ -> UpdateItem+updateItem pTableName_ =+ UpdateItem'+ { _uiReturnValues = Nothing+ , _uiExpressionAttributeNames = Nothing+ , _uiUpdateExpression = Nothing+ , _uiAttributeUpdates = Nothing+ , _uiReturnConsumedCapacity = Nothing+ , _uiExpressionAttributeValues = Nothing+ , _uiReturnItemCollectionMetrics = Nothing+ , _uiConditionExpression = Nothing+ , _uiConditionalOperator = Nothing+ , _uiExpected = Nothing+ , _uiTableName = pTableName_+ , _uiKey = mempty+ }++-- | Use /ReturnValues/ if you want to get the item attributes as they+-- appeared either before or after they were updated. For /UpdateItem/, the+-- valid values are:+--+-- - 'NONE' - If /ReturnValues/ is not specified, or if its value is+-- 'NONE', then nothing is returned. (This setting is the default for+-- /ReturnValues/.)+--+-- - 'ALL_OLD' - If /UpdateItem/ overwrote an attribute name-value pair,+-- then the content of the old item is returned.+--+-- - 'UPDATED_OLD' - The old versions of only the updated attributes are+-- returned.+--+-- - 'ALL_NEW' - All of the attributes of the new version of the item are+-- returned.+--+-- - 'UPDATED_NEW' - The new versions of only the updated attributes are+-- returned.+--+uiReturnValues :: Lens' UpdateItem (Maybe ReturnValue)+uiReturnValues = lens _uiReturnValues (\ s a -> s{_uiReturnValues = a});++-- | One or more substitution tokens for attribute names in an expression.+-- The following are some use cases for using /ExpressionAttributeNames/:+--+-- - To access an attribute whose name conflicts with a DynamoDB reserved+-- word.+--+-- - To create a placeholder for repeating occurrences of an attribute+-- name in an expression.+--+-- - To prevent special characters in an attribute name from being+-- misinterpreted in an expression.+--+-- Use the __#__ character in an expression to dereference an attribute+-- name. For example, consider the following attribute name:+--+-- - 'Percentile'+--+-- The name of this attribute conflicts with a reserved word, so it cannot+-- be used directly in an expression. (For the complete list of reserved+-- words, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html Reserved Words>+-- in the /Amazon DynamoDB Developer Guide/). To work around this, you+-- could specify the following for /ExpressionAttributeNames/:+--+-- - '{\"#P\":\"Percentile\"}'+--+-- You could then use this substitution in an expression, as in this+-- example:+--+-- - '#P = :val'+--+-- Tokens that begin with the __:__ character are /expression attribute+-- values/, which are placeholders for the actual value at runtime.+--+-- For more information on expression attribute names, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html Accessing Item Attributes>+-- in the /Amazon DynamoDB Developer Guide/.+uiExpressionAttributeNames :: Lens' UpdateItem (HashMap Text Text)+uiExpressionAttributeNames = lens _uiExpressionAttributeNames (\ s a -> s{_uiExpressionAttributeNames = a}) . _Default . _Map;++-- | An expression that defines one or more attributes to be updated, the+-- action to be performed on them, and new value(s) for them.+--+-- The following action values are available for /UpdateExpression/.+--+-- - 'SET' - Adds one or more attributes and values to an item. If any of+-- these attribute already exist, they are replaced by the new values.+-- You can also use 'SET' to add or subtract from an attribute that is+-- of type Number. For example: 'SET myNum = myNum + :val'+--+-- 'SET' supports the following functions:+--+-- - 'if_not_exists (path, operand)' - if the item does not contain+-- an attribute at the specified path, then 'if_not_exists'+-- evaluates to operand; otherwise, it evaluates to path. You can+-- use this function to avoid overwriting an attribute that may+-- already be present in the item.+--+-- - 'list_append (operand, operand)' - evaluates to a list with a+-- new element added to it. You can append the new element to the+-- start or the end of the list by reversing the order of the+-- operands.+--+-- These function names are case-sensitive.+--+-- - 'REMOVE' - Removes one or more attributes from an item.+--+-- - 'ADD' - Adds the specified value to the item, if the attribute does+-- not already exist. If the attribute does exist, then the behavior of+-- 'ADD' depends on the data type of the attribute:+--+-- - If the existing attribute is a number, and if /Value/ is also a+-- number, then /Value/ is mathematically added to the existing+-- attribute. If /Value/ is a negative number, then it is+-- subtracted from the existing attribute.+--+-- If you use 'ADD' to increment or decrement a number value for an+-- item that doesn\'t exist before the update, DynamoDB uses '0' as+-- the initial value.+--+-- Similarly, if you use 'ADD' for an existing item to increment or+-- decrement an attribute value that doesn\'t exist before the+-- update, DynamoDB uses '0' as the initial value. For example,+-- suppose that the item you want to update doesn\'t have an+-- attribute named /itemcount/, but you decide to 'ADD' the number+-- '3' to this attribute anyway. DynamoDB will create the+-- /itemcount/ attribute, set its initial value to '0', and finally+-- add '3' to it. The result will be a new /itemcount/ attribute in+-- the item, with a value of '3'.+--+-- - If the existing data type is a set and if /Value/ is also a set,+-- then /Value/ is added to the existing set. For example, if the+-- attribute value is the set '[1,2]', and the 'ADD' action+-- specified '[3]', then the final attribute value is '[1,2,3]'. An+-- error occurs if an 'ADD' action is specified for a set attribute+-- and the attribute type specified does not match the existing set+-- type.+--+-- Both sets must have the same primitive data type. For example,+-- if the existing data type is a set of strings, the /Value/ must+-- also be a set of strings.+--+-- The 'ADD' action only supports Number and set data types. In+-- addition, 'ADD' can only be used on top-level attributes, not nested+-- attributes.+--+-- - 'DELETE' - Deletes an element from a set.+--+-- If a set of values is specified, then those values are subtracted+-- from the old set. For example, if the attribute value was the set+-- '[a,b,c]' and the 'DELETE' action specifies '[a,c]', then the final+-- attribute value is '[b]'. Specifying an empty set is an error.+--+-- The 'DELETE' action only supports set data types. In addition,+-- 'DELETE' can only be used on top-level attributes, not nested+-- attributes.+--+-- You can have many actions in a single expression, such as the following:+-- 'SET a=:value1, b=:value2 DELETE :value3, :value4, :value5'+--+-- For more information on update expressions, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.Modifying.html Modifying Items and Attributes>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- /UpdateExpression/ replaces the legacy /AttributeUpdates/ parameter.+uiUpdateExpression :: Lens' UpdateItem (Maybe Text)+uiUpdateExpression = lens _uiUpdateExpression (\ s a -> s{_uiUpdateExpression = a});++-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /UpdateExpression/ instead. Do not combine legacy parameters+-- and expression parameters in a single API call; otherwise, DynamoDB will+-- return a /ValidationException/ exception.+--+-- This parameter can be used for modifying top-level attributes; however,+-- it does not support individual list or map elements.+--+-- The names of attributes to be modified, the action to perform on each,+-- and the new value for each. If you are updating an attribute that is an+-- index key attribute for any indexes on that table, the attribute type+-- must match the index key type defined in the /AttributesDefinition/ of+-- the table description. You can use /UpdateItem/ to update any nonkey+-- attributes.+--+-- Attribute values cannot be null. String and Binary type attributes must+-- have lengths greater than zero. Set type attributes must not be empty.+-- Requests with empty values will be rejected with a /ValidationException/+-- exception.+--+-- Each /AttributeUpdates/ element consists of an attribute name to modify,+-- along with the following:+--+-- - /Value/ - The new value, if applicable, for this attribute.+--+-- - /Action/ - A value that specifies how to perform the update. This+-- action is only valid for an existing attribute whose data type is+-- Number or is a set; do not use 'ADD' for other data types.+--+-- If an item with the specified primary key is found in the table, the+-- following values perform the following actions:+--+-- - 'PUT' - Adds the specified attribute to the item. If the+-- attribute already exists, it is replaced by the new value.+--+-- - 'DELETE' - Removes the attribute and its value, if no value is+-- specified for 'DELETE'. The data type of the specified value+-- must match the existing value\'s data type.+--+-- If a set of values is specified, then those values are+-- subtracted from the old set. For example, if the attribute value+-- was the set '[a,b,c]' and the 'DELETE' action specifies '[a,c]',+-- then the final attribute value is '[b]'. Specifying an empty set+-- is an error.+--+-- - 'ADD' - Adds the specified value to the item, if the attribute+-- does not already exist. If the attribute does exist, then the+-- behavior of 'ADD' depends on the data type of the attribute:+--+-- - If the existing attribute is a number, and if /Value/ is+-- also a number, then /Value/ is mathematically added to the+-- existing attribute. If /Value/ is a negative number, then it+-- is subtracted from the existing attribute.+--+-- If you use 'ADD' to increment or decrement a number value+-- for an item that doesn\'t exist before the update, DynamoDB+-- uses 0 as the initial value.+--+-- Similarly, if you use 'ADD' for an existing item to+-- increment or decrement an attribute value that doesn\'t+-- exist before the update, DynamoDB uses '0' as the initial+-- value. For example, suppose that the item you want to update+-- doesn\'t have an attribute named /itemcount/, but you decide+-- to 'ADD' the number '3' to this attribute anyway. DynamoDB+-- will create the /itemcount/ attribute, set its initial value+-- to '0', and finally add '3' to it. The result will be a new+-- /itemcount/ attribute, with a value of '3'.+--+-- - If the existing data type is a set, and if /Value/ is also a+-- set, then /Value/ is appended to the existing set. For+-- example, if the attribute value is the set '[1,2]', and the+-- 'ADD' action specified '[3]', then the final attribute value+-- is '[1,2,3]'. An error occurs if an 'ADD' action is+-- specified for a set attribute and the attribute type+-- specified does not match the existing set type.+--+-- Both sets must have the same primitive data type. For+-- example, if the existing data type is a set of strings,+-- /Value/ must also be a set of strings.+--+-- If no item with the specified key is found in the table, the+-- following values perform the following actions:+--+-- - 'PUT' - Causes DynamoDB to create a new item with the specified+-- primary key, and then adds the attribute.+--+-- - 'DELETE' - Nothing happens, because attributes cannot be deleted+-- from a nonexistent item. The operation succeeds, but DynamoDB+-- does not create a new item.+--+-- - 'ADD' - Causes DynamoDB to create an item with the supplied+-- primary key and number (or set of numbers) for the attribute+-- value. The only data types allowed are Number and Number Set.+--+-- If you provide any attributes that are part of an index key, then the+-- data types for those attributes must match those of the schema in the+-- table\'s attribute definition.+uiAttributeUpdates :: Lens' UpdateItem (HashMap Text AttributeValueUpdate)+uiAttributeUpdates = lens _uiAttributeUpdates (\ s a -> s{_uiAttributeUpdates = a}) . _Default . _Map;++-- | Undocumented member.+uiReturnConsumedCapacity :: Lens' UpdateItem (Maybe ReturnConsumedCapacity)+uiReturnConsumedCapacity = lens _uiReturnConsumedCapacity (\ s a -> s{_uiReturnConsumedCapacity = a});++-- | One or more values that can be substituted in an expression.+--+-- Use the __:__ (colon) character in an expression to dereference an+-- attribute value. For example, suppose that you wanted to check whether+-- the value of the /ProductStatus/ attribute was one of the following:+--+-- 'Available | Backordered | Discontinued'+--+-- You would first need to specify /ExpressionAttributeValues/ as follows:+--+-- '{ \":avail\":{\"S\":\"Available\"}, \":back\":{\"S\":\"Backordered\"}, \":disc\":{\"S\":\"Discontinued\"} }'+--+-- You could then use these values in an expression, such as this:+--+-- 'ProductStatus IN (:avail, :back, :disc)'+--+-- For more information on expression attribute values, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions>+-- in the /Amazon DynamoDB Developer Guide/.+uiExpressionAttributeValues :: Lens' UpdateItem (HashMap Text AttributeValue)+uiExpressionAttributeValues = lens _uiExpressionAttributeValues (\ s a -> s{_uiExpressionAttributeValues = a}) . _Default . _Map;++-- | Determines whether item collection metrics are returned. If set to+-- 'SIZE', the response includes statistics about item collections, if any,+-- that were modified during the operation are returned in the response. If+-- set to 'NONE' (the default), no statistics are returned.+uiReturnItemCollectionMetrics :: Lens' UpdateItem (Maybe ReturnItemCollectionMetrics)+uiReturnItemCollectionMetrics = lens _uiReturnItemCollectionMetrics (\ s a -> s{_uiReturnItemCollectionMetrics = a});++-- | A condition that must be satisfied in order for a conditional update to+-- succeed.+--+-- An expression can contain any of the following:+--+-- - Functions:+-- 'attribute_exists | attribute_not_exists | attribute_type | contains | begins_with | size'+--+-- These function names are case-sensitive.+--+-- - Comparison operators: ' = | \<> | \< | > | \<= | >= | BETWEEN | IN'+--+-- - Logical operators: 'AND | OR | NOT'+--+-- For more information on condition expressions, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.SpecifyingConditions.html Specifying Conditions>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- /ConditionExpression/ replaces the legacy /ConditionalOperator/ and+-- /Expected/ parameters.+uiConditionExpression :: Lens' UpdateItem (Maybe Text)+uiConditionExpression = lens _uiConditionExpression (\ s a -> s{_uiConditionExpression = a});++-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /ConditionExpression/ instead. Do not combine legacy+-- parameters and expression parameters in a single API call; otherwise,+-- DynamoDB will return a /ValidationException/ exception.+--+-- A logical operator to apply to the conditions in the /Expected/ map:+--+-- - 'AND' - If all of the conditions evaluate to true, then the entire+-- map evaluates to true.+--+-- - 'OR' - If at least one of the conditions evaluate to true, then the+-- entire map evaluates to true.+--+-- If you omit /ConditionalOperator/, then 'AND' is the default.+--+-- The operation will succeed only if the entire map evaluates to true.+--+-- This parameter does not support attributes of type List or Map.+uiConditionalOperator :: Lens' UpdateItem (Maybe ConditionalOperator)+uiConditionalOperator = lens _uiConditionalOperator (\ s a -> s{_uiConditionalOperator = a});++-- | This is a legacy parameter, for backward compatibility. New applications+-- should use /ConditionExpression/ instead. Do not combine legacy+-- parameters and expression parameters in a single API call; otherwise,+-- DynamoDB will return a /ValidationException/ exception.+--+-- A map of attribute\/condition pairs. /Expected/ provides a conditional+-- block for the /UpdateItem/ operation.+--+-- Each element of /Expected/ consists of an attribute name, a comparison+-- operator, and one or more values. DynamoDB compares the attribute with+-- the value(s) you supplied, using the comparison operator. For each+-- /Expected/ element, the result of the evaluation is either true or+-- false.+--+-- If you specify more than one element in the /Expected/ map, then by+-- default all of the conditions must evaluate to true. In other words, the+-- conditions are ANDed together. (You can use the /ConditionalOperator/+-- parameter to OR the conditions instead. If you do this, then at least+-- one of the conditions must evaluate to true, rather than all of them.)+--+-- If the /Expected/ map evaluates to true, then the conditional operation+-- succeeds; otherwise, it fails.+--+-- /Expected/ contains the following:+--+-- - /AttributeValueList/ - One or more values to evaluate against the+-- supplied attribute. The number of values in the list depends on the+-- /ComparisonOperator/ being used.+--+-- For type Number, value comparisons are numeric.+--+-- String value comparisons for greater than, equals, or less than are+-- based on ASCII character code values. For example, 'a' is greater+-- than 'A', and 'a' is greater than 'B'. For a list of code values,+-- see <http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters>.+--+-- For type Binary, DynamoDB treats each byte of the binary data as+-- unsigned when it compares binary values.+--+-- - /ComparisonOperator/ - A comparator for evaluating attributes in the+-- /AttributeValueList/. When performing the comparison, DynamoDB uses+-- strongly consistent reads.+--+-- The following comparison operators are available:+--+-- 'EQ | NE | LE | LT | GE | GT | NOT_NULL | NULL | CONTAINS | NOT_CONTAINS | BEGINS_WITH | IN | BETWEEN'+--+-- The following are descriptions of each comparison operator.+--+-- - 'EQ' : Equal. 'EQ' is supported for all datatypes, including+-- lists and maps.+--+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, Binary, String Set, Number Set,+-- or Binary Set. If an item contains an /AttributeValue/ element+-- of a different type than the one provided in the request, the+-- value does not match. For example, '{\"S\":\"6\"}' does not+-- equal '{\"N\":\"6\"}'. Also, '{\"N\":\"6\"}' does not equal+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'NE' : Not equal. 'NE' is supported for all datatypes, including+-- lists and maps.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String, Number, Binary, String Set, Number Set, or Binary+-- Set. If an item contains an /AttributeValue/ of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not equal+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'LE' : Less than or equal.+--+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'LT' : Less than.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String, Number, or Binary (not a set type). If an item+-- contains an /AttributeValue/ element of a different type than+-- the one provided in the request, the value does not match. For+-- example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'. Also,+-- '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'GE' : Greater than or equal.+--+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'GT' : Greater than.+--+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- an item contains an /AttributeValue/ element of a different type+-- than the one provided in the request, the value does not match.+-- For example, '{\"S\":\"6\"}' does not equal '{\"N\":\"6\"}'.+-- Also, '{\"N\":\"6\"}' does not compare to+-- '{\"NS\":[\"6\", \"2\", \"1\"]}'.+--+-- - 'NOT_NULL' : The attribute exists. 'NOT_NULL' is supported for+-- all datatypes, including lists and maps.+--+-- This operator tests for the existence of an attribute, not its+-- data type. If the data type of attribute \"'a'\" is null, and+-- you evaluate it using 'NOT_NULL', the result is a Boolean+-- /true/. This result is because the attribute \"'a'\" exists; its+-- data type is not relevant to the 'NOT_NULL' comparison operator.+--+-- - 'NULL' : The attribute does not exist. 'NULL' is supported for+-- all datatypes, including lists and maps.+--+-- This operator tests for the nonexistence of an attribute, not+-- its data type. If the data type of attribute \"'a'\" is null,+-- and you evaluate it using 'NULL', the result is a Boolean+-- /false/. This is because the attribute \"'a'\" exists; its data+-- type is not relevant to the 'NULL' comparison operator.+--+-- - 'CONTAINS' : Checks for a subsequence, or value in a set.+--+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- the target attribute of the comparison is of type String, then+-- the operator checks for a substring match. If the target+-- attribute of the comparison is of type Binary, then the operator+-- looks for a subsequence of the target that matches the input. If+-- the target attribute of the comparison is a set (\"'SS'\",+-- \"'NS'\", or \"'BS'\"), then the operator evaluates to true if+-- it finds an exact match with any member of the set.+--+-- CONTAINS is supported for lists: When evaluating+-- \"'a CONTAINS b'\", \"'a'\" can be a list; however, \"'b'\"+-- cannot be a set, a map, or a list.+--+-- - 'NOT_CONTAINS' : Checks for absence of a subsequence, or absence+-- of a value in a set.+--+-- /AttributeValueList/ can contain only one /AttributeValue/+-- element of type String, Number, or Binary (not a set type). If+-- the target attribute of the comparison is a String, then the+-- operator checks for the absence of a substring match. If the+-- target attribute of the comparison is Binary, then the operator+-- checks for the absence of a subsequence of the target that+-- matches the input. If the target attribute of the comparison is+-- a set (\"'SS'\", \"'NS'\", or \"'BS'\"), then the operator+-- evaluates to true if it /does not/ find an exact match with any+-- member of the set.+--+-- NOT_CONTAINS is supported for lists: When evaluating+-- \"'a NOT CONTAINS b'\", \"'a'\" can be a list; however, \"'b'\"+-- cannot be a set, a map, or a list.+--+-- - 'BEGINS_WITH' : Checks for a prefix.+--+-- /AttributeValueList/ can contain only one /AttributeValue/ of+-- type String or Binary (not a Number or a set type). The target+-- attribute of the comparison must be of type String or Binary+-- (not a Number or a set type).+--+-- - 'IN' : Checks for matching elements within two sets.+--+-- /AttributeValueList/ can contain one or more /AttributeValue/+-- elements of type String, Number, or Binary (not a set type).+-- These attributes are compared against an existing set type+-- attribute of an item. If any elements of the input set are+-- present in the item attribute, the expression evaluates to true.+--+-- - 'BETWEEN' : Greater than or equal to the first value, and less+-- than or equal to the second value.+--+-- /AttributeValueList/ must contain two /AttributeValue/ elements+-- of the same type, either String, Number, or Binary (not a set+-- type). A target attribute matches if the target value is greater+-- than, or equal to, the first element and less than, or equal to,+-- the second element. If an item contains an /AttributeValue/+-- element of a different type than the one provided in the+-- request, the value does not match. For example, '{\"S\":\"6\"}'+-- does not compare to '{\"N\":\"6\"}'. Also, '{\"N\":\"6\"}' does+-- not compare to '{\"NS\":[\"6\", \"2\", \"1\"]}'+--+-- For usage examples of /AttributeValueList/ and /ComparisonOperator/, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html Legacy Conditional Parameters>+-- in the /Amazon DynamoDB Developer Guide/.+--+-- For backward compatibility with previous DynamoDB releases, the+-- following parameters can be used instead of /AttributeValueList/ and+-- /ComparisonOperator/:+--+-- - /Value/ - A value for DynamoDB to compare with an attribute.+--+-- - /Exists/ - A Boolean value that causes DynamoDB to evaluate the+-- value before attempting the conditional operation:+--+-- - If /Exists/ is 'true', DynamoDB will check to see if that+-- attribute value already exists in the table. If it is found,+-- then the condition evaluates to true; otherwise the condition+-- evaluate to false.+--+-- - If /Exists/ is 'false', DynamoDB assumes that the attribute+-- value does /not/ exist in the table. If in fact the value does+-- not exist, then the assumption is valid and the condition+-- evaluates to true. If the value is found, despite the assumption+-- that it does not exist, the condition evaluates to false.+--+-- Note that the default value for /Exists/ is 'true'.+--+-- The /Value/ and /Exists/ parameters are incompatible with+-- /AttributeValueList/ and /ComparisonOperator/. Note that if you use both+-- sets of parameters at once, DynamoDB will return a /ValidationException/+-- exception.+--+-- This parameter does not support attributes of type List or Map.+uiExpected :: Lens' UpdateItem (HashMap Text ExpectedAttributeValue)+uiExpected = lens _uiExpected (\ s a -> s{_uiExpected = a}) . _Default . _Map;++-- | The name of the table containing the item to update.+uiTableName :: Lens' UpdateItem Text+uiTableName = lens _uiTableName (\ s a -> s{_uiTableName = a});++-- | The primary key of the item to be updated. Each element consists of an+-- attribute name and a value for that attribute.+--+-- For the primary key, you must provide all of the attributes. For+-- example, with a hash type primary key, you only need to provide the hash+-- attribute. For a hash-and-range type primary key, you must provide both+-- the hash attribute and the range attribute.+uiKey :: Lens' UpdateItem (HashMap Text AttributeValue)+uiKey = lens _uiKey (\ s a -> s{_uiKey = a}) . _Map;++instance AWSRequest UpdateItem where+ type Sv UpdateItem = DynamoDB+ type Rs UpdateItem = UpdateItemResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ UpdateItemResponse' <$>+ (x .?> "ConsumedCapacity") <*>+ (x .?> "ItemCollectionMetrics")+ <*> (x .?> "Attributes" .!@ mempty)+ <*> (pure (fromEnum s)))++instance ToHeaders UpdateItem where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.UpdateItem" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)])++instance ToJSON UpdateItem where+ toJSON UpdateItem'{..}+ = object+ ["ReturnValues" .= _uiReturnValues,+ "ExpressionAttributeNames" .=+ _uiExpressionAttributeNames,+ "UpdateExpression" .= _uiUpdateExpression,+ "AttributeUpdates" .= _uiAttributeUpdates,+ "ReturnConsumedCapacity" .=+ _uiReturnConsumedCapacity,+ "ExpressionAttributeValues" .=+ _uiExpressionAttributeValues,+ "ReturnItemCollectionMetrics" .=+ _uiReturnItemCollectionMetrics,+ "ConditionExpression" .= _uiConditionExpression,+ "ConditionalOperator" .= _uiConditionalOperator,+ "Expected" .= _uiExpected,+ "TableName" .= _uiTableName, "Key" .= _uiKey]++instance ToPath UpdateItem where+ toPath = const "/"++instance ToQuery UpdateItem where+ toQuery = const mempty++-- | Represents the output of an /UpdateItem/ operation.+--+-- /See:/ 'updateItemResponse' smart constructor.+data UpdateItemResponse = UpdateItemResponse'+ { _uirsConsumedCapacity :: !(Maybe ConsumedCapacity)+ , _uirsItemCollectionMetrics :: !(Maybe ItemCollectionMetrics)+ , _uirsAttributes :: !(Maybe (Map Text AttributeValue))+ , _uirsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic)++-- | Creates a value of 'UpdateItemResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'uirsConsumedCapacity'+--+-- * 'uirsItemCollectionMetrics'+--+-- * 'uirsAttributes'+--+-- * 'uirsStatus'+updateItemResponse+ :: Int -- ^ 'uirsStatus'+ -> UpdateItemResponse+updateItemResponse pStatus_ =+ UpdateItemResponse'+ { _uirsConsumedCapacity = Nothing+ , _uirsItemCollectionMetrics = Nothing+ , _uirsAttributes = Nothing+ , _uirsStatus = pStatus_+ }++-- | Undocumented member.+uirsConsumedCapacity :: Lens' UpdateItemResponse (Maybe ConsumedCapacity)+uirsConsumedCapacity = lens _uirsConsumedCapacity (\ s a -> s{_uirsConsumedCapacity = a});++-- | Undocumented member.+uirsItemCollectionMetrics :: Lens' UpdateItemResponse (Maybe ItemCollectionMetrics)+uirsItemCollectionMetrics = lens _uirsItemCollectionMetrics (\ s a -> s{_uirsItemCollectionMetrics = a});++-- | A map of attribute values as they appeared before the /UpdateItem/+-- operation. This map only appears if /ReturnValues/ was specified as+-- something other than 'NONE' in the request. Each element represents one+-- attribute.+uirsAttributes :: Lens' UpdateItemResponse (HashMap Text AttributeValue)+uirsAttributes = lens _uirsAttributes (\ s a -> s{_uirsAttributes = a}) . _Default . _Map;++-- | The response status code.+uirsStatus :: Lens' UpdateItemResponse Int+uirsStatus = lens _uirsStatus (\ s a -> s{_uirsStatus = a});
gen/Network/AWS/DynamoDB/UpdateTable.hs view
@@ -1,171 +1,208 @@-{-# LANGUAGE DataKinds #-}-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GeneralizedNewtypeDeriving #-}-{-# LANGUAGE LambdaCase #-}-{-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE TypeFamilies #-}+{-# 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.DynamoDB.UpdateTable--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.---- | Updates the provisioned throughput for the given table, or manages the global--- secondary indexes on the table.+-- Modifies the provisioned throughput settings, global secondary indexes,+-- or DynamoDB Streams settings for a given table. ----- You can increase or decrease the table's provisioned throughput values--- within the maximums and minimums listed in the <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Limits.html Limits> section in the /AmazonDynamoDB Developer Guide/.+-- You can only perform one of the following operations at once: ----- In addition, you can use /UpdateTable/ to add, modify or delete global--- secondary indexes on the table. For more information, see <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html Managing GlobalSecondary Indexes> in the /Amazon DynamoDB Developer Guide/.+-- - Modify the provisioned throughput settings of the table. ----- The table must be in the 'ACTIVE' state for /UpdateTable/ to succeed. /UpdateTable/--- is an asynchronous operation; while executing the operation, the table is in--- the 'UPDATING' state. While the table is in the 'UPDATING' state, the table still--- has the provisioned throughput from before the call. The table's new--- provisioned throughput settings go into effect when the table returns to the 'ACTIVE' state; at that point, the /UpdateTable/ operation is complete.+-- - Enable or disable Streams on the table. ----- <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html>+-- - Remove a global secondary index from the table.+--+-- - Create a new global secondary index on the table. Once the index+-- begins backfilling, you can use /UpdateTable/ to perform other+-- operations.+--+-- /UpdateTable/ is an asynchronous operation; while it is executing, the+-- table status changes from 'ACTIVE' to 'UPDATING'. While it is+-- 'UPDATING', you cannot issue another /UpdateTable/ request. When the+-- table returns to the 'ACTIVE' state, the /UpdateTable/ operation is+-- complete.+--+-- /See:/ <http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateTable.html AWS API Reference> for UpdateTable. module Network.AWS.DynamoDB.UpdateTable (- -- * Request- UpdateTable- -- ** Request constructor- , updateTable- -- ** Request lenses+ -- * Creating a Request+ updateTable+ , UpdateTable+ -- * Request Lenses+ , utProvisionedThroughput , utAttributeDefinitions , utGlobalSecondaryIndexUpdates- , utProvisionedThroughput+ , utStreamSpecification , utTableName - -- * Response- , UpdateTableResponse- -- ** Response constructor+ -- * Destructuring the Response , updateTableResponse- -- ** Response lenses- , utrTableDescription+ , UpdateTableResponse+ -- * Response Lenses+ , utrsTableDescription+ , utrsStatus ) where -import Network.AWS.Data (Object)-import Network.AWS.Prelude-import Network.AWS.Request.JSON-import Network.AWS.DynamoDB.Types-import qualified GHC.Exts+import Network.AWS.DynamoDB.Types+import Network.AWS.DynamoDB.Types.Product+import Network.AWS.Prelude+import Network.AWS.Request+import Network.AWS.Response -data UpdateTable = UpdateTable- { _utAttributeDefinitions :: List "AttributeDefinitions" AttributeDefinition- , _utGlobalSecondaryIndexUpdates :: List "GlobalSecondaryIndexUpdates" GlobalSecondaryIndexUpdate- , _utProvisionedThroughput :: Maybe ProvisionedThroughput- , _utTableName :: Text- } deriving (Eq, Read, Show)+-- | Represents the input of an /UpdateTable/ operation.+--+-- /See:/ 'updateTable' smart constructor.+data UpdateTable = UpdateTable'+ { _utProvisionedThroughput :: !(Maybe ProvisionedThroughput)+ , _utAttributeDefinitions :: !(Maybe [AttributeDefinition])+ , _utGlobalSecondaryIndexUpdates :: !(Maybe [GlobalSecondaryIndexUpdate])+ , _utStreamSpecification :: !(Maybe StreamSpecification)+ , _utTableName :: !Text+ } deriving (Eq,Read,Show,Data,Typeable,Generic) --- | 'UpdateTable' constructor.+-- | Creates a value of 'UpdateTable' with the minimum fields required to make a request. ----- The fields accessible through corresponding lenses are:+-- Use one of the following lenses to modify other fields as desired: ----- * 'utAttributeDefinitions' @::@ ['AttributeDefinition']+-- * 'utProvisionedThroughput' ----- * 'utGlobalSecondaryIndexUpdates' @::@ ['GlobalSecondaryIndexUpdate']+-- * 'utAttributeDefinitions' ----- * 'utProvisionedThroughput' @::@ 'Maybe' 'ProvisionedThroughput'+-- * 'utGlobalSecondaryIndexUpdates' ----- * 'utTableName' @::@ 'Text'+-- * 'utStreamSpecification' ---updateTable :: Text -- ^ 'utTableName'- -> UpdateTable-updateTable p1 = UpdateTable- { _utTableName = p1- , _utAttributeDefinitions = mempty- , _utProvisionedThroughput = Nothing- , _utGlobalSecondaryIndexUpdates = mempty+-- * 'utTableName'+updateTable+ :: Text -- ^ 'utTableName'+ -> UpdateTable+updateTable pTableName_ =+ UpdateTable'+ { _utProvisionedThroughput = Nothing+ , _utAttributeDefinitions = Nothing+ , _utGlobalSecondaryIndexUpdates = Nothing+ , _utStreamSpecification = Nothing+ , _utTableName = pTableName_ } +-- | Undocumented member.+utProvisionedThroughput :: Lens' UpdateTable (Maybe ProvisionedThroughput)+utProvisionedThroughput = lens _utProvisionedThroughput (\ s a -> s{_utProvisionedThroughput = a});+ -- | An array of attributes that describe the key schema for the table and--- indexes. If you are adding a new global secondary index to the table, /AttributeDefinitions/ must include the key element(s) of the new index.+-- indexes. If you are adding a new global secondary index to the table,+-- /AttributeDefinitions/ must include the key element(s) of the new index. utAttributeDefinitions :: Lens' UpdateTable [AttributeDefinition]-utAttributeDefinitions =- lens _utAttributeDefinitions (\s a -> s { _utAttributeDefinitions = a })- . _List+utAttributeDefinitions = lens _utAttributeDefinitions (\ s a -> s{_utAttributeDefinitions = a}) . _Default . _Coerce; -- | An array of one or more global secondary indexes for the table. For each -- index in the array, you can request one action: ----- /Create/ - add a new global secondary index to the table.------ /Update/ - modify the provisioned throughput settings of an existing global--- secondary index.+-- - /Create/ - add a new global secondary index to the table. ----- /Delete/ - remove a global secondary index from the table.+-- - /Update/ - modify the provisioned throughput settings of an existing+-- global secondary index. --+-- - /Delete/ - remove a global secondary index from the table. --+-- For more information, see+-- <http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.OnlineOps.html Managing Global Secondary Indexes>+-- in the /Amazon DynamoDB Developer Guide/. utGlobalSecondaryIndexUpdates :: Lens' UpdateTable [GlobalSecondaryIndexUpdate]-utGlobalSecondaryIndexUpdates =- lens _utGlobalSecondaryIndexUpdates- (\s a -> s { _utGlobalSecondaryIndexUpdates = a })- . _List+utGlobalSecondaryIndexUpdates = lens _utGlobalSecondaryIndexUpdates (\ s a -> s{_utGlobalSecondaryIndexUpdates = a}) . _Default . _Coerce; -utProvisionedThroughput :: Lens' UpdateTable (Maybe ProvisionedThroughput)-utProvisionedThroughput =- lens _utProvisionedThroughput (\s a -> s { _utProvisionedThroughput = a })+-- | Represents the DynamoDB Streams configuration for the table.+--+-- You will receive a /ResourceInUseException/ if you attempt to enable a+-- stream on a table that already has a stream, or if you attempt to+-- disable a stream on a table which does not have a stream.+utStreamSpecification :: Lens' UpdateTable (Maybe StreamSpecification)+utStreamSpecification = lens _utStreamSpecification (\ s a -> s{_utStreamSpecification = a}); -- | The name of the table to be updated. utTableName :: Lens' UpdateTable Text-utTableName = lens _utTableName (\s a -> s { _utTableName = a })+utTableName = lens _utTableName (\ s a -> s{_utTableName = a}); -newtype UpdateTableResponse = UpdateTableResponse- { _utrTableDescription :: Maybe TableDescription- } deriving (Eq, Read, Show)+instance AWSRequest UpdateTable where+ type Sv UpdateTable = DynamoDB+ type Rs UpdateTable = UpdateTableResponse+ request = postJSON+ response+ = receiveJSON+ (\ s h x ->+ UpdateTableResponse' <$>+ (x .?> "TableDescription") <*> (pure (fromEnum s))) --- | 'UpdateTableResponse' constructor.------ The fields accessible through corresponding lenses are:------ * 'utrTableDescription' @::@ 'Maybe' 'TableDescription'----updateTableResponse :: UpdateTableResponse-updateTableResponse = UpdateTableResponse- { _utrTableDescription = Nothing- }+instance ToHeaders UpdateTable where+ toHeaders+ = const+ (mconcat+ ["X-Amz-Target" =#+ ("DynamoDB_20120810.UpdateTable" :: ByteString),+ "Content-Type" =#+ ("application/x-amz-json-1.0" :: ByteString)]) -utrTableDescription :: Lens' UpdateTableResponse (Maybe TableDescription)-utrTableDescription =- lens _utrTableDescription (\s a -> s { _utrTableDescription = a })+instance ToJSON UpdateTable where+ toJSON UpdateTable'{..}+ = object+ ["ProvisionedThroughput" .= _utProvisionedThroughput,+ "AttributeDefinitions" .= _utAttributeDefinitions,+ "GlobalSecondaryIndexUpdates" .=+ _utGlobalSecondaryIndexUpdates,+ "StreamSpecification" .= _utStreamSpecification,+ "TableName" .= _utTableName] instance ToPath UpdateTable where- toPath = const "/"+ toPath = const "/" instance ToQuery UpdateTable where- toQuery = const mempty--instance ToHeaders UpdateTable+ toQuery = const mempty -instance ToJSON UpdateTable where- toJSON UpdateTable{..} = object- [ "AttributeDefinitions" .= _utAttributeDefinitions- , "TableName" .= _utTableName- , "ProvisionedThroughput" .= _utProvisionedThroughput- , "GlobalSecondaryIndexUpdates" .= _utGlobalSecondaryIndexUpdates- ]+-- | Represents the output of an /UpdateTable/ operation.+--+-- /See:/ 'updateTableResponse' smart constructor.+data UpdateTableResponse = UpdateTableResponse'+ { _utrsTableDescription :: !(Maybe TableDescription)+ , _utrsStatus :: !Int+ } deriving (Eq,Read,Show,Data,Typeable,Generic) -instance AWSRequest UpdateTable where- type Sv UpdateTable = DynamoDB- type Rs UpdateTable = UpdateTableResponse+-- | Creates a value of 'UpdateTableResponse' with the minimum fields required to make a request.+--+-- Use one of the following lenses to modify other fields as desired:+--+-- * 'utrsTableDescription'+--+-- * 'utrsStatus'+updateTableResponse+ :: Int -- ^ 'utrsStatus'+ -> UpdateTableResponse+updateTableResponse pStatus_ =+ UpdateTableResponse'+ { _utrsTableDescription = Nothing+ , _utrsStatus = pStatus_+ } - request = post "UpdateTable"- response = jsonResponse+-- | Undocumented member.+utrsTableDescription :: Lens' UpdateTableResponse (Maybe TableDescription)+utrsTableDescription = lens _utrsTableDescription (\ s a -> s{_utrsTableDescription = a}); -instance FromJSON UpdateTableResponse where- parseJSON = withObject "UpdateTableResponse" $ \o -> UpdateTableResponse- <$> o .:? "TableDescription"+-- | The response status code.+utrsStatus :: Lens' UpdateTableResponse Int+utrsStatus = lens _utrsStatus (\ s a -> s{_utrsStatus = a});
gen/Network/AWS/DynamoDB/Waiters.hs view
@@ -1,42 +1,49 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TypeFamilies #-} +{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- | -- Module : Network.AWS.DynamoDB.Waiters--- 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/.+-- Copyright : (c) 2013-2015 Brendan Hay+-- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>--- Stability : experimental+-- Stability : auto-generated -- Portability : non-portable (GHC extensions) ----- Derived from AWS service descriptions, licensed under Apache 2.0.- module Network.AWS.DynamoDB.Waiters where -import Network.AWS.DynamoDB.DescribeTable-import Network.AWS.DynamoDB.Types-import Network.AWS.Waiters+import Network.AWS.DynamoDB.DescribeTable+import Network.AWS.DynamoDB.DescribeTable+import Network.AWS.DynamoDB.Types+import Network.AWS.Prelude+import Network.AWS.Waiter -tableExists :: Wait DescribeTable-tableExists = Wait- { _waitName = "TableExists"- , _waitAttempts = 25- , _waitDelay = 20- , _waitAcceptors =- [ matchAll TSActive AcceptSuccess- (dtrTable . tdTableStatus)- , matchError "ResourceNotFoundException" AcceptRetry- ]+-- | Polls 'Network.AWS.DynamoDB.DescribeTable' every 20 seconds until a+-- successful state is reached. An error is returned after 25 failed checks.+tableNotExists :: Wait DescribeTable+tableNotExists =+ Wait+ { _waitName = "TableNotExists"+ , _waitAttempts = 25+ , _waitDelay = 20+ , _waitAcceptors = [matchError "ResourceNotFoundException" AcceptSuccess] } -tableNotExists :: Wait DescribeTable-tableNotExists = Wait- { _waitName = "TableNotExists"- , _waitAttempts = 25- , _waitDelay = 20- , _waitAcceptors =- [ matchError "ResourceNotFoundException" AcceptSuccess- ]+-- | Polls 'Network.AWS.DynamoDB.DescribeTable' every 20 seconds until a+-- successful state is reached. An error is returned after 25 failed checks.+tableExists :: Wait DescribeTable+tableExists =+ Wait+ { _waitName = "TableExists"+ , _waitAttempts = 25+ , _waitDelay = 20+ , _waitAcceptors = [ matchAll+ "ACTIVE"+ AcceptSuccess+ (drsTable .+ _Just . tdTableStatus . _Just . to toTextCI)+ , matchError "ResourceNotFoundException" AcceptRetry] }
+ test/Main.hs view
@@ -0,0 +1,21 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- |+-- Module : Main+-- 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)+--+module Main (main) where++import Test.Tasty+import Test.AWS.DynamoDB+import Test.AWS.DynamoDB.Internal++main :: IO ()+main = defaultMain $ testGroup "DynamoDB"+ [ testGroup "tests" tests+ , testGroup "fixtures" fixtures+ ]
+ test/Test/AWS/DynamoDB.hs view
@@ -0,0 +1,26 @@+{-# LANGUAGE OverloadedStrings #-}++-- Module : Test.AWS.DynamoDB+-- Copyright : (c) 2013-2015 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 <brendan.g.hay@gmail.com>+-- Stability : experimental+-- Portability : non-portable (GHC extensions)++module Test.AWS.DynamoDB+ ( tests+ , fixtures+ ) where++import Network.AWS.DynamoDB+import Test.AWS.Gen.DynamoDB+import Test.Tasty++tests :: [TestTree]+tests = []++fixtures :: [TestTree]+fixtures = []
+ test/Test/AWS/DynamoDB/Internal.hs view
@@ -0,0 +1,16 @@+{-# LANGUAGE OverloadedStrings #-}+{-# OPTIONS_GHC -fno-warn-unused-imports #-}++-- Module : Test.AWS.DynamoDB.Internal+-- Copyright : (c) 2013-2015 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 <brendan.g.hay@gmail.com>+-- Stability : experimental+-- Portability : non-portable (GHC extensions)++module Test.AWS.DynamoDB.Internal where++import Test.AWS.Prelude
+ test/Test/AWS/Gen/DynamoDB.hs view
@@ -0,0 +1,260 @@+{-# OPTIONS_GHC -fno-warn-unused-imports #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++-- Derived from AWS service descriptions, licensed under Apache 2.0.++-- |+-- Module : Test.AWS.Gen.DynamoDB+-- 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)+--+module Test.AWS.Gen.DynamoDB where++import Data.Proxy+import Test.AWS.Fixture+import Test.AWS.Prelude+import Test.Tasty+import Network.AWS.DynamoDB+import Test.AWS.DynamoDB.Internal++-- Auto-generated: the actual test selection needs to be manually placed into+-- the top-level so that real test data can be incrementally added.+--+-- This commented snippet is what the entire set should look like:++-- fixtures :: TestTree+-- fixtures =+-- [ testGroup "request"+-- [ testUpdateItem $+-- updateItem+--+-- , testDeleteItem $+-- deleteItem+--+-- , testPutItem $+-- putItem+--+-- , testDeleteTable $+-- deleteTable+--+-- , testUpdateTable $+-- updateTable+--+-- , testBatchGetItem $+-- batchGetItem+--+-- , testDescribeTable $+-- describeTable+--+-- , testGetItem $+-- getItem+--+-- , testBatchWriteItem $+-- batchWriteItem+--+-- , testScan $+-- scan+--+-- , testListTables $+-- listTables+--+-- , testQuery $+-- query+--+-- , testCreateTable $+-- createTable+--+-- ]++-- , testGroup "response"+-- [ testUpdateItemResponse $+-- updateItemResponse+--+-- , testDeleteItemResponse $+-- deleteItemResponse+--+-- , testPutItemResponse $+-- putItemResponse+--+-- , testDeleteTableResponse $+-- deleteTableResponse+--+-- , testUpdateTableResponse $+-- updateTableResponse+--+-- , testBatchGetItemResponse $+-- batchGetItemResponse+--+-- , testDescribeTableResponse $+-- describeTableResponse+--+-- , testGetItemResponse $+-- getItemResponse+--+-- , testBatchWriteItemResponse $+-- batchWriteItemResponse+--+-- , testScanResponse $+-- scanResponse+--+-- , testListTablesResponse $+-- listTablesResponse+--+-- , testQueryResponse $+-- queryResponse+--+-- , testCreateTableResponse $+-- createTableResponse+--+-- ]+-- ]++-- Requests++testUpdateItem :: UpdateItem -> TestTree+testUpdateItem = req+ "UpdateItem"+ "fixture/UpdateItem"++testDeleteItem :: DeleteItem -> TestTree+testDeleteItem = req+ "DeleteItem"+ "fixture/DeleteItem"++testPutItem :: PutItem -> TestTree+testPutItem = req+ "PutItem"+ "fixture/PutItem"++testDeleteTable :: DeleteTable -> TestTree+testDeleteTable = req+ "DeleteTable"+ "fixture/DeleteTable"++testUpdateTable :: UpdateTable -> TestTree+testUpdateTable = req+ "UpdateTable"+ "fixture/UpdateTable"++testBatchGetItem :: BatchGetItem -> TestTree+testBatchGetItem = req+ "BatchGetItem"+ "fixture/BatchGetItem"++testDescribeTable :: DescribeTable -> TestTree+testDescribeTable = req+ "DescribeTable"+ "fixture/DescribeTable"++testGetItem :: GetItem -> TestTree+testGetItem = req+ "GetItem"+ "fixture/GetItem"++testBatchWriteItem :: BatchWriteItem -> TestTree+testBatchWriteItem = req+ "BatchWriteItem"+ "fixture/BatchWriteItem"++testScan :: Scan -> TestTree+testScan = req+ "Scan"+ "fixture/Scan"++testListTables :: ListTables -> TestTree+testListTables = req+ "ListTables"+ "fixture/ListTables"++testQuery :: Query -> TestTree+testQuery = req+ "Query"+ "fixture/Query"++testCreateTable :: CreateTable -> TestTree+testCreateTable = req+ "CreateTable"+ "fixture/CreateTable"++-- Responses++testUpdateItemResponse :: UpdateItemResponse -> TestTree+testUpdateItemResponse = res+ "UpdateItemResponse"+ "fixture/UpdateItemResponse"+ (Proxy :: Proxy UpdateItem)++testDeleteItemResponse :: DeleteItemResponse -> TestTree+testDeleteItemResponse = res+ "DeleteItemResponse"+ "fixture/DeleteItemResponse"+ (Proxy :: Proxy DeleteItem)++testPutItemResponse :: PutItemResponse -> TestTree+testPutItemResponse = res+ "PutItemResponse"+ "fixture/PutItemResponse"+ (Proxy :: Proxy PutItem)++testDeleteTableResponse :: DeleteTableResponse -> TestTree+testDeleteTableResponse = res+ "DeleteTableResponse"+ "fixture/DeleteTableResponse"+ (Proxy :: Proxy DeleteTable)++testUpdateTableResponse :: UpdateTableResponse -> TestTree+testUpdateTableResponse = res+ "UpdateTableResponse"+ "fixture/UpdateTableResponse"+ (Proxy :: Proxy UpdateTable)++testBatchGetItemResponse :: BatchGetItemResponse -> TestTree+testBatchGetItemResponse = res+ "BatchGetItemResponse"+ "fixture/BatchGetItemResponse"+ (Proxy :: Proxy BatchGetItem)++testDescribeTableResponse :: DescribeTableResponse -> TestTree+testDescribeTableResponse = res+ "DescribeTableResponse"+ "fixture/DescribeTableResponse"+ (Proxy :: Proxy DescribeTable)++testGetItemResponse :: GetItemResponse -> TestTree+testGetItemResponse = res+ "GetItemResponse"+ "fixture/GetItemResponse"+ (Proxy :: Proxy GetItem)++testBatchWriteItemResponse :: BatchWriteItemResponse -> TestTree+testBatchWriteItemResponse = res+ "BatchWriteItemResponse"+ "fixture/BatchWriteItemResponse"+ (Proxy :: Proxy BatchWriteItem)++testScanResponse :: ScanResponse -> TestTree+testScanResponse = res+ "ScanResponse"+ "fixture/ScanResponse"+ (Proxy :: Proxy Scan)++testListTablesResponse :: ListTablesResponse -> TestTree+testListTablesResponse = res+ "ListTablesResponse"+ "fixture/ListTablesResponse"+ (Proxy :: Proxy ListTables)++testQueryResponse :: QueryResponse -> TestTree+testQueryResponse = res+ "QueryResponse"+ "fixture/QueryResponse"+ (Proxy :: Proxy Query)++testCreateTableResponse :: CreateTableResponse -> TestTree+testCreateTableResponse = res+ "CreateTableResponse"+ "fixture/CreateTableResponse"+ (Proxy :: Proxy CreateTable)