module Stratosphere.ResourceProperties.DynamoDBLocalSecondaryIndex where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
import Stratosphere.ResourceProperties.DynamoDBKeySchema
import Stratosphere.ResourceProperties.DynamoDBProjectionObject
data DynamoDBLocalSecondaryIndex =
DynamoDBLocalSecondaryIndex
{ _dynamoDBLocalSecondaryIndexIndexName :: Val Text
, _dynamoDBLocalSecondaryIndexKeySchema :: [DynamoDBKeySchema]
, _dynamoDBLocalSecondaryIndexProjection :: DynamoDBProjectionObject
} deriving (Show, Generic)
instance ToJSON DynamoDBLocalSecondaryIndex where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 28, omitNothingFields = True }
instance FromJSON DynamoDBLocalSecondaryIndex where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 28, omitNothingFields = True }
dynamoDBLocalSecondaryIndex
:: Val Text
-> [DynamoDBKeySchema]
-> DynamoDBProjectionObject
-> DynamoDBLocalSecondaryIndex
dynamoDBLocalSecondaryIndex indexNamearg keySchemaarg projectionarg =
DynamoDBLocalSecondaryIndex
{ _dynamoDBLocalSecondaryIndexIndexName = indexNamearg
, _dynamoDBLocalSecondaryIndexKeySchema = keySchemaarg
, _dynamoDBLocalSecondaryIndexProjection = projectionarg
}
ddblsiIndexName :: Lens' DynamoDBLocalSecondaryIndex (Val Text)
ddblsiIndexName = lens _dynamoDBLocalSecondaryIndexIndexName (\s a -> s { _dynamoDBLocalSecondaryIndexIndexName = a })
ddblsiKeySchema :: Lens' DynamoDBLocalSecondaryIndex [DynamoDBKeySchema]
ddblsiKeySchema = lens _dynamoDBLocalSecondaryIndexKeySchema (\s a -> s { _dynamoDBLocalSecondaryIndexKeySchema = a })
ddblsiProjection :: Lens' DynamoDBLocalSecondaryIndex DynamoDBProjectionObject
ddblsiProjection = lens _dynamoDBLocalSecondaryIndexProjection (\s a -> s { _dynamoDBLocalSecondaryIndexProjection = a })