packages feed

stratosphere-elasticache-1.0.0: gen/Stratosphere/ElastiCache/ServerlessCache.hs

module Stratosphere.ElastiCache.ServerlessCache (
        module Exports, ServerlessCache(..), mkServerlessCache
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.ElastiCache.ServerlessCache.CacheUsageLimitsProperty as Exports
import {-# SOURCE #-} Stratosphere.ElastiCache.ServerlessCache.EndpointProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Tag
import Stratosphere.Value
data ServerlessCache
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html>
    ServerlessCache {haddock_workaround_ :: (),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-cacheusagelimits>
                     cacheUsageLimits :: (Prelude.Maybe CacheUsageLimitsProperty),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-dailysnapshottime>
                     dailySnapshotTime :: (Prelude.Maybe (Value Prelude.Text)),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-description>
                     description :: (Prelude.Maybe (Value Prelude.Text)),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-endpoint>
                     endpoint :: (Prelude.Maybe EndpointProperty),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-engine>
                     engine :: (Value Prelude.Text),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-finalsnapshotname>
                     finalSnapshotName :: (Prelude.Maybe (Value Prelude.Text)),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-kmskeyid>
                     kmsKeyId :: (Prelude.Maybe (Value Prelude.Text)),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-majorengineversion>
                     majorEngineVersion :: (Prelude.Maybe (Value Prelude.Text)),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-readerendpoint>
                     readerEndpoint :: (Prelude.Maybe EndpointProperty),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-securitygroupids>
                     securityGroupIds :: (Prelude.Maybe (ValueList Prelude.Text)),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-serverlesscachename>
                     serverlessCacheName :: (Value Prelude.Text),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-snapshotarnstorestore>
                     snapshotArnsToRestore :: (Prelude.Maybe (ValueList Prelude.Text)),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-snapshotretentionlimit>
                     snapshotRetentionLimit :: (Prelude.Maybe (Value Prelude.Integer)),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-subnetids>
                     subnetIds :: (Prelude.Maybe (ValueList Prelude.Text)),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-tags>
                     tags :: (Prelude.Maybe [Tag]),
                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-elasticache-serverlesscache.html#cfn-elasticache-serverlesscache-usergroupid>
                     userGroupId :: (Prelude.Maybe (Value Prelude.Text))}
  deriving stock (Prelude.Eq, Prelude.Show)
mkServerlessCache ::
  Value Prelude.Text -> Value Prelude.Text -> ServerlessCache
mkServerlessCache engine serverlessCacheName
  = ServerlessCache
      {haddock_workaround_ = (), engine = engine,
       serverlessCacheName = serverlessCacheName,
       cacheUsageLimits = Prelude.Nothing,
       dailySnapshotTime = Prelude.Nothing, description = Prelude.Nothing,
       endpoint = Prelude.Nothing, finalSnapshotName = Prelude.Nothing,
       kmsKeyId = Prelude.Nothing, majorEngineVersion = Prelude.Nothing,
       readerEndpoint = Prelude.Nothing,
       securityGroupIds = Prelude.Nothing,
       snapshotArnsToRestore = Prelude.Nothing,
       snapshotRetentionLimit = Prelude.Nothing,
       subnetIds = Prelude.Nothing, tags = Prelude.Nothing,
       userGroupId = Prelude.Nothing}
instance ToResourceProperties ServerlessCache where
  toResourceProperties ServerlessCache {..}
    = ResourceProperties
        {awsType = "AWS::ElastiCache::ServerlessCache",
         supportsTags = Prelude.True,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["Engine" JSON..= engine,
                            "ServerlessCacheName" JSON..= serverlessCacheName]
                           (Prelude.catMaybes
                              [(JSON..=) "CacheUsageLimits" Prelude.<$> cacheUsageLimits,
                               (JSON..=) "DailySnapshotTime" Prelude.<$> dailySnapshotTime,
                               (JSON..=) "Description" Prelude.<$> description,
                               (JSON..=) "Endpoint" Prelude.<$> endpoint,
                               (JSON..=) "FinalSnapshotName" Prelude.<$> finalSnapshotName,
                               (JSON..=) "KmsKeyId" Prelude.<$> kmsKeyId,
                               (JSON..=) "MajorEngineVersion" Prelude.<$> majorEngineVersion,
                               (JSON..=) "ReaderEndpoint" Prelude.<$> readerEndpoint,
                               (JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
                               (JSON..=) "SnapshotArnsToRestore"
                                 Prelude.<$> snapshotArnsToRestore,
                               (JSON..=) "SnapshotRetentionLimit"
                                 Prelude.<$> snapshotRetentionLimit,
                               (JSON..=) "SubnetIds" Prelude.<$> subnetIds,
                               (JSON..=) "Tags" Prelude.<$> tags,
                               (JSON..=) "UserGroupId" Prelude.<$> userGroupId]))}
instance JSON.ToJSON ServerlessCache where
  toJSON ServerlessCache {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["Engine" JSON..= engine,
               "ServerlessCacheName" JSON..= serverlessCacheName]
              (Prelude.catMaybes
                 [(JSON..=) "CacheUsageLimits" Prelude.<$> cacheUsageLimits,
                  (JSON..=) "DailySnapshotTime" Prelude.<$> dailySnapshotTime,
                  (JSON..=) "Description" Prelude.<$> description,
                  (JSON..=) "Endpoint" Prelude.<$> endpoint,
                  (JSON..=) "FinalSnapshotName" Prelude.<$> finalSnapshotName,
                  (JSON..=) "KmsKeyId" Prelude.<$> kmsKeyId,
                  (JSON..=) "MajorEngineVersion" Prelude.<$> majorEngineVersion,
                  (JSON..=) "ReaderEndpoint" Prelude.<$> readerEndpoint,
                  (JSON..=) "SecurityGroupIds" Prelude.<$> securityGroupIds,
                  (JSON..=) "SnapshotArnsToRestore"
                    Prelude.<$> snapshotArnsToRestore,
                  (JSON..=) "SnapshotRetentionLimit"
                    Prelude.<$> snapshotRetentionLimit,
                  (JSON..=) "SubnetIds" Prelude.<$> subnetIds,
                  (JSON..=) "Tags" Prelude.<$> tags,
                  (JSON..=) "UserGroupId" Prelude.<$> userGroupId])))
instance Property "CacheUsageLimits" ServerlessCache where
  type PropertyType "CacheUsageLimits" ServerlessCache = CacheUsageLimitsProperty
  set newValue ServerlessCache {..}
    = ServerlessCache {cacheUsageLimits = Prelude.pure newValue, ..}
instance Property "DailySnapshotTime" ServerlessCache where
  type PropertyType "DailySnapshotTime" ServerlessCache = Value Prelude.Text
  set newValue ServerlessCache {..}
    = ServerlessCache {dailySnapshotTime = Prelude.pure newValue, ..}
instance Property "Description" ServerlessCache where
  type PropertyType "Description" ServerlessCache = Value Prelude.Text
  set newValue ServerlessCache {..}
    = ServerlessCache {description = Prelude.pure newValue, ..}
instance Property "Endpoint" ServerlessCache where
  type PropertyType "Endpoint" ServerlessCache = EndpointProperty
  set newValue ServerlessCache {..}
    = ServerlessCache {endpoint = Prelude.pure newValue, ..}
instance Property "Engine" ServerlessCache where
  type PropertyType "Engine" ServerlessCache = Value Prelude.Text
  set newValue ServerlessCache {..}
    = ServerlessCache {engine = newValue, ..}
instance Property "FinalSnapshotName" ServerlessCache where
  type PropertyType "FinalSnapshotName" ServerlessCache = Value Prelude.Text
  set newValue ServerlessCache {..}
    = ServerlessCache {finalSnapshotName = Prelude.pure newValue, ..}
instance Property "KmsKeyId" ServerlessCache where
  type PropertyType "KmsKeyId" ServerlessCache = Value Prelude.Text
  set newValue ServerlessCache {..}
    = ServerlessCache {kmsKeyId = Prelude.pure newValue, ..}
instance Property "MajorEngineVersion" ServerlessCache where
  type PropertyType "MajorEngineVersion" ServerlessCache = Value Prelude.Text
  set newValue ServerlessCache {..}
    = ServerlessCache {majorEngineVersion = Prelude.pure newValue, ..}
instance Property "ReaderEndpoint" ServerlessCache where
  type PropertyType "ReaderEndpoint" ServerlessCache = EndpointProperty
  set newValue ServerlessCache {..}
    = ServerlessCache {readerEndpoint = Prelude.pure newValue, ..}
instance Property "SecurityGroupIds" ServerlessCache where
  type PropertyType "SecurityGroupIds" ServerlessCache = ValueList Prelude.Text
  set newValue ServerlessCache {..}
    = ServerlessCache {securityGroupIds = Prelude.pure newValue, ..}
instance Property "ServerlessCacheName" ServerlessCache where
  type PropertyType "ServerlessCacheName" ServerlessCache = Value Prelude.Text
  set newValue ServerlessCache {..}
    = ServerlessCache {serverlessCacheName = newValue, ..}
instance Property "SnapshotArnsToRestore" ServerlessCache where
  type PropertyType "SnapshotArnsToRestore" ServerlessCache = ValueList Prelude.Text
  set newValue ServerlessCache {..}
    = ServerlessCache
        {snapshotArnsToRestore = Prelude.pure newValue, ..}
instance Property "SnapshotRetentionLimit" ServerlessCache where
  type PropertyType "SnapshotRetentionLimit" ServerlessCache = Value Prelude.Integer
  set newValue ServerlessCache {..}
    = ServerlessCache
        {snapshotRetentionLimit = Prelude.pure newValue, ..}
instance Property "SubnetIds" ServerlessCache where
  type PropertyType "SubnetIds" ServerlessCache = ValueList Prelude.Text
  set newValue ServerlessCache {..}
    = ServerlessCache {subnetIds = Prelude.pure newValue, ..}
instance Property "Tags" ServerlessCache where
  type PropertyType "Tags" ServerlessCache = [Tag]
  set newValue ServerlessCache {..}
    = ServerlessCache {tags = Prelude.pure newValue, ..}
instance Property "UserGroupId" ServerlessCache where
  type PropertyType "UserGroupId" ServerlessCache = Value Prelude.Text
  set newValue ServerlessCache {..}
    = ServerlessCache {userGroupId = Prelude.pure newValue, ..}