{-# 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 #-}
module Network.AWS.AppSync.CreateDataSource
(
createDataSource
, CreateDataSource
, cdsServiceRoleARN
, cdsDynamodbConfig
, cdsLambdaConfig
, cdsDescription
, cdsElasticsearchConfig
, cdsApiId
, cdsName
, cdsType
, createDataSourceResponse
, CreateDataSourceResponse
, cdsrsDataSource
, cdsrsResponseStatus
) where
import Network.AWS.AppSync.Types
import Network.AWS.AppSync.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateDataSource = CreateDataSource'
{ _cdsServiceRoleARN :: !(Maybe Text)
, _cdsDynamodbConfig :: !(Maybe DynamodbDataSourceConfig)
, _cdsLambdaConfig :: !(Maybe LambdaDataSourceConfig)
, _cdsDescription :: !(Maybe Text)
, _cdsElasticsearchConfig :: !(Maybe ElasticsearchDataSourceConfig)
, _cdsApiId :: !Text
, _cdsName :: !Text
, _cdsType :: !DataSourceType
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createDataSource
:: Text
-> Text
-> DataSourceType
-> CreateDataSource
createDataSource pApiId_ pName_ pType_ =
CreateDataSource'
{ _cdsServiceRoleARN = Nothing
, _cdsDynamodbConfig = Nothing
, _cdsLambdaConfig = Nothing
, _cdsDescription = Nothing
, _cdsElasticsearchConfig = Nothing
, _cdsApiId = pApiId_
, _cdsName = pName_
, _cdsType = pType_
}
cdsServiceRoleARN :: Lens' CreateDataSource (Maybe Text)
cdsServiceRoleARN = lens _cdsServiceRoleARN (\ s a -> s{_cdsServiceRoleARN = a})
cdsDynamodbConfig :: Lens' CreateDataSource (Maybe DynamodbDataSourceConfig)
cdsDynamodbConfig = lens _cdsDynamodbConfig (\ s a -> s{_cdsDynamodbConfig = a})
cdsLambdaConfig :: Lens' CreateDataSource (Maybe LambdaDataSourceConfig)
cdsLambdaConfig = lens _cdsLambdaConfig (\ s a -> s{_cdsLambdaConfig = a})
cdsDescription :: Lens' CreateDataSource (Maybe Text)
cdsDescription = lens _cdsDescription (\ s a -> s{_cdsDescription = a})
cdsElasticsearchConfig :: Lens' CreateDataSource (Maybe ElasticsearchDataSourceConfig)
cdsElasticsearchConfig = lens _cdsElasticsearchConfig (\ s a -> s{_cdsElasticsearchConfig = a})
cdsApiId :: Lens' CreateDataSource Text
cdsApiId = lens _cdsApiId (\ s a -> s{_cdsApiId = a})
cdsName :: Lens' CreateDataSource Text
cdsName = lens _cdsName (\ s a -> s{_cdsName = a})
cdsType :: Lens' CreateDataSource DataSourceType
cdsType = lens _cdsType (\ s a -> s{_cdsType = a})
instance AWSRequest CreateDataSource where
type Rs CreateDataSource = CreateDataSourceResponse
request = postJSON appSync
response
= receiveJSON
(\ s h x ->
CreateDataSourceResponse' <$>
(x .?> "dataSource") <*> (pure (fromEnum s)))
instance Hashable CreateDataSource where
instance NFData CreateDataSource where
instance ToHeaders CreateDataSource where
toHeaders
= const
(mconcat
["Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateDataSource where
toJSON CreateDataSource'{..}
= object
(catMaybes
[("serviceRoleArn" .=) <$> _cdsServiceRoleARN,
("dynamodbConfig" .=) <$> _cdsDynamodbConfig,
("lambdaConfig" .=) <$> _cdsLambdaConfig,
("description" .=) <$> _cdsDescription,
("elasticsearchConfig" .=) <$>
_cdsElasticsearchConfig,
Just ("name" .= _cdsName),
Just ("type" .= _cdsType)])
instance ToPath CreateDataSource where
toPath CreateDataSource'{..}
= mconcat
["/v1/apis/", toBS _cdsApiId, "/datasources"]
instance ToQuery CreateDataSource where
toQuery = const mempty
data CreateDataSourceResponse = CreateDataSourceResponse'
{ _cdsrsDataSource :: !(Maybe DataSource)
, _cdsrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
createDataSourceResponse
:: Int
-> CreateDataSourceResponse
createDataSourceResponse pResponseStatus_ =
CreateDataSourceResponse'
{_cdsrsDataSource = Nothing, _cdsrsResponseStatus = pResponseStatus_}
cdsrsDataSource :: Lens' CreateDataSourceResponse (Maybe DataSource)
cdsrsDataSource = lens _cdsrsDataSource (\ s a -> s{_cdsrsDataSource = a})
cdsrsResponseStatus :: Lens' CreateDataSourceResponse Int
cdsrsResponseStatus = lens _cdsrsResponseStatus (\ s a -> s{_cdsrsResponseStatus = a})
instance NFData CreateDataSourceResponse where