{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Firehose.Types.RedshiftDestinationDescription
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Firehose.Types.RedshiftDestinationDescription where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Firehose.Types.CloudWatchLoggingOptions
import Amazonka.Firehose.Types.CopyCommand
import Amazonka.Firehose.Types.ProcessingConfiguration
import Amazonka.Firehose.Types.RedshiftRetryOptions
import Amazonka.Firehose.Types.RedshiftS3BackupMode
import Amazonka.Firehose.Types.S3DestinationDescription
import qualified Amazonka.Prelude as Prelude

-- | Describes a destination in Amazon Redshift.
--
-- /See:/ 'newRedshiftDestinationDescription' smart constructor.
data RedshiftDestinationDescription = RedshiftDestinationDescription'
  { -- | The Amazon CloudWatch logging options for your delivery stream.
    RedshiftDestinationDescription -> Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions :: Prelude.Maybe CloudWatchLoggingOptions,
    -- | The data processing configuration.
    RedshiftDestinationDescription -> Maybe ProcessingConfiguration
processingConfiguration :: Prelude.Maybe ProcessingConfiguration,
    -- | The retry behavior in case Kinesis Data Firehose is unable to deliver
    -- documents to Amazon Redshift. Default value is 3600 (60 minutes).
    RedshiftDestinationDescription -> Maybe RedshiftRetryOptions
retryOptions :: Prelude.Maybe RedshiftRetryOptions,
    -- | The configuration for backup in Amazon S3.
    RedshiftDestinationDescription -> Maybe S3DestinationDescription
s3BackupDescription :: Prelude.Maybe S3DestinationDescription,
    -- | The Amazon S3 backup mode.
    RedshiftDestinationDescription -> Maybe RedshiftS3BackupMode
s3BackupMode :: Prelude.Maybe RedshiftS3BackupMode,
    -- | The Amazon Resource Name (ARN) of the Amazon Web Services credentials.
    -- For more information, see
    -- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces>.
    RedshiftDestinationDescription -> Text
roleARN :: Prelude.Text,
    -- | The database connection string.
    RedshiftDestinationDescription -> Text
clusterJDBCURL :: Prelude.Text,
    -- | The @COPY@ command.
    RedshiftDestinationDescription -> CopyCommand
copyCommand :: CopyCommand,
    -- | The name of the user.
    RedshiftDestinationDescription -> Sensitive Text
username :: Data.Sensitive Prelude.Text,
    -- | The Amazon S3 destination.
    RedshiftDestinationDescription -> S3DestinationDescription
s3DestinationDescription :: S3DestinationDescription
  }
  deriving (RedshiftDestinationDescription
-> RedshiftDestinationDescription -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RedshiftDestinationDescription
-> RedshiftDestinationDescription -> Bool
$c/= :: RedshiftDestinationDescription
-> RedshiftDestinationDescription -> Bool
== :: RedshiftDestinationDescription
-> RedshiftDestinationDescription -> Bool
$c== :: RedshiftDestinationDescription
-> RedshiftDestinationDescription -> Bool
Prelude.Eq, Int -> RedshiftDestinationDescription -> ShowS
[RedshiftDestinationDescription] -> ShowS
RedshiftDestinationDescription -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RedshiftDestinationDescription] -> ShowS
$cshowList :: [RedshiftDestinationDescription] -> ShowS
show :: RedshiftDestinationDescription -> String
$cshow :: RedshiftDestinationDescription -> String
showsPrec :: Int -> RedshiftDestinationDescription -> ShowS
$cshowsPrec :: Int -> RedshiftDestinationDescription -> ShowS
Prelude.Show, forall x.
Rep RedshiftDestinationDescription x
-> RedshiftDestinationDescription
forall x.
RedshiftDestinationDescription
-> Rep RedshiftDestinationDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep RedshiftDestinationDescription x
-> RedshiftDestinationDescription
$cfrom :: forall x.
RedshiftDestinationDescription
-> Rep RedshiftDestinationDescription x
Prelude.Generic)

-- |
-- Create a value of 'RedshiftDestinationDescription' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'cloudWatchLoggingOptions', 'redshiftDestinationDescription_cloudWatchLoggingOptions' - The Amazon CloudWatch logging options for your delivery stream.
--
-- 'processingConfiguration', 'redshiftDestinationDescription_processingConfiguration' - The data processing configuration.
--
-- 'retryOptions', 'redshiftDestinationDescription_retryOptions' - The retry behavior in case Kinesis Data Firehose is unable to deliver
-- documents to Amazon Redshift. Default value is 3600 (60 minutes).
--
-- 's3BackupDescription', 'redshiftDestinationDescription_s3BackupDescription' - The configuration for backup in Amazon S3.
--
-- 's3BackupMode', 'redshiftDestinationDescription_s3BackupMode' - The Amazon S3 backup mode.
--
-- 'roleARN', 'redshiftDestinationDescription_roleARN' - The Amazon Resource Name (ARN) of the Amazon Web Services credentials.
-- For more information, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces>.
--
-- 'clusterJDBCURL', 'redshiftDestinationDescription_clusterJDBCURL' - The database connection string.
--
-- 'copyCommand', 'redshiftDestinationDescription_copyCommand' - The @COPY@ command.
--
-- 'username', 'redshiftDestinationDescription_username' - The name of the user.
--
-- 's3DestinationDescription', 'redshiftDestinationDescription_s3DestinationDescription' - The Amazon S3 destination.
newRedshiftDestinationDescription ::
  -- | 'roleARN'
  Prelude.Text ->
  -- | 'clusterJDBCURL'
  Prelude.Text ->
  -- | 'copyCommand'
  CopyCommand ->
  -- | 'username'
  Prelude.Text ->
  -- | 's3DestinationDescription'
  S3DestinationDescription ->
  RedshiftDestinationDescription
newRedshiftDestinationDescription :: Text
-> Text
-> CopyCommand
-> Text
-> S3DestinationDescription
-> RedshiftDestinationDescription
newRedshiftDestinationDescription
  Text
pRoleARN_
  Text
pClusterJDBCURL_
  CopyCommand
pCopyCommand_
  Text
pUsername_
  S3DestinationDescription
pS3DestinationDescription_ =
    RedshiftDestinationDescription'
      { $sel:cloudWatchLoggingOptions:RedshiftDestinationDescription' :: Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions =
          forall a. Maybe a
Prelude.Nothing,
        $sel:processingConfiguration:RedshiftDestinationDescription' :: Maybe ProcessingConfiguration
processingConfiguration = forall a. Maybe a
Prelude.Nothing,
        $sel:retryOptions:RedshiftDestinationDescription' :: Maybe RedshiftRetryOptions
retryOptions = forall a. Maybe a
Prelude.Nothing,
        $sel:s3BackupDescription:RedshiftDestinationDescription' :: Maybe S3DestinationDescription
s3BackupDescription = forall a. Maybe a
Prelude.Nothing,
        $sel:s3BackupMode:RedshiftDestinationDescription' :: Maybe RedshiftS3BackupMode
s3BackupMode = forall a. Maybe a
Prelude.Nothing,
        $sel:roleARN:RedshiftDestinationDescription' :: Text
roleARN = Text
pRoleARN_,
        $sel:clusterJDBCURL:RedshiftDestinationDescription' :: Text
clusterJDBCURL = Text
pClusterJDBCURL_,
        $sel:copyCommand:RedshiftDestinationDescription' :: CopyCommand
copyCommand = CopyCommand
pCopyCommand_,
        $sel:username:RedshiftDestinationDescription' :: Sensitive Text
username =
          forall a. Iso' (Sensitive a) a
Data._Sensitive forall t b. AReview t b -> b -> t
Lens.# Text
pUsername_,
        $sel:s3DestinationDescription:RedshiftDestinationDescription' :: S3DestinationDescription
s3DestinationDescription =
          S3DestinationDescription
pS3DestinationDescription_
      }

-- | The Amazon CloudWatch logging options for your delivery stream.
redshiftDestinationDescription_cloudWatchLoggingOptions :: Lens.Lens' RedshiftDestinationDescription (Prelude.Maybe CloudWatchLoggingOptions)
redshiftDestinationDescription_cloudWatchLoggingOptions :: Lens'
  RedshiftDestinationDescription (Maybe CloudWatchLoggingOptions)
redshiftDestinationDescription_cloudWatchLoggingOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftDestinationDescription' {Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions :: Maybe CloudWatchLoggingOptions
$sel:cloudWatchLoggingOptions:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions} -> Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions) (\s :: RedshiftDestinationDescription
s@RedshiftDestinationDescription' {} Maybe CloudWatchLoggingOptions
a -> RedshiftDestinationDescription
s {$sel:cloudWatchLoggingOptions:RedshiftDestinationDescription' :: Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions = Maybe CloudWatchLoggingOptions
a} :: RedshiftDestinationDescription)

-- | The data processing configuration.
redshiftDestinationDescription_processingConfiguration :: Lens.Lens' RedshiftDestinationDescription (Prelude.Maybe ProcessingConfiguration)
redshiftDestinationDescription_processingConfiguration :: Lens'
  RedshiftDestinationDescription (Maybe ProcessingConfiguration)
redshiftDestinationDescription_processingConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftDestinationDescription' {Maybe ProcessingConfiguration
processingConfiguration :: Maybe ProcessingConfiguration
$sel:processingConfiguration:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe ProcessingConfiguration
processingConfiguration} -> Maybe ProcessingConfiguration
processingConfiguration) (\s :: RedshiftDestinationDescription
s@RedshiftDestinationDescription' {} Maybe ProcessingConfiguration
a -> RedshiftDestinationDescription
s {$sel:processingConfiguration:RedshiftDestinationDescription' :: Maybe ProcessingConfiguration
processingConfiguration = Maybe ProcessingConfiguration
a} :: RedshiftDestinationDescription)

-- | The retry behavior in case Kinesis Data Firehose is unable to deliver
-- documents to Amazon Redshift. Default value is 3600 (60 minutes).
redshiftDestinationDescription_retryOptions :: Lens.Lens' RedshiftDestinationDescription (Prelude.Maybe RedshiftRetryOptions)
redshiftDestinationDescription_retryOptions :: Lens' RedshiftDestinationDescription (Maybe RedshiftRetryOptions)
redshiftDestinationDescription_retryOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftDestinationDescription' {Maybe RedshiftRetryOptions
retryOptions :: Maybe RedshiftRetryOptions
$sel:retryOptions:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe RedshiftRetryOptions
retryOptions} -> Maybe RedshiftRetryOptions
retryOptions) (\s :: RedshiftDestinationDescription
s@RedshiftDestinationDescription' {} Maybe RedshiftRetryOptions
a -> RedshiftDestinationDescription
s {$sel:retryOptions:RedshiftDestinationDescription' :: Maybe RedshiftRetryOptions
retryOptions = Maybe RedshiftRetryOptions
a} :: RedshiftDestinationDescription)

-- | The configuration for backup in Amazon S3.
redshiftDestinationDescription_s3BackupDescription :: Lens.Lens' RedshiftDestinationDescription (Prelude.Maybe S3DestinationDescription)
redshiftDestinationDescription_s3BackupDescription :: Lens'
  RedshiftDestinationDescription (Maybe S3DestinationDescription)
redshiftDestinationDescription_s3BackupDescription = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftDestinationDescription' {Maybe S3DestinationDescription
s3BackupDescription :: Maybe S3DestinationDescription
$sel:s3BackupDescription:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe S3DestinationDescription
s3BackupDescription} -> Maybe S3DestinationDescription
s3BackupDescription) (\s :: RedshiftDestinationDescription
s@RedshiftDestinationDescription' {} Maybe S3DestinationDescription
a -> RedshiftDestinationDescription
s {$sel:s3BackupDescription:RedshiftDestinationDescription' :: Maybe S3DestinationDescription
s3BackupDescription = Maybe S3DestinationDescription
a} :: RedshiftDestinationDescription)

-- | The Amazon S3 backup mode.
redshiftDestinationDescription_s3BackupMode :: Lens.Lens' RedshiftDestinationDescription (Prelude.Maybe RedshiftS3BackupMode)
redshiftDestinationDescription_s3BackupMode :: Lens' RedshiftDestinationDescription (Maybe RedshiftS3BackupMode)
redshiftDestinationDescription_s3BackupMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftDestinationDescription' {Maybe RedshiftS3BackupMode
s3BackupMode :: Maybe RedshiftS3BackupMode
$sel:s3BackupMode:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe RedshiftS3BackupMode
s3BackupMode} -> Maybe RedshiftS3BackupMode
s3BackupMode) (\s :: RedshiftDestinationDescription
s@RedshiftDestinationDescription' {} Maybe RedshiftS3BackupMode
a -> RedshiftDestinationDescription
s {$sel:s3BackupMode:RedshiftDestinationDescription' :: Maybe RedshiftS3BackupMode
s3BackupMode = Maybe RedshiftS3BackupMode
a} :: RedshiftDestinationDescription)

-- | The Amazon Resource Name (ARN) of the Amazon Web Services credentials.
-- For more information, see
-- <https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html Amazon Resource Names (ARNs) and Amazon Web Services Service Namespaces>.
redshiftDestinationDescription_roleARN :: Lens.Lens' RedshiftDestinationDescription Prelude.Text
redshiftDestinationDescription_roleARN :: Lens' RedshiftDestinationDescription Text
redshiftDestinationDescription_roleARN = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftDestinationDescription' {Text
roleARN :: Text
$sel:roleARN:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Text
roleARN} -> Text
roleARN) (\s :: RedshiftDestinationDescription
s@RedshiftDestinationDescription' {} Text
a -> RedshiftDestinationDescription
s {$sel:roleARN:RedshiftDestinationDescription' :: Text
roleARN = Text
a} :: RedshiftDestinationDescription)

-- | The database connection string.
redshiftDestinationDescription_clusterJDBCURL :: Lens.Lens' RedshiftDestinationDescription Prelude.Text
redshiftDestinationDescription_clusterJDBCURL :: Lens' RedshiftDestinationDescription Text
redshiftDestinationDescription_clusterJDBCURL = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftDestinationDescription' {Text
clusterJDBCURL :: Text
$sel:clusterJDBCURL:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Text
clusterJDBCURL} -> Text
clusterJDBCURL) (\s :: RedshiftDestinationDescription
s@RedshiftDestinationDescription' {} Text
a -> RedshiftDestinationDescription
s {$sel:clusterJDBCURL:RedshiftDestinationDescription' :: Text
clusterJDBCURL = Text
a} :: RedshiftDestinationDescription)

-- | The @COPY@ command.
redshiftDestinationDescription_copyCommand :: Lens.Lens' RedshiftDestinationDescription CopyCommand
redshiftDestinationDescription_copyCommand :: Lens' RedshiftDestinationDescription CopyCommand
redshiftDestinationDescription_copyCommand = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftDestinationDescription' {CopyCommand
copyCommand :: CopyCommand
$sel:copyCommand:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> CopyCommand
copyCommand} -> CopyCommand
copyCommand) (\s :: RedshiftDestinationDescription
s@RedshiftDestinationDescription' {} CopyCommand
a -> RedshiftDestinationDescription
s {$sel:copyCommand:RedshiftDestinationDescription' :: CopyCommand
copyCommand = CopyCommand
a} :: RedshiftDestinationDescription)

-- | The name of the user.
redshiftDestinationDescription_username :: Lens.Lens' RedshiftDestinationDescription Prelude.Text
redshiftDestinationDescription_username :: Lens' RedshiftDestinationDescription Text
redshiftDestinationDescription_username = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftDestinationDescription' {Sensitive Text
username :: Sensitive Text
$sel:username:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Sensitive Text
username} -> Sensitive Text
username) (\s :: RedshiftDestinationDescription
s@RedshiftDestinationDescription' {} Sensitive Text
a -> RedshiftDestinationDescription
s {$sel:username:RedshiftDestinationDescription' :: Sensitive Text
username = Sensitive Text
a} :: RedshiftDestinationDescription) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | The Amazon S3 destination.
redshiftDestinationDescription_s3DestinationDescription :: Lens.Lens' RedshiftDestinationDescription S3DestinationDescription
redshiftDestinationDescription_s3DestinationDescription :: Lens' RedshiftDestinationDescription S3DestinationDescription
redshiftDestinationDescription_s3DestinationDescription = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftDestinationDescription' {S3DestinationDescription
s3DestinationDescription :: S3DestinationDescription
$sel:s3DestinationDescription:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> S3DestinationDescription
s3DestinationDescription} -> S3DestinationDescription
s3DestinationDescription) (\s :: RedshiftDestinationDescription
s@RedshiftDestinationDescription' {} S3DestinationDescription
a -> RedshiftDestinationDescription
s {$sel:s3DestinationDescription:RedshiftDestinationDescription' :: S3DestinationDescription
s3DestinationDescription = S3DestinationDescription
a} :: RedshiftDestinationDescription)

instance Data.FromJSON RedshiftDestinationDescription where
  parseJSON :: Value -> Parser RedshiftDestinationDescription
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"RedshiftDestinationDescription"
      ( \Object
x ->
          Maybe CloudWatchLoggingOptions
-> Maybe ProcessingConfiguration
-> Maybe RedshiftRetryOptions
-> Maybe S3DestinationDescription
-> Maybe RedshiftS3BackupMode
-> Text
-> Text
-> CopyCommand
-> Sensitive Text
-> S3DestinationDescription
-> RedshiftDestinationDescription
RedshiftDestinationDescription'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CloudWatchLoggingOptions")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ProcessingConfiguration")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"RetryOptions")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"S3BackupDescription")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"S3BackupMode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"RoleARN")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"ClusterJDBCURL")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"CopyCommand")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"Username")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"S3DestinationDescription")
      )

instance
  Prelude.Hashable
    RedshiftDestinationDescription
  where
  hashWithSalt :: Int -> RedshiftDestinationDescription -> Int
hashWithSalt
    Int
_salt
    RedshiftDestinationDescription' {Maybe CloudWatchLoggingOptions
Maybe ProcessingConfiguration
Maybe RedshiftRetryOptions
Maybe RedshiftS3BackupMode
Maybe S3DestinationDescription
Text
Sensitive Text
CopyCommand
S3DestinationDescription
s3DestinationDescription :: S3DestinationDescription
username :: Sensitive Text
copyCommand :: CopyCommand
clusterJDBCURL :: Text
roleARN :: Text
s3BackupMode :: Maybe RedshiftS3BackupMode
s3BackupDescription :: Maybe S3DestinationDescription
retryOptions :: Maybe RedshiftRetryOptions
processingConfiguration :: Maybe ProcessingConfiguration
cloudWatchLoggingOptions :: Maybe CloudWatchLoggingOptions
$sel:s3DestinationDescription:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> S3DestinationDescription
$sel:username:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Sensitive Text
$sel:copyCommand:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> CopyCommand
$sel:clusterJDBCURL:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Text
$sel:roleARN:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Text
$sel:s3BackupMode:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe RedshiftS3BackupMode
$sel:s3BackupDescription:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe S3DestinationDescription
$sel:retryOptions:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe RedshiftRetryOptions
$sel:processingConfiguration:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe ProcessingConfiguration
$sel:cloudWatchLoggingOptions:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe CloudWatchLoggingOptions
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ProcessingConfiguration
processingConfiguration
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RedshiftRetryOptions
retryOptions
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe S3DestinationDescription
s3BackupDescription
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RedshiftS3BackupMode
s3BackupMode
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
roleARN
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
clusterJDBCURL
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` CopyCommand
copyCommand
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Sensitive Text
username
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` S3DestinationDescription
s3DestinationDescription

instance
  Prelude.NFData
    RedshiftDestinationDescription
  where
  rnf :: RedshiftDestinationDescription -> ()
rnf RedshiftDestinationDescription' {Maybe CloudWatchLoggingOptions
Maybe ProcessingConfiguration
Maybe RedshiftRetryOptions
Maybe RedshiftS3BackupMode
Maybe S3DestinationDescription
Text
Sensitive Text
CopyCommand
S3DestinationDescription
s3DestinationDescription :: S3DestinationDescription
username :: Sensitive Text
copyCommand :: CopyCommand
clusterJDBCURL :: Text
roleARN :: Text
s3BackupMode :: Maybe RedshiftS3BackupMode
s3BackupDescription :: Maybe S3DestinationDescription
retryOptions :: Maybe RedshiftRetryOptions
processingConfiguration :: Maybe ProcessingConfiguration
cloudWatchLoggingOptions :: Maybe CloudWatchLoggingOptions
$sel:s3DestinationDescription:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> S3DestinationDescription
$sel:username:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Sensitive Text
$sel:copyCommand:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> CopyCommand
$sel:clusterJDBCURL:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Text
$sel:roleARN:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Text
$sel:s3BackupMode:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe RedshiftS3BackupMode
$sel:s3BackupDescription:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe S3DestinationDescription
$sel:retryOptions:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe RedshiftRetryOptions
$sel:processingConfiguration:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe ProcessingConfiguration
$sel:cloudWatchLoggingOptions:RedshiftDestinationDescription' :: RedshiftDestinationDescription -> Maybe CloudWatchLoggingOptions
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe CloudWatchLoggingOptions
cloudWatchLoggingOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ProcessingConfiguration
processingConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RedshiftRetryOptions
retryOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe S3DestinationDescription
s3BackupDescription
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RedshiftS3BackupMode
s3BackupMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
roleARN
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
clusterJDBCURL
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf CopyCommand
copyCommand
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Sensitive Text
username
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf S3DestinationDescription
s3DestinationDescription