stratosphere-0.15.2: library-gen/Stratosphere/Resources/GlueCrawler.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html
module Stratosphere.Resources.GlueCrawler where
import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.GlueCrawlerSchedule
import Stratosphere.ResourceProperties.GlueCrawlerSchemaChangePolicy
import Stratosphere.ResourceProperties.GlueCrawlerTargets
-- | Full data type definition for GlueCrawler. See 'glueCrawler' for a more
-- convenient constructor.
data GlueCrawler =
GlueCrawler
{ _glueCrawlerClassifiers :: Maybe (ValList Text)
, _glueCrawlerDatabaseName :: Val Text
, _glueCrawlerDescription :: Maybe (Val Text)
, _glueCrawlerName :: Maybe (Val Text)
, _glueCrawlerRole :: Val Text
, _glueCrawlerSchedule :: Maybe GlueCrawlerSchedule
, _glueCrawlerSchemaChangePolicy :: Maybe GlueCrawlerSchemaChangePolicy
, _glueCrawlerTablePrefix :: Maybe (Val Text)
, _glueCrawlerTargets :: GlueCrawlerTargets
} deriving (Show, Eq)
instance ToJSON GlueCrawler where
toJSON GlueCrawler{..} =
object $
catMaybes
[ fmap (("Classifiers",) . toJSON) _glueCrawlerClassifiers
, (Just . ("DatabaseName",) . toJSON) _glueCrawlerDatabaseName
, fmap (("Description",) . toJSON) _glueCrawlerDescription
, fmap (("Name",) . toJSON) _glueCrawlerName
, (Just . ("Role",) . toJSON) _glueCrawlerRole
, fmap (("Schedule",) . toJSON) _glueCrawlerSchedule
, fmap (("SchemaChangePolicy",) . toJSON) _glueCrawlerSchemaChangePolicy
, fmap (("TablePrefix",) . toJSON) _glueCrawlerTablePrefix
, (Just . ("Targets",) . toJSON) _glueCrawlerTargets
]
instance FromJSON GlueCrawler where
parseJSON (Object obj) =
GlueCrawler <$>
(obj .:? "Classifiers") <*>
(obj .: "DatabaseName") <*>
(obj .:? "Description") <*>
(obj .:? "Name") <*>
(obj .: "Role") <*>
(obj .:? "Schedule") <*>
(obj .:? "SchemaChangePolicy") <*>
(obj .:? "TablePrefix") <*>
(obj .: "Targets")
parseJSON _ = mempty
-- | Constructor for 'GlueCrawler' containing required fields as arguments.
glueCrawler
:: Val Text -- ^ 'gcDatabaseName'
-> Val Text -- ^ 'gcRole'
-> GlueCrawlerTargets -- ^ 'gcTargets'
-> GlueCrawler
glueCrawler databaseNamearg rolearg targetsarg =
GlueCrawler
{ _glueCrawlerClassifiers = Nothing
, _glueCrawlerDatabaseName = databaseNamearg
, _glueCrawlerDescription = Nothing
, _glueCrawlerName = Nothing
, _glueCrawlerRole = rolearg
, _glueCrawlerSchedule = Nothing
, _glueCrawlerSchemaChangePolicy = Nothing
, _glueCrawlerTablePrefix = Nothing
, _glueCrawlerTargets = targetsarg
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-classifiers
gcClassifiers :: Lens' GlueCrawler (Maybe (ValList Text))
gcClassifiers = lens _glueCrawlerClassifiers (\s a -> s { _glueCrawlerClassifiers = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-databasename
gcDatabaseName :: Lens' GlueCrawler (Val Text)
gcDatabaseName = lens _glueCrawlerDatabaseName (\s a -> s { _glueCrawlerDatabaseName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-description
gcDescription :: Lens' GlueCrawler (Maybe (Val Text))
gcDescription = lens _glueCrawlerDescription (\s a -> s { _glueCrawlerDescription = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-name
gcName :: Lens' GlueCrawler (Maybe (Val Text))
gcName = lens _glueCrawlerName (\s a -> s { _glueCrawlerName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-role
gcRole :: Lens' GlueCrawler (Val Text)
gcRole = lens _glueCrawlerRole (\s a -> s { _glueCrawlerRole = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-schedule
gcSchedule :: Lens' GlueCrawler (Maybe GlueCrawlerSchedule)
gcSchedule = lens _glueCrawlerSchedule (\s a -> s { _glueCrawlerSchedule = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-schemachangepolicy
gcSchemaChangePolicy :: Lens' GlueCrawler (Maybe GlueCrawlerSchemaChangePolicy)
gcSchemaChangePolicy = lens _glueCrawlerSchemaChangePolicy (\s a -> s { _glueCrawlerSchemaChangePolicy = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-tableprefix
gcTablePrefix :: Lens' GlueCrawler (Maybe (Val Text))
gcTablePrefix = lens _glueCrawlerTablePrefix (\s a -> s { _glueCrawlerTablePrefix = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-glue-crawler.html#cfn-glue-crawler-targets
gcTargets :: Lens' GlueCrawler GlueCrawlerTargets
gcTargets = lens _glueCrawlerTargets (\s a -> s { _glueCrawlerTargets = a })