module Stratosphere.Resources.DynamoDBTable where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
import Stratosphere.ResourceProperties.DynamoDBAttributeDefinition
import Stratosphere.ResourceProperties.DynamoDBGlobalSecondaryIndex
import Stratosphere.ResourceProperties.DynamoDBKeySchema
import Stratosphere.ResourceProperties.DynamoDBLocalSecondaryIndex
import Stratosphere.ResourceProperties.DynamoDBProvisionedThroughput
import Stratosphere.ResourceProperties.DynamoDBStreamSpecification
data DynamoDBTable =
DynamoDBTable
{ _dynamoDBTableAttributeDefinitions :: [DynamoDBAttributeDefinition]
, _dynamoDBTableGlobalSecondaryIndexes :: Maybe [DynamoDBGlobalSecondaryIndex]
, _dynamoDBTableKeySchema :: [DynamoDBKeySchema]
, _dynamoDBTableLocalSecondaryIndexes :: Maybe [DynamoDBLocalSecondaryIndex]
, _dynamoDBTableProvisionedThroughput :: DynamoDBProvisionedThroughput
, _dynamoDBTableStreamSpecification :: Maybe DynamoDBStreamSpecification
, _dynamoDBTableTableName :: Maybe (Val Text)
} deriving (Show, Generic)
instance ToJSON DynamoDBTable where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 14, omitNothingFields = True }
instance FromJSON DynamoDBTable where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 14, omitNothingFields = True }
dynamoDBTable
:: [DynamoDBAttributeDefinition]
-> [DynamoDBKeySchema]
-> DynamoDBProvisionedThroughput
-> DynamoDBTable
dynamoDBTable attributeDefinitionsarg keySchemaarg provisionedThroughputarg =
DynamoDBTable
{ _dynamoDBTableAttributeDefinitions = attributeDefinitionsarg
, _dynamoDBTableGlobalSecondaryIndexes = Nothing
, _dynamoDBTableKeySchema = keySchemaarg
, _dynamoDBTableLocalSecondaryIndexes = Nothing
, _dynamoDBTableProvisionedThroughput = provisionedThroughputarg
, _dynamoDBTableStreamSpecification = Nothing
, _dynamoDBTableTableName = Nothing
}
ddbtAttributeDefinitions :: Lens' DynamoDBTable [DynamoDBAttributeDefinition]
ddbtAttributeDefinitions = lens _dynamoDBTableAttributeDefinitions (\s a -> s { _dynamoDBTableAttributeDefinitions = a })
ddbtGlobalSecondaryIndexes :: Lens' DynamoDBTable (Maybe [DynamoDBGlobalSecondaryIndex])
ddbtGlobalSecondaryIndexes = lens _dynamoDBTableGlobalSecondaryIndexes (\s a -> s { _dynamoDBTableGlobalSecondaryIndexes = a })
ddbtKeySchema :: Lens' DynamoDBTable [DynamoDBKeySchema]
ddbtKeySchema = lens _dynamoDBTableKeySchema (\s a -> s { _dynamoDBTableKeySchema = a })
ddbtLocalSecondaryIndexes :: Lens' DynamoDBTable (Maybe [DynamoDBLocalSecondaryIndex])
ddbtLocalSecondaryIndexes = lens _dynamoDBTableLocalSecondaryIndexes (\s a -> s { _dynamoDBTableLocalSecondaryIndexes = a })
ddbtProvisionedThroughput :: Lens' DynamoDBTable DynamoDBProvisionedThroughput
ddbtProvisionedThroughput = lens _dynamoDBTableProvisionedThroughput (\s a -> s { _dynamoDBTableProvisionedThroughput = a })
ddbtStreamSpecification :: Lens' DynamoDBTable (Maybe DynamoDBStreamSpecification)
ddbtStreamSpecification = lens _dynamoDBTableStreamSpecification (\s a -> s { _dynamoDBTableStreamSpecification = a })
ddbtTableName :: Lens' DynamoDBTable (Maybe (Val Text))
ddbtTableName = lens _dynamoDBTableTableName (\s a -> s { _dynamoDBTableTableName = a })