{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TupleSections #-} -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlschema.html module Stratosphere.Resources.AppSyncGraphQLSchema where import Stratosphere.ResourceImports -- | Full data type definition for AppSyncGraphQLSchema. See -- 'appSyncGraphQLSchema' for a more convenient constructor. data AppSyncGraphQLSchema = AppSyncGraphQLSchema { _appSyncGraphQLSchemaApiId :: Val Text , _appSyncGraphQLSchemaDefinition :: Maybe (Val Text) , _appSyncGraphQLSchemaDefinitionS3Location :: Maybe (Val Text) } deriving (Show, Eq) instance ToJSON AppSyncGraphQLSchema where toJSON AppSyncGraphQLSchema{..} = object $ catMaybes [ (Just . ("ApiId",) . toJSON) _appSyncGraphQLSchemaApiId , fmap (("Definition",) . toJSON) _appSyncGraphQLSchemaDefinition , fmap (("DefinitionS3Location",) . toJSON) _appSyncGraphQLSchemaDefinitionS3Location ] instance FromJSON AppSyncGraphQLSchema where parseJSON (Object obj) = AppSyncGraphQLSchema <$> (obj .: "ApiId") <*> (obj .:? "Definition") <*> (obj .:? "DefinitionS3Location") parseJSON _ = mempty -- | Constructor for 'AppSyncGraphQLSchema' containing required fields as -- arguments. appSyncGraphQLSchema :: Val Text -- ^ 'asgqlsApiId' -> AppSyncGraphQLSchema appSyncGraphQLSchema apiIdarg = AppSyncGraphQLSchema { _appSyncGraphQLSchemaApiId = apiIdarg , _appSyncGraphQLSchemaDefinition = Nothing , _appSyncGraphQLSchemaDefinitionS3Location = Nothing } -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlschema.html#cfn-appsync-graphqlschema-apiid asgqlsApiId :: Lens' AppSyncGraphQLSchema (Val Text) asgqlsApiId = lens _appSyncGraphQLSchemaApiId (\s a -> s { _appSyncGraphQLSchemaApiId = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlschema.html#cfn-appsync-graphqlschema-definition asgqlsDefinition :: Lens' AppSyncGraphQLSchema (Maybe (Val Text)) asgqlsDefinition = lens _appSyncGraphQLSchemaDefinition (\s a -> s { _appSyncGraphQLSchemaDefinition = a }) -- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-appsync-graphqlschema.html#cfn-appsync-graphqlschema-definitions3location asgqlsDefinitionS3Location :: Lens' AppSyncGraphQLSchema (Maybe (Val Text)) asgqlsDefinitionS3Location = lens _appSyncGraphQLSchemaDefinitionS3Location (\s a -> s { _appSyncGraphQLSchemaDefinitionS3Location = a })