packages feed

stratosphere-0.21.0: library-gen/Stratosphere/ResourceProperties/AppSyncDataSourceDynamoDBConfig.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html

module Stratosphere.ResourceProperties.AppSyncDataSourceDynamoDBConfig where

import Stratosphere.ResourceImports


-- | Full data type definition for AppSyncDataSourceDynamoDBConfig. See
-- 'appSyncDataSourceDynamoDBConfig' for a more convenient constructor.
data AppSyncDataSourceDynamoDBConfig =
  AppSyncDataSourceDynamoDBConfig
  { _appSyncDataSourceDynamoDBConfigAwsRegion :: Val Text
  , _appSyncDataSourceDynamoDBConfigTableName :: Val Text
  , _appSyncDataSourceDynamoDBConfigUseCallerCredentials :: Maybe (Val Bool)
  } deriving (Show, Eq)

instance ToJSON AppSyncDataSourceDynamoDBConfig where
  toJSON AppSyncDataSourceDynamoDBConfig{..} =
    object $
    catMaybes
    [ (Just . ("AwsRegion",) . toJSON) _appSyncDataSourceDynamoDBConfigAwsRegion
    , (Just . ("TableName",) . toJSON) _appSyncDataSourceDynamoDBConfigTableName
    , fmap (("UseCallerCredentials",) . toJSON . fmap Bool') _appSyncDataSourceDynamoDBConfigUseCallerCredentials
    ]

instance FromJSON AppSyncDataSourceDynamoDBConfig where
  parseJSON (Object obj) =
    AppSyncDataSourceDynamoDBConfig <$>
      (obj .: "AwsRegion") <*>
      (obj .: "TableName") <*>
      fmap (fmap (fmap unBool')) (obj .:? "UseCallerCredentials")
  parseJSON _ = mempty

-- | Constructor for 'AppSyncDataSourceDynamoDBConfig' containing required
-- fields as arguments.
appSyncDataSourceDynamoDBConfig
  :: Val Text -- ^ 'asdsddbcAwsRegion'
  -> Val Text -- ^ 'asdsddbcTableName'
  -> AppSyncDataSourceDynamoDBConfig
appSyncDataSourceDynamoDBConfig awsRegionarg tableNamearg =
  AppSyncDataSourceDynamoDBConfig
  { _appSyncDataSourceDynamoDBConfigAwsRegion = awsRegionarg
  , _appSyncDataSourceDynamoDBConfigTableName = tableNamearg
  , _appSyncDataSourceDynamoDBConfigUseCallerCredentials = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-awsregion
asdsddbcAwsRegion :: Lens' AppSyncDataSourceDynamoDBConfig (Val Text)
asdsddbcAwsRegion = lens _appSyncDataSourceDynamoDBConfigAwsRegion (\s a -> s { _appSyncDataSourceDynamoDBConfigAwsRegion = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-tablename
asdsddbcTableName :: Lens' AppSyncDataSourceDynamoDBConfig (Val Text)
asdsddbcTableName = lens _appSyncDataSourceDynamoDBConfigTableName (\s a -> s { _appSyncDataSourceDynamoDBConfigTableName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-appsync-datasource-dynamodbconfig.html#cfn-appsync-datasource-dynamodbconfig-usecallercredentials
asdsddbcUseCallerCredentials :: Lens' AppSyncDataSourceDynamoDBConfig (Maybe (Val Bool))
asdsddbcUseCallerCredentials = lens _appSyncDataSourceDynamoDBConfigUseCallerCredentials (\s a -> s { _appSyncDataSourceDynamoDBConfigUseCallerCredentials = a })