packages feed

stratosphere-cur-1.0.0: gen/Stratosphere/CUR/ReportDefinition.hs

module Stratosphere.CUR.ReportDefinition (
        ReportDefinition(..), mkReportDefinition
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import Stratosphere.ResourceProperties
import Stratosphere.Tag
import Stratosphere.Value
data ReportDefinition
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html>
    ReportDefinition {haddock_workaround_ :: (),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-additionalartifacts>
                      additionalArtifacts :: (Prelude.Maybe (ValueList Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-additionalschemaelements>
                      additionalSchemaElements :: (Prelude.Maybe (ValueList Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-billingviewarn>
                      billingViewArn :: (Prelude.Maybe (Value Prelude.Text)),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-compression>
                      compression :: (Value Prelude.Text),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-format>
                      format :: (Value Prelude.Text),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-refreshclosedreports>
                      refreshClosedReports :: (Value Prelude.Bool),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-reportname>
                      reportName :: (Value Prelude.Text),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-reportversioning>
                      reportVersioning :: (Value Prelude.Text),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-s3bucket>
                      s3Bucket :: (Value Prelude.Text),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-s3prefix>
                      s3Prefix :: (Value Prelude.Text),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-s3region>
                      s3Region :: (Value Prelude.Text),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-tags>
                      tags :: (Prelude.Maybe [Tag]),
                      -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cur-reportdefinition.html#cfn-cur-reportdefinition-timeunit>
                      timeUnit :: (Value Prelude.Text)}
  deriving stock (Prelude.Eq, Prelude.Show)
mkReportDefinition ::
  Value Prelude.Text
  -> Value Prelude.Text
     -> Value Prelude.Bool
        -> Value Prelude.Text
           -> Value Prelude.Text
              -> Value Prelude.Text
                 -> Value Prelude.Text
                    -> Value Prelude.Text -> Value Prelude.Text -> ReportDefinition
mkReportDefinition
  compression
  format
  refreshClosedReports
  reportName
  reportVersioning
  s3Bucket
  s3Prefix
  s3Region
  timeUnit
  = ReportDefinition
      {haddock_workaround_ = (), compression = compression,
       format = format, refreshClosedReports = refreshClosedReports,
       reportName = reportName, reportVersioning = reportVersioning,
       s3Bucket = s3Bucket, s3Prefix = s3Prefix, s3Region = s3Region,
       timeUnit = timeUnit, additionalArtifacts = Prelude.Nothing,
       additionalSchemaElements = Prelude.Nothing,
       billingViewArn = Prelude.Nothing, tags = Prelude.Nothing}
instance ToResourceProperties ReportDefinition where
  toResourceProperties ReportDefinition {..}
    = ResourceProperties
        {awsType = "AWS::CUR::ReportDefinition",
         supportsTags = Prelude.True,
         properties = Prelude.fromList
                        ((Prelude.<>)
                           ["Compression" JSON..= compression, "Format" JSON..= format,
                            "RefreshClosedReports" JSON..= refreshClosedReports,
                            "ReportName" JSON..= reportName,
                            "ReportVersioning" JSON..= reportVersioning,
                            "S3Bucket" JSON..= s3Bucket, "S3Prefix" JSON..= s3Prefix,
                            "S3Region" JSON..= s3Region, "TimeUnit" JSON..= timeUnit]
                           (Prelude.catMaybes
                              [(JSON..=) "AdditionalArtifacts" Prelude.<$> additionalArtifacts,
                               (JSON..=) "AdditionalSchemaElements"
                                 Prelude.<$> additionalSchemaElements,
                               (JSON..=) "BillingViewArn" Prelude.<$> billingViewArn,
                               (JSON..=) "Tags" Prelude.<$> tags]))}
instance JSON.ToJSON ReportDefinition where
  toJSON ReportDefinition {..}
    = JSON.object
        (Prelude.fromList
           ((Prelude.<>)
              ["Compression" JSON..= compression, "Format" JSON..= format,
               "RefreshClosedReports" JSON..= refreshClosedReports,
               "ReportName" JSON..= reportName,
               "ReportVersioning" JSON..= reportVersioning,
               "S3Bucket" JSON..= s3Bucket, "S3Prefix" JSON..= s3Prefix,
               "S3Region" JSON..= s3Region, "TimeUnit" JSON..= timeUnit]
              (Prelude.catMaybes
                 [(JSON..=) "AdditionalArtifacts" Prelude.<$> additionalArtifacts,
                  (JSON..=) "AdditionalSchemaElements"
                    Prelude.<$> additionalSchemaElements,
                  (JSON..=) "BillingViewArn" Prelude.<$> billingViewArn,
                  (JSON..=) "Tags" Prelude.<$> tags])))
instance Property "AdditionalArtifacts" ReportDefinition where
  type PropertyType "AdditionalArtifacts" ReportDefinition = ValueList Prelude.Text
  set newValue ReportDefinition {..}
    = ReportDefinition
        {additionalArtifacts = Prelude.pure newValue, ..}
instance Property "AdditionalSchemaElements" ReportDefinition where
  type PropertyType "AdditionalSchemaElements" ReportDefinition = ValueList Prelude.Text
  set newValue ReportDefinition {..}
    = ReportDefinition
        {additionalSchemaElements = Prelude.pure newValue, ..}
instance Property "BillingViewArn" ReportDefinition where
  type PropertyType "BillingViewArn" ReportDefinition = Value Prelude.Text
  set newValue ReportDefinition {..}
    = ReportDefinition {billingViewArn = Prelude.pure newValue, ..}
instance Property "Compression" ReportDefinition where
  type PropertyType "Compression" ReportDefinition = Value Prelude.Text
  set newValue ReportDefinition {..}
    = ReportDefinition {compression = newValue, ..}
instance Property "Format" ReportDefinition where
  type PropertyType "Format" ReportDefinition = Value Prelude.Text
  set newValue ReportDefinition {..}
    = ReportDefinition {format = newValue, ..}
instance Property "RefreshClosedReports" ReportDefinition where
  type PropertyType "RefreshClosedReports" ReportDefinition = Value Prelude.Bool
  set newValue ReportDefinition {..}
    = ReportDefinition {refreshClosedReports = newValue, ..}
instance Property "ReportName" ReportDefinition where
  type PropertyType "ReportName" ReportDefinition = Value Prelude.Text
  set newValue ReportDefinition {..}
    = ReportDefinition {reportName = newValue, ..}
instance Property "ReportVersioning" ReportDefinition where
  type PropertyType "ReportVersioning" ReportDefinition = Value Prelude.Text
  set newValue ReportDefinition {..}
    = ReportDefinition {reportVersioning = newValue, ..}
instance Property "S3Bucket" ReportDefinition where
  type PropertyType "S3Bucket" ReportDefinition = Value Prelude.Text
  set newValue ReportDefinition {..}
    = ReportDefinition {s3Bucket = newValue, ..}
instance Property "S3Prefix" ReportDefinition where
  type PropertyType "S3Prefix" ReportDefinition = Value Prelude.Text
  set newValue ReportDefinition {..}
    = ReportDefinition {s3Prefix = newValue, ..}
instance Property "S3Region" ReportDefinition where
  type PropertyType "S3Region" ReportDefinition = Value Prelude.Text
  set newValue ReportDefinition {..}
    = ReportDefinition {s3Region = newValue, ..}
instance Property "Tags" ReportDefinition where
  type PropertyType "Tags" ReportDefinition = [Tag]
  set newValue ReportDefinition {..}
    = ReportDefinition {tags = Prelude.pure newValue, ..}
instance Property "TimeUnit" ReportDefinition where
  type PropertyType "TimeUnit" ReportDefinition = Value Prelude.Text
  set newValue ReportDefinition {..}
    = ReportDefinition {timeUnit = newValue, ..}