{-# 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.DMS.Types.RedshiftSettings
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DMS.Types.RedshiftSettings where

import qualified Amazonka.Core as Core
import Amazonka.DMS.Types.EncryptionModeValue
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Provides information that defines an Amazon Redshift endpoint.
--
-- /See:/ 'newRedshiftSettings' smart constructor.
data RedshiftSettings = RedshiftSettings'
  { -- | A value that specifies whether DMS should migrate empty CHAR and VARCHAR
    -- fields as NULL. A value of @true@ sets empty CHAR and VARCHAR fields to
    -- null. The default is @false@.
    RedshiftSettings -> Maybe Bool
emptyAsNull :: Prelude.Maybe Prelude.Bool,
    -- | If Amazon Redshift is configured to support case sensitive schema names,
    -- set @CaseSensitiveNames@ to @true@. The default is @false@.
    RedshiftSettings -> Maybe Bool
caseSensitiveNames :: Prelude.Maybe Prelude.Bool,
    -- | The maximum size (in KB) of any .csv file used to load data on an S3
    -- bucket and transfer data to Amazon Redshift. It defaults to 1048576KB (1
    -- GB).
    RedshiftSettings -> Maybe Int
maxFileSize :: Prelude.Maybe Prelude.Int,
    -- | A value that specifies to replaces the invalid characters specified in
    -- @ReplaceInvalidChars@, substituting the specified characters instead.
    -- The default is @\"?\"@.
    RedshiftSettings -> Maybe Text
replaceChars :: Prelude.Maybe Prelude.Text,
    -- | The name of the Amazon Redshift cluster you are using.
    RedshiftSettings -> Maybe Text
serverName :: Prelude.Maybe Prelude.Text,
    -- | A value that sets the amount of time to wait (in milliseconds) before
    -- timing out, beginning from when you initially establish a connection.
    RedshiftSettings -> Maybe Int
connectionTimeout :: Prelude.Maybe Prelude.Int,
    -- | The amount of time to wait (in milliseconds) before timing out of
    -- operations performed by DMS on a Redshift cluster, such as Redshift
    -- COPY, INSERT, DELETE, and UPDATE.
    RedshiftSettings -> Maybe Int
loadTimeout :: Prelude.Maybe Prelude.Int,
    -- | The Amazon Resource Name (ARN) of the IAM role that has access to the
    -- Amazon Redshift service. The role must allow the @iam:PassRole@ action.
    RedshiftSettings -> Maybe Text
serviceAccessRoleArn :: Prelude.Maybe Prelude.Text,
    -- | This setting is only valid for a full-load migration task. Set
    -- @ExplicitIds@ to @true@ to have tables with @IDENTITY@ columns override
    -- their auto-generated values with explicit values loaded from the source
    -- data files used to populate the tables. The default is @false@.
    RedshiftSettings -> Maybe Bool
explicitIds :: Prelude.Maybe Prelude.Bool,
    -- | An S3 folder where the comma-separated-value (.csv) files are stored
    -- before being uploaded to the target Redshift cluster.
    --
    -- For full load mode, DMS converts source records into .csv files and
    -- loads them to the /BucketFolder\/TableID/ path. DMS uses the Redshift
    -- @COPY@ command to upload the .csv files to the target table. The files
    -- are deleted once the @COPY@ operation has finished. For more
    -- information, see
    -- <https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html COPY> in the
    -- /Amazon Redshift Database Developer Guide/.
    --
    -- For change-data-capture (CDC) mode, DMS creates a /NetChanges/ table,
    -- and loads the .csv files to this /BucketFolder\/NetChangesTableID/ path.
    RedshiftSettings -> Maybe Text
bucketFolder :: Prelude.Maybe Prelude.Text,
    -- | A value that specifies to truncate data in columns to the appropriate
    -- number of characters, so that the data fits in the column. This
    -- parameter applies only to columns with a VARCHAR or CHAR data type, and
    -- rows with a size of 4 MB or less. Choose @true@ to truncate data. The
    -- default is @false@.
    RedshiftSettings -> Maybe Bool
truncateColumns :: Prelude.Maybe Prelude.Bool,
    -- | The full Amazon Resource Name (ARN) of the IAM role that specifies DMS
    -- as the trusted entity and grants the required permissions to access the
    -- value in @SecretsManagerSecret@. The role must allow the @iam:PassRole@
    -- action. @SecretsManagerSecret@ has the value of the Amazon Web Services
    -- Secrets Manager secret that allows access to the Amazon Redshift
    -- endpoint.
    --
    -- You can specify one of two sets of values for these permissions. You can
    -- specify the values for this setting and @SecretsManagerSecretId@. Or you
    -- can specify clear-text values for @UserName@, @Password@, @ServerName@,
    -- and @Port@. You can\'t specify both. For more information on creating
    -- this @SecretsManagerSecret@ and the @SecretsManagerAccessRoleArn@ and
    -- @SecretsManagerSecretId@ required to access it, see
    -- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Security.html#security-iam-secretsmanager Using secrets to access Database Migration Service resources>
    -- in the /Database Migration Service User Guide/.
    RedshiftSettings -> Maybe Text
secretsManagerAccessRoleArn :: Prelude.Maybe Prelude.Text,
    -- | A list of characters that you want to replace. Use with @ReplaceChars@.
    RedshiftSettings -> Maybe Text
replaceInvalidChars :: Prelude.Maybe Prelude.Text,
    -- | An Amazon Redshift user name for a registered user.
    RedshiftSettings -> Maybe Text
username :: Prelude.Maybe Prelude.Text,
    -- | The name of the intermediate S3 bucket used to store .csv files before
    -- uploading data to Redshift.
    RedshiftSettings -> Maybe Text
bucketName :: Prelude.Maybe Prelude.Text,
    -- | The type of server-side encryption that you want to use for your data.
    -- This encryption type is part of the endpoint settings or the extra
    -- connections attributes for Amazon S3. You can choose either @SSE_S3@
    -- (the default) or @SSE_KMS@.
    --
    -- For the @ModifyEndpoint@ operation, you can change the existing value of
    -- the @EncryptionMode@ parameter from @SSE_KMS@ to @SSE_S3@. But you can’t
    -- change the existing value from @SSE_S3@ to @SSE_KMS@.
    --
    -- To use @SSE_S3@, create an Identity and Access Management (IAM) role
    -- with a policy that allows @\"arn:aws:s3:::*\"@ to use the following
    -- actions: @\"s3:PutObject\", \"s3:ListBucket\"@
    RedshiftSettings -> Maybe EncryptionModeValue
encryptionMode :: Prelude.Maybe EncryptionModeValue,
    -- | The date format that you are using. Valid values are @auto@
    -- (case-sensitive), your date format string enclosed in quotes, or NULL.
    -- If this parameter is left unset (NULL), it defaults to a format of
    -- \'YYYY-MM-DD\'. Using @auto@ recognizes most strings, even some that
    -- aren\'t supported when you use a date format string.
    --
    -- If your date and time values use formats different from each other, set
    -- this to @auto@.
    RedshiftSettings -> Maybe Text
dateFormat :: Prelude.Maybe Prelude.Text,
    -- | A value that specifies to remove surrounding quotation marks from
    -- strings in the incoming data. All characters within the quotation marks,
    -- including delimiters, are retained. Choose @true@ to remove quotation
    -- marks. The default is @false@.
    RedshiftSettings -> Maybe Bool
removeQuotes :: Prelude.Maybe Prelude.Bool,
    -- | The password for the user named in the @username@ property.
    RedshiftSettings -> Maybe (Sensitive Text)
password :: Prelude.Maybe (Core.Sensitive Prelude.Text),
    -- | The name of the Amazon Redshift data warehouse (service) that you are
    -- working with.
    RedshiftSettings -> Maybe Text
databaseName :: Prelude.Maybe Prelude.Text,
    -- | A value that indicates to allow any date format, including invalid
    -- formats such as 00\/00\/00 00:00:00, to be loaded without generating an
    -- error. You can choose @true@ or @false@ (the default).
    --
    -- This parameter applies only to TIMESTAMP and DATE columns. Always use
    -- ACCEPTANYDATE with the DATEFORMAT parameter. If the date format for the
    -- data doesn\'t match the DATEFORMAT specification, Amazon Redshift
    -- inserts a NULL value into that field.
    RedshiftSettings -> Maybe Bool
acceptAnyDate :: Prelude.Maybe Prelude.Bool,
    -- | Code to run after connecting. This parameter should contain the code
    -- itself, not the name of a file containing the code.
    RedshiftSettings -> Maybe Text
afterConnectScript :: Prelude.Maybe Prelude.Text,
    -- | The full ARN, partial ARN, or friendly name of the
    -- @SecretsManagerSecret@ that contains the Amazon Redshift endpoint
    -- connection details.
    RedshiftSettings -> Maybe Text
secretsManagerSecretId :: Prelude.Maybe Prelude.Text,
    -- | The size (in KB) of the in-memory file write buffer used when generating
    -- .csv files on the local disk at the DMS replication instance. The
    -- default value is 1000 (buffer size is 1000KB).
    RedshiftSettings -> Maybe Int
writeBufferSize :: Prelude.Maybe Prelude.Int,
    -- | If you set @CompUpdate@ to @true@ Amazon Redshift applies automatic
    -- compression if the table is empty. This applies even if the table
    -- columns already have encodings other than @RAW@. If you set @CompUpdate@
    -- to @false@, automatic compression is disabled and existing column
    -- encodings aren\'t changed. The default is @true@.
    RedshiftSettings -> Maybe Bool
compUpdate :: Prelude.Maybe Prelude.Bool,
    -- | A value that specifies to remove the trailing white space characters
    -- from a VARCHAR string. This parameter applies only to columns with a
    -- VARCHAR data type. Choose @true@ to remove unneeded white space. The
    -- default is @false@.
    RedshiftSettings -> Maybe Bool
trimBlanks :: Prelude.Maybe Prelude.Bool,
    -- | The time format that you want to use. Valid values are @auto@
    -- (case-sensitive), @\'timeformat_string\'@, @\'epochsecs\'@, or
    -- @\'epochmillisecs\'@. It defaults to 10. Using @auto@ recognizes most
    -- strings, even some that aren\'t supported when you use a time format
    -- string.
    --
    -- If your date and time values use formats different from each other, set
    -- this parameter to @auto@.
    RedshiftSettings -> Maybe Text
timeFormat :: Prelude.Maybe Prelude.Text,
    -- | The KMS key ID. If you are using @SSE_KMS@ for the @EncryptionMode@,
    -- provide this key ID. The key that you use needs an attached policy that
    -- enables IAM user permissions and allows use of the key.
    RedshiftSettings -> Maybe Text
serverSideEncryptionKmsKeyId :: Prelude.Maybe Prelude.Text,
    -- | The port number for Amazon Redshift. The default value is 5439.
    RedshiftSettings -> Maybe Int
port :: Prelude.Maybe Prelude.Int,
    -- | The number of threads used to upload a single file. This parameter
    -- accepts a value from 1 through 64. It defaults to 10.
    --
    -- The number of parallel streams used to upload a single .csv file to an
    -- S3 bucket using S3 Multipart Upload. For more information, see
    -- <https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html Multipart upload overview>.
    --
    -- @FileTransferUploadStreams@ accepts a value from 1 through 64. It
    -- defaults to 10.
    RedshiftSettings -> Maybe Int
fileTransferUploadStreams :: Prelude.Maybe Prelude.Int
  }
  deriving (RedshiftSettings -> RedshiftSettings -> Bool
(RedshiftSettings -> RedshiftSettings -> Bool)
-> (RedshiftSettings -> RedshiftSettings -> Bool)
-> Eq RedshiftSettings
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RedshiftSettings -> RedshiftSettings -> Bool
$c/= :: RedshiftSettings -> RedshiftSettings -> Bool
== :: RedshiftSettings -> RedshiftSettings -> Bool
$c== :: RedshiftSettings -> RedshiftSettings -> Bool
Prelude.Eq, Int -> RedshiftSettings -> ShowS
[RedshiftSettings] -> ShowS
RedshiftSettings -> String
(Int -> RedshiftSettings -> ShowS)
-> (RedshiftSettings -> String)
-> ([RedshiftSettings] -> ShowS)
-> Show RedshiftSettings
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RedshiftSettings] -> ShowS
$cshowList :: [RedshiftSettings] -> ShowS
show :: RedshiftSettings -> String
$cshow :: RedshiftSettings -> String
showsPrec :: Int -> RedshiftSettings -> ShowS
$cshowsPrec :: Int -> RedshiftSettings -> ShowS
Prelude.Show, (forall x. RedshiftSettings -> Rep RedshiftSettings x)
-> (forall x. Rep RedshiftSettings x -> RedshiftSettings)
-> Generic RedshiftSettings
forall x. Rep RedshiftSettings x -> RedshiftSettings
forall x. RedshiftSettings -> Rep RedshiftSettings x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RedshiftSettings x -> RedshiftSettings
$cfrom :: forall x. RedshiftSettings -> Rep RedshiftSettings x
Prelude.Generic)

-- |
-- Create a value of 'RedshiftSettings' 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:
--
-- 'emptyAsNull', 'redshiftSettings_emptyAsNull' - A value that specifies whether DMS should migrate empty CHAR and VARCHAR
-- fields as NULL. A value of @true@ sets empty CHAR and VARCHAR fields to
-- null. The default is @false@.
--
-- 'caseSensitiveNames', 'redshiftSettings_caseSensitiveNames' - If Amazon Redshift is configured to support case sensitive schema names,
-- set @CaseSensitiveNames@ to @true@. The default is @false@.
--
-- 'maxFileSize', 'redshiftSettings_maxFileSize' - The maximum size (in KB) of any .csv file used to load data on an S3
-- bucket and transfer data to Amazon Redshift. It defaults to 1048576KB (1
-- GB).
--
-- 'replaceChars', 'redshiftSettings_replaceChars' - A value that specifies to replaces the invalid characters specified in
-- @ReplaceInvalidChars@, substituting the specified characters instead.
-- The default is @\"?\"@.
--
-- 'serverName', 'redshiftSettings_serverName' - The name of the Amazon Redshift cluster you are using.
--
-- 'connectionTimeout', 'redshiftSettings_connectionTimeout' - A value that sets the amount of time to wait (in milliseconds) before
-- timing out, beginning from when you initially establish a connection.
--
-- 'loadTimeout', 'redshiftSettings_loadTimeout' - The amount of time to wait (in milliseconds) before timing out of
-- operations performed by DMS on a Redshift cluster, such as Redshift
-- COPY, INSERT, DELETE, and UPDATE.
--
-- 'serviceAccessRoleArn', 'redshiftSettings_serviceAccessRoleArn' - The Amazon Resource Name (ARN) of the IAM role that has access to the
-- Amazon Redshift service. The role must allow the @iam:PassRole@ action.
--
-- 'explicitIds', 'redshiftSettings_explicitIds' - This setting is only valid for a full-load migration task. Set
-- @ExplicitIds@ to @true@ to have tables with @IDENTITY@ columns override
-- their auto-generated values with explicit values loaded from the source
-- data files used to populate the tables. The default is @false@.
--
-- 'bucketFolder', 'redshiftSettings_bucketFolder' - An S3 folder where the comma-separated-value (.csv) files are stored
-- before being uploaded to the target Redshift cluster.
--
-- For full load mode, DMS converts source records into .csv files and
-- loads them to the /BucketFolder\/TableID/ path. DMS uses the Redshift
-- @COPY@ command to upload the .csv files to the target table. The files
-- are deleted once the @COPY@ operation has finished. For more
-- information, see
-- <https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html COPY> in the
-- /Amazon Redshift Database Developer Guide/.
--
-- For change-data-capture (CDC) mode, DMS creates a /NetChanges/ table,
-- and loads the .csv files to this /BucketFolder\/NetChangesTableID/ path.
--
-- 'truncateColumns', 'redshiftSettings_truncateColumns' - A value that specifies to truncate data in columns to the appropriate
-- number of characters, so that the data fits in the column. This
-- parameter applies only to columns with a VARCHAR or CHAR data type, and
-- rows with a size of 4 MB or less. Choose @true@ to truncate data. The
-- default is @false@.
--
-- 'secretsManagerAccessRoleArn', 'redshiftSettings_secretsManagerAccessRoleArn' - The full Amazon Resource Name (ARN) of the IAM role that specifies DMS
-- as the trusted entity and grants the required permissions to access the
-- value in @SecretsManagerSecret@. The role must allow the @iam:PassRole@
-- action. @SecretsManagerSecret@ has the value of the Amazon Web Services
-- Secrets Manager secret that allows access to the Amazon Redshift
-- endpoint.
--
-- You can specify one of two sets of values for these permissions. You can
-- specify the values for this setting and @SecretsManagerSecretId@. Or you
-- can specify clear-text values for @UserName@, @Password@, @ServerName@,
-- and @Port@. You can\'t specify both. For more information on creating
-- this @SecretsManagerSecret@ and the @SecretsManagerAccessRoleArn@ and
-- @SecretsManagerSecretId@ required to access it, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Security.html#security-iam-secretsmanager Using secrets to access Database Migration Service resources>
-- in the /Database Migration Service User Guide/.
--
-- 'replaceInvalidChars', 'redshiftSettings_replaceInvalidChars' - A list of characters that you want to replace. Use with @ReplaceChars@.
--
-- 'username', 'redshiftSettings_username' - An Amazon Redshift user name for a registered user.
--
-- 'bucketName', 'redshiftSettings_bucketName' - The name of the intermediate S3 bucket used to store .csv files before
-- uploading data to Redshift.
--
-- 'encryptionMode', 'redshiftSettings_encryptionMode' - The type of server-side encryption that you want to use for your data.
-- This encryption type is part of the endpoint settings or the extra
-- connections attributes for Amazon S3. You can choose either @SSE_S3@
-- (the default) or @SSE_KMS@.
--
-- For the @ModifyEndpoint@ operation, you can change the existing value of
-- the @EncryptionMode@ parameter from @SSE_KMS@ to @SSE_S3@. But you can’t
-- change the existing value from @SSE_S3@ to @SSE_KMS@.
--
-- To use @SSE_S3@, create an Identity and Access Management (IAM) role
-- with a policy that allows @\"arn:aws:s3:::*\"@ to use the following
-- actions: @\"s3:PutObject\", \"s3:ListBucket\"@
--
-- 'dateFormat', 'redshiftSettings_dateFormat' - The date format that you are using. Valid values are @auto@
-- (case-sensitive), your date format string enclosed in quotes, or NULL.
-- If this parameter is left unset (NULL), it defaults to a format of
-- \'YYYY-MM-DD\'. Using @auto@ recognizes most strings, even some that
-- aren\'t supported when you use a date format string.
--
-- If your date and time values use formats different from each other, set
-- this to @auto@.
--
-- 'removeQuotes', 'redshiftSettings_removeQuotes' - A value that specifies to remove surrounding quotation marks from
-- strings in the incoming data. All characters within the quotation marks,
-- including delimiters, are retained. Choose @true@ to remove quotation
-- marks. The default is @false@.
--
-- 'password', 'redshiftSettings_password' - The password for the user named in the @username@ property.
--
-- 'databaseName', 'redshiftSettings_databaseName' - The name of the Amazon Redshift data warehouse (service) that you are
-- working with.
--
-- 'acceptAnyDate', 'redshiftSettings_acceptAnyDate' - A value that indicates to allow any date format, including invalid
-- formats such as 00\/00\/00 00:00:00, to be loaded without generating an
-- error. You can choose @true@ or @false@ (the default).
--
-- This parameter applies only to TIMESTAMP and DATE columns. Always use
-- ACCEPTANYDATE with the DATEFORMAT parameter. If the date format for the
-- data doesn\'t match the DATEFORMAT specification, Amazon Redshift
-- inserts a NULL value into that field.
--
-- 'afterConnectScript', 'redshiftSettings_afterConnectScript' - Code to run after connecting. This parameter should contain the code
-- itself, not the name of a file containing the code.
--
-- 'secretsManagerSecretId', 'redshiftSettings_secretsManagerSecretId' - The full ARN, partial ARN, or friendly name of the
-- @SecretsManagerSecret@ that contains the Amazon Redshift endpoint
-- connection details.
--
-- 'writeBufferSize', 'redshiftSettings_writeBufferSize' - The size (in KB) of the in-memory file write buffer used when generating
-- .csv files on the local disk at the DMS replication instance. The
-- default value is 1000 (buffer size is 1000KB).
--
-- 'compUpdate', 'redshiftSettings_compUpdate' - If you set @CompUpdate@ to @true@ Amazon Redshift applies automatic
-- compression if the table is empty. This applies even if the table
-- columns already have encodings other than @RAW@. If you set @CompUpdate@
-- to @false@, automatic compression is disabled and existing column
-- encodings aren\'t changed. The default is @true@.
--
-- 'trimBlanks', 'redshiftSettings_trimBlanks' - A value that specifies to remove the trailing white space characters
-- from a VARCHAR string. This parameter applies only to columns with a
-- VARCHAR data type. Choose @true@ to remove unneeded white space. The
-- default is @false@.
--
-- 'timeFormat', 'redshiftSettings_timeFormat' - The time format that you want to use. Valid values are @auto@
-- (case-sensitive), @\'timeformat_string\'@, @\'epochsecs\'@, or
-- @\'epochmillisecs\'@. It defaults to 10. Using @auto@ recognizes most
-- strings, even some that aren\'t supported when you use a time format
-- string.
--
-- If your date and time values use formats different from each other, set
-- this parameter to @auto@.
--
-- 'serverSideEncryptionKmsKeyId', 'redshiftSettings_serverSideEncryptionKmsKeyId' - The KMS key ID. If you are using @SSE_KMS@ for the @EncryptionMode@,
-- provide this key ID. The key that you use needs an attached policy that
-- enables IAM user permissions and allows use of the key.
--
-- 'port', 'redshiftSettings_port' - The port number for Amazon Redshift. The default value is 5439.
--
-- 'fileTransferUploadStreams', 'redshiftSettings_fileTransferUploadStreams' - The number of threads used to upload a single file. This parameter
-- accepts a value from 1 through 64. It defaults to 10.
--
-- The number of parallel streams used to upload a single .csv file to an
-- S3 bucket using S3 Multipart Upload. For more information, see
-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html Multipart upload overview>.
--
-- @FileTransferUploadStreams@ accepts a value from 1 through 64. It
-- defaults to 10.
newRedshiftSettings ::
  RedshiftSettings
newRedshiftSettings :: RedshiftSettings
newRedshiftSettings =
  RedshiftSettings' :: Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe EncryptionModeValue
-> Maybe Text
-> Maybe Bool
-> Maybe (Sensitive Text)
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> RedshiftSettings
RedshiftSettings'
    { $sel:emptyAsNull:RedshiftSettings' :: Maybe Bool
emptyAsNull = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:caseSensitiveNames:RedshiftSettings' :: Maybe Bool
caseSensitiveNames = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:maxFileSize:RedshiftSettings' :: Maybe Int
maxFileSize = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:replaceChars:RedshiftSettings' :: Maybe Text
replaceChars = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:serverName:RedshiftSettings' :: Maybe Text
serverName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:connectionTimeout:RedshiftSettings' :: Maybe Int
connectionTimeout = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:loadTimeout:RedshiftSettings' :: Maybe Int
loadTimeout = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:serviceAccessRoleArn:RedshiftSettings' :: Maybe Text
serviceAccessRoleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:explicitIds:RedshiftSettings' :: Maybe Bool
explicitIds = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:bucketFolder:RedshiftSettings' :: Maybe Text
bucketFolder = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:truncateColumns:RedshiftSettings' :: Maybe Bool
truncateColumns = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:secretsManagerAccessRoleArn:RedshiftSettings' :: Maybe Text
secretsManagerAccessRoleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:replaceInvalidChars:RedshiftSettings' :: Maybe Text
replaceInvalidChars = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:username:RedshiftSettings' :: Maybe Text
username = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:bucketName:RedshiftSettings' :: Maybe Text
bucketName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionMode:RedshiftSettings' :: Maybe EncryptionModeValue
encryptionMode = Maybe EncryptionModeValue
forall a. Maybe a
Prelude.Nothing,
      $sel:dateFormat:RedshiftSettings' :: Maybe Text
dateFormat = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:removeQuotes:RedshiftSettings' :: Maybe Bool
removeQuotes = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:password:RedshiftSettings' :: Maybe (Sensitive Text)
password = Maybe (Sensitive Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:databaseName:RedshiftSettings' :: Maybe Text
databaseName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:acceptAnyDate:RedshiftSettings' :: Maybe Bool
acceptAnyDate = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:afterConnectScript:RedshiftSettings' :: Maybe Text
afterConnectScript = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:secretsManagerSecretId:RedshiftSettings' :: Maybe Text
secretsManagerSecretId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:writeBufferSize:RedshiftSettings' :: Maybe Int
writeBufferSize = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:compUpdate:RedshiftSettings' :: Maybe Bool
compUpdate = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:trimBlanks:RedshiftSettings' :: Maybe Bool
trimBlanks = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:timeFormat:RedshiftSettings' :: Maybe Text
timeFormat = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:serverSideEncryptionKmsKeyId:RedshiftSettings' :: Maybe Text
serverSideEncryptionKmsKeyId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:port:RedshiftSettings' :: Maybe Int
port = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:fileTransferUploadStreams:RedshiftSettings' :: Maybe Int
fileTransferUploadStreams = Maybe Int
forall a. Maybe a
Prelude.Nothing
    }

-- | A value that specifies whether DMS should migrate empty CHAR and VARCHAR
-- fields as NULL. A value of @true@ sets empty CHAR and VARCHAR fields to
-- null. The default is @false@.
redshiftSettings_emptyAsNull :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Bool)
redshiftSettings_emptyAsNull :: (Maybe Bool -> f (Maybe Bool))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_emptyAsNull = (RedshiftSettings -> Maybe Bool)
-> (RedshiftSettings -> Maybe Bool -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Bool
emptyAsNull :: Maybe Bool
$sel:emptyAsNull:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
emptyAsNull} -> Maybe Bool
emptyAsNull) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Bool
a -> RedshiftSettings
s {$sel:emptyAsNull:RedshiftSettings' :: Maybe Bool
emptyAsNull = Maybe Bool
a} :: RedshiftSettings)

-- | If Amazon Redshift is configured to support case sensitive schema names,
-- set @CaseSensitiveNames@ to @true@. The default is @false@.
redshiftSettings_caseSensitiveNames :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Bool)
redshiftSettings_caseSensitiveNames :: (Maybe Bool -> f (Maybe Bool))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_caseSensitiveNames = (RedshiftSettings -> Maybe Bool)
-> (RedshiftSettings -> Maybe Bool -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Bool
caseSensitiveNames :: Maybe Bool
$sel:caseSensitiveNames:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
caseSensitiveNames} -> Maybe Bool
caseSensitiveNames) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Bool
a -> RedshiftSettings
s {$sel:caseSensitiveNames:RedshiftSettings' :: Maybe Bool
caseSensitiveNames = Maybe Bool
a} :: RedshiftSettings)

-- | The maximum size (in KB) of any .csv file used to load data on an S3
-- bucket and transfer data to Amazon Redshift. It defaults to 1048576KB (1
-- GB).
redshiftSettings_maxFileSize :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Int)
redshiftSettings_maxFileSize :: (Maybe Int -> f (Maybe Int))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_maxFileSize = (RedshiftSettings -> Maybe Int)
-> (RedshiftSettings -> Maybe Int -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Int
maxFileSize :: Maybe Int
$sel:maxFileSize:RedshiftSettings' :: RedshiftSettings -> Maybe Int
maxFileSize} -> Maybe Int
maxFileSize) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Int
a -> RedshiftSettings
s {$sel:maxFileSize:RedshiftSettings' :: Maybe Int
maxFileSize = Maybe Int
a} :: RedshiftSettings)

-- | A value that specifies to replaces the invalid characters specified in
-- @ReplaceInvalidChars@, substituting the specified characters instead.
-- The default is @\"?\"@.
redshiftSettings_replaceChars :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_replaceChars :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_replaceChars = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
replaceChars :: Maybe Text
$sel:replaceChars:RedshiftSettings' :: RedshiftSettings -> Maybe Text
replaceChars} -> Maybe Text
replaceChars) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:replaceChars:RedshiftSettings' :: Maybe Text
replaceChars = Maybe Text
a} :: RedshiftSettings)

-- | The name of the Amazon Redshift cluster you are using.
redshiftSettings_serverName :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_serverName :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_serverName = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
serverName :: Maybe Text
$sel:serverName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
serverName} -> Maybe Text
serverName) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:serverName:RedshiftSettings' :: Maybe Text
serverName = Maybe Text
a} :: RedshiftSettings)

-- | A value that sets the amount of time to wait (in milliseconds) before
-- timing out, beginning from when you initially establish a connection.
redshiftSettings_connectionTimeout :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Int)
redshiftSettings_connectionTimeout :: (Maybe Int -> f (Maybe Int))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_connectionTimeout = (RedshiftSettings -> Maybe Int)
-> (RedshiftSettings -> Maybe Int -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Int
connectionTimeout :: Maybe Int
$sel:connectionTimeout:RedshiftSettings' :: RedshiftSettings -> Maybe Int
connectionTimeout} -> Maybe Int
connectionTimeout) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Int
a -> RedshiftSettings
s {$sel:connectionTimeout:RedshiftSettings' :: Maybe Int
connectionTimeout = Maybe Int
a} :: RedshiftSettings)

-- | The amount of time to wait (in milliseconds) before timing out of
-- operations performed by DMS on a Redshift cluster, such as Redshift
-- COPY, INSERT, DELETE, and UPDATE.
redshiftSettings_loadTimeout :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Int)
redshiftSettings_loadTimeout :: (Maybe Int -> f (Maybe Int))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_loadTimeout = (RedshiftSettings -> Maybe Int)
-> (RedshiftSettings -> Maybe Int -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Int
loadTimeout :: Maybe Int
$sel:loadTimeout:RedshiftSettings' :: RedshiftSettings -> Maybe Int
loadTimeout} -> Maybe Int
loadTimeout) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Int
a -> RedshiftSettings
s {$sel:loadTimeout:RedshiftSettings' :: Maybe Int
loadTimeout = Maybe Int
a} :: RedshiftSettings)

-- | The Amazon Resource Name (ARN) of the IAM role that has access to the
-- Amazon Redshift service. The role must allow the @iam:PassRole@ action.
redshiftSettings_serviceAccessRoleArn :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_serviceAccessRoleArn :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_serviceAccessRoleArn = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
serviceAccessRoleArn :: Maybe Text
$sel:serviceAccessRoleArn:RedshiftSettings' :: RedshiftSettings -> Maybe Text
serviceAccessRoleArn} -> Maybe Text
serviceAccessRoleArn) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:serviceAccessRoleArn:RedshiftSettings' :: Maybe Text
serviceAccessRoleArn = Maybe Text
a} :: RedshiftSettings)

-- | This setting is only valid for a full-load migration task. Set
-- @ExplicitIds@ to @true@ to have tables with @IDENTITY@ columns override
-- their auto-generated values with explicit values loaded from the source
-- data files used to populate the tables. The default is @false@.
redshiftSettings_explicitIds :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Bool)
redshiftSettings_explicitIds :: (Maybe Bool -> f (Maybe Bool))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_explicitIds = (RedshiftSettings -> Maybe Bool)
-> (RedshiftSettings -> Maybe Bool -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Bool
explicitIds :: Maybe Bool
$sel:explicitIds:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
explicitIds} -> Maybe Bool
explicitIds) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Bool
a -> RedshiftSettings
s {$sel:explicitIds:RedshiftSettings' :: Maybe Bool
explicitIds = Maybe Bool
a} :: RedshiftSettings)

-- | An S3 folder where the comma-separated-value (.csv) files are stored
-- before being uploaded to the target Redshift cluster.
--
-- For full load mode, DMS converts source records into .csv files and
-- loads them to the /BucketFolder\/TableID/ path. DMS uses the Redshift
-- @COPY@ command to upload the .csv files to the target table. The files
-- are deleted once the @COPY@ operation has finished. For more
-- information, see
-- <https://docs.aws.amazon.com/redshift/latest/dg/r_COPY.html COPY> in the
-- /Amazon Redshift Database Developer Guide/.
--
-- For change-data-capture (CDC) mode, DMS creates a /NetChanges/ table,
-- and loads the .csv files to this /BucketFolder\/NetChangesTableID/ path.
redshiftSettings_bucketFolder :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_bucketFolder :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_bucketFolder = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
bucketFolder :: Maybe Text
$sel:bucketFolder:RedshiftSettings' :: RedshiftSettings -> Maybe Text
bucketFolder} -> Maybe Text
bucketFolder) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:bucketFolder:RedshiftSettings' :: Maybe Text
bucketFolder = Maybe Text
a} :: RedshiftSettings)

-- | A value that specifies to truncate data in columns to the appropriate
-- number of characters, so that the data fits in the column. This
-- parameter applies only to columns with a VARCHAR or CHAR data type, and
-- rows with a size of 4 MB or less. Choose @true@ to truncate data. The
-- default is @false@.
redshiftSettings_truncateColumns :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Bool)
redshiftSettings_truncateColumns :: (Maybe Bool -> f (Maybe Bool))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_truncateColumns = (RedshiftSettings -> Maybe Bool)
-> (RedshiftSettings -> Maybe Bool -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Bool
truncateColumns :: Maybe Bool
$sel:truncateColumns:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
truncateColumns} -> Maybe Bool
truncateColumns) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Bool
a -> RedshiftSettings
s {$sel:truncateColumns:RedshiftSettings' :: Maybe Bool
truncateColumns = Maybe Bool
a} :: RedshiftSettings)

-- | The full Amazon Resource Name (ARN) of the IAM role that specifies DMS
-- as the trusted entity and grants the required permissions to access the
-- value in @SecretsManagerSecret@. The role must allow the @iam:PassRole@
-- action. @SecretsManagerSecret@ has the value of the Amazon Web Services
-- Secrets Manager secret that allows access to the Amazon Redshift
-- endpoint.
--
-- You can specify one of two sets of values for these permissions. You can
-- specify the values for this setting and @SecretsManagerSecretId@. Or you
-- can specify clear-text values for @UserName@, @Password@, @ServerName@,
-- and @Port@. You can\'t specify both. For more information on creating
-- this @SecretsManagerSecret@ and the @SecretsManagerAccessRoleArn@ and
-- @SecretsManagerSecretId@ required to access it, see
-- <https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Security.html#security-iam-secretsmanager Using secrets to access Database Migration Service resources>
-- in the /Database Migration Service User Guide/.
redshiftSettings_secretsManagerAccessRoleArn :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_secretsManagerAccessRoleArn :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_secretsManagerAccessRoleArn = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
secretsManagerAccessRoleArn :: Maybe Text
$sel:secretsManagerAccessRoleArn:RedshiftSettings' :: RedshiftSettings -> Maybe Text
secretsManagerAccessRoleArn} -> Maybe Text
secretsManagerAccessRoleArn) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:secretsManagerAccessRoleArn:RedshiftSettings' :: Maybe Text
secretsManagerAccessRoleArn = Maybe Text
a} :: RedshiftSettings)

-- | A list of characters that you want to replace. Use with @ReplaceChars@.
redshiftSettings_replaceInvalidChars :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_replaceInvalidChars :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_replaceInvalidChars = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
replaceInvalidChars :: Maybe Text
$sel:replaceInvalidChars:RedshiftSettings' :: RedshiftSettings -> Maybe Text
replaceInvalidChars} -> Maybe Text
replaceInvalidChars) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:replaceInvalidChars:RedshiftSettings' :: Maybe Text
replaceInvalidChars = Maybe Text
a} :: RedshiftSettings)

-- | An Amazon Redshift user name for a registered user.
redshiftSettings_username :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_username :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_username = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
username :: Maybe Text
$sel:username:RedshiftSettings' :: RedshiftSettings -> Maybe Text
username} -> Maybe Text
username) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:username:RedshiftSettings' :: Maybe Text
username = Maybe Text
a} :: RedshiftSettings)

-- | The name of the intermediate S3 bucket used to store .csv files before
-- uploading data to Redshift.
redshiftSettings_bucketName :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_bucketName :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_bucketName = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
bucketName :: Maybe Text
$sel:bucketName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
bucketName} -> Maybe Text
bucketName) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:bucketName:RedshiftSettings' :: Maybe Text
bucketName = Maybe Text
a} :: RedshiftSettings)

-- | The type of server-side encryption that you want to use for your data.
-- This encryption type is part of the endpoint settings or the extra
-- connections attributes for Amazon S3. You can choose either @SSE_S3@
-- (the default) or @SSE_KMS@.
--
-- For the @ModifyEndpoint@ operation, you can change the existing value of
-- the @EncryptionMode@ parameter from @SSE_KMS@ to @SSE_S3@. But you can’t
-- change the existing value from @SSE_S3@ to @SSE_KMS@.
--
-- To use @SSE_S3@, create an Identity and Access Management (IAM) role
-- with a policy that allows @\"arn:aws:s3:::*\"@ to use the following
-- actions: @\"s3:PutObject\", \"s3:ListBucket\"@
redshiftSettings_encryptionMode :: Lens.Lens' RedshiftSettings (Prelude.Maybe EncryptionModeValue)
redshiftSettings_encryptionMode :: (Maybe EncryptionModeValue -> f (Maybe EncryptionModeValue))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_encryptionMode = (RedshiftSettings -> Maybe EncryptionModeValue)
-> (RedshiftSettings
    -> Maybe EncryptionModeValue -> RedshiftSettings)
-> Lens
     RedshiftSettings
     RedshiftSettings
     (Maybe EncryptionModeValue)
     (Maybe EncryptionModeValue)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe EncryptionModeValue
encryptionMode :: Maybe EncryptionModeValue
$sel:encryptionMode:RedshiftSettings' :: RedshiftSettings -> Maybe EncryptionModeValue
encryptionMode} -> Maybe EncryptionModeValue
encryptionMode) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe EncryptionModeValue
a -> RedshiftSettings
s {$sel:encryptionMode:RedshiftSettings' :: Maybe EncryptionModeValue
encryptionMode = Maybe EncryptionModeValue
a} :: RedshiftSettings)

-- | The date format that you are using. Valid values are @auto@
-- (case-sensitive), your date format string enclosed in quotes, or NULL.
-- If this parameter is left unset (NULL), it defaults to a format of
-- \'YYYY-MM-DD\'. Using @auto@ recognizes most strings, even some that
-- aren\'t supported when you use a date format string.
--
-- If your date and time values use formats different from each other, set
-- this to @auto@.
redshiftSettings_dateFormat :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_dateFormat :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_dateFormat = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
dateFormat :: Maybe Text
$sel:dateFormat:RedshiftSettings' :: RedshiftSettings -> Maybe Text
dateFormat} -> Maybe Text
dateFormat) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:dateFormat:RedshiftSettings' :: Maybe Text
dateFormat = Maybe Text
a} :: RedshiftSettings)

-- | A value that specifies to remove surrounding quotation marks from
-- strings in the incoming data. All characters within the quotation marks,
-- including delimiters, are retained. Choose @true@ to remove quotation
-- marks. The default is @false@.
redshiftSettings_removeQuotes :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Bool)
redshiftSettings_removeQuotes :: (Maybe Bool -> f (Maybe Bool))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_removeQuotes = (RedshiftSettings -> Maybe Bool)
-> (RedshiftSettings -> Maybe Bool -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Bool
removeQuotes :: Maybe Bool
$sel:removeQuotes:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
removeQuotes} -> Maybe Bool
removeQuotes) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Bool
a -> RedshiftSettings
s {$sel:removeQuotes:RedshiftSettings' :: Maybe Bool
removeQuotes = Maybe Bool
a} :: RedshiftSettings)

-- | The password for the user named in the @username@ property.
redshiftSettings_password :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_password :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_password = (RedshiftSettings -> Maybe (Sensitive Text))
-> (RedshiftSettings -> Maybe (Sensitive Text) -> RedshiftSettings)
-> Lens
     RedshiftSettings
     RedshiftSettings
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe (Sensitive Text)
password :: Maybe (Sensitive Text)
$sel:password:RedshiftSettings' :: RedshiftSettings -> Maybe (Sensitive Text)
password} -> Maybe (Sensitive Text)
password) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe (Sensitive Text)
a -> RedshiftSettings
s {$sel:password:RedshiftSettings' :: Maybe (Sensitive Text)
password = Maybe (Sensitive Text)
a} :: RedshiftSettings) ((Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
 -> RedshiftSettings -> f RedshiftSettings)
-> ((Maybe Text -> f (Maybe Text))
    -> Maybe (Sensitive Text) -> f (Maybe (Sensitive Text)))
-> (Maybe Text -> f (Maybe Text))
-> RedshiftSettings
-> f RedshiftSettings
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso (Sensitive Text) (Sensitive Text) Text Text
-> Iso
     (Maybe (Sensitive Text))
     (Maybe (Sensitive Text))
     (Maybe Text)
     (Maybe Text)
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso (Sensitive Text) (Sensitive Text) Text Text
forall a. Iso' (Sensitive a) a
Core._Sensitive

-- | The name of the Amazon Redshift data warehouse (service) that you are
-- working with.
redshiftSettings_databaseName :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_databaseName :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_databaseName = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
databaseName :: Maybe Text
$sel:databaseName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
databaseName} -> Maybe Text
databaseName) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:databaseName:RedshiftSettings' :: Maybe Text
databaseName = Maybe Text
a} :: RedshiftSettings)

-- | A value that indicates to allow any date format, including invalid
-- formats such as 00\/00\/00 00:00:00, to be loaded without generating an
-- error. You can choose @true@ or @false@ (the default).
--
-- This parameter applies only to TIMESTAMP and DATE columns. Always use
-- ACCEPTANYDATE with the DATEFORMAT parameter. If the date format for the
-- data doesn\'t match the DATEFORMAT specification, Amazon Redshift
-- inserts a NULL value into that field.
redshiftSettings_acceptAnyDate :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Bool)
redshiftSettings_acceptAnyDate :: (Maybe Bool -> f (Maybe Bool))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_acceptAnyDate = (RedshiftSettings -> Maybe Bool)
-> (RedshiftSettings -> Maybe Bool -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Bool
acceptAnyDate :: Maybe Bool
$sel:acceptAnyDate:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
acceptAnyDate} -> Maybe Bool
acceptAnyDate) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Bool
a -> RedshiftSettings
s {$sel:acceptAnyDate:RedshiftSettings' :: Maybe Bool
acceptAnyDate = Maybe Bool
a} :: RedshiftSettings)

-- | Code to run after connecting. This parameter should contain the code
-- itself, not the name of a file containing the code.
redshiftSettings_afterConnectScript :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_afterConnectScript :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_afterConnectScript = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
afterConnectScript :: Maybe Text
$sel:afterConnectScript:RedshiftSettings' :: RedshiftSettings -> Maybe Text
afterConnectScript} -> Maybe Text
afterConnectScript) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:afterConnectScript:RedshiftSettings' :: Maybe Text
afterConnectScript = Maybe Text
a} :: RedshiftSettings)

-- | The full ARN, partial ARN, or friendly name of the
-- @SecretsManagerSecret@ that contains the Amazon Redshift endpoint
-- connection details.
redshiftSettings_secretsManagerSecretId :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_secretsManagerSecretId :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_secretsManagerSecretId = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
secretsManagerSecretId :: Maybe Text
$sel:secretsManagerSecretId:RedshiftSettings' :: RedshiftSettings -> Maybe Text
secretsManagerSecretId} -> Maybe Text
secretsManagerSecretId) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:secretsManagerSecretId:RedshiftSettings' :: Maybe Text
secretsManagerSecretId = Maybe Text
a} :: RedshiftSettings)

-- | The size (in KB) of the in-memory file write buffer used when generating
-- .csv files on the local disk at the DMS replication instance. The
-- default value is 1000 (buffer size is 1000KB).
redshiftSettings_writeBufferSize :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Int)
redshiftSettings_writeBufferSize :: (Maybe Int -> f (Maybe Int))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_writeBufferSize = (RedshiftSettings -> Maybe Int)
-> (RedshiftSettings -> Maybe Int -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Int
writeBufferSize :: Maybe Int
$sel:writeBufferSize:RedshiftSettings' :: RedshiftSettings -> Maybe Int
writeBufferSize} -> Maybe Int
writeBufferSize) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Int
a -> RedshiftSettings
s {$sel:writeBufferSize:RedshiftSettings' :: Maybe Int
writeBufferSize = Maybe Int
a} :: RedshiftSettings)

-- | If you set @CompUpdate@ to @true@ Amazon Redshift applies automatic
-- compression if the table is empty. This applies even if the table
-- columns already have encodings other than @RAW@. If you set @CompUpdate@
-- to @false@, automatic compression is disabled and existing column
-- encodings aren\'t changed. The default is @true@.
redshiftSettings_compUpdate :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Bool)
redshiftSettings_compUpdate :: (Maybe Bool -> f (Maybe Bool))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_compUpdate = (RedshiftSettings -> Maybe Bool)
-> (RedshiftSettings -> Maybe Bool -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Bool
compUpdate :: Maybe Bool
$sel:compUpdate:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
compUpdate} -> Maybe Bool
compUpdate) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Bool
a -> RedshiftSettings
s {$sel:compUpdate:RedshiftSettings' :: Maybe Bool
compUpdate = Maybe Bool
a} :: RedshiftSettings)

-- | A value that specifies to remove the trailing white space characters
-- from a VARCHAR string. This parameter applies only to columns with a
-- VARCHAR data type. Choose @true@ to remove unneeded white space. The
-- default is @false@.
redshiftSettings_trimBlanks :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Bool)
redshiftSettings_trimBlanks :: (Maybe Bool -> f (Maybe Bool))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_trimBlanks = (RedshiftSettings -> Maybe Bool)
-> (RedshiftSettings -> Maybe Bool -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Bool
trimBlanks :: Maybe Bool
$sel:trimBlanks:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
trimBlanks} -> Maybe Bool
trimBlanks) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Bool
a -> RedshiftSettings
s {$sel:trimBlanks:RedshiftSettings' :: Maybe Bool
trimBlanks = Maybe Bool
a} :: RedshiftSettings)

-- | The time format that you want to use. Valid values are @auto@
-- (case-sensitive), @\'timeformat_string\'@, @\'epochsecs\'@, or
-- @\'epochmillisecs\'@. It defaults to 10. Using @auto@ recognizes most
-- strings, even some that aren\'t supported when you use a time format
-- string.
--
-- If your date and time values use formats different from each other, set
-- this parameter to @auto@.
redshiftSettings_timeFormat :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_timeFormat :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_timeFormat = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
timeFormat :: Maybe Text
$sel:timeFormat:RedshiftSettings' :: RedshiftSettings -> Maybe Text
timeFormat} -> Maybe Text
timeFormat) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:timeFormat:RedshiftSettings' :: Maybe Text
timeFormat = Maybe Text
a} :: RedshiftSettings)

-- | The KMS key ID. If you are using @SSE_KMS@ for the @EncryptionMode@,
-- provide this key ID. The key that you use needs an attached policy that
-- enables IAM user permissions and allows use of the key.
redshiftSettings_serverSideEncryptionKmsKeyId :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_serverSideEncryptionKmsKeyId :: (Maybe Text -> f (Maybe Text))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_serverSideEncryptionKmsKeyId = (RedshiftSettings -> Maybe Text)
-> (RedshiftSettings -> Maybe Text -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Text
serverSideEncryptionKmsKeyId :: Maybe Text
$sel:serverSideEncryptionKmsKeyId:RedshiftSettings' :: RedshiftSettings -> Maybe Text
serverSideEncryptionKmsKeyId} -> Maybe Text
serverSideEncryptionKmsKeyId) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Text
a -> RedshiftSettings
s {$sel:serverSideEncryptionKmsKeyId:RedshiftSettings' :: Maybe Text
serverSideEncryptionKmsKeyId = Maybe Text
a} :: RedshiftSettings)

-- | The port number for Amazon Redshift. The default value is 5439.
redshiftSettings_port :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Int)
redshiftSettings_port :: (Maybe Int -> f (Maybe Int))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_port = (RedshiftSettings -> Maybe Int)
-> (RedshiftSettings -> Maybe Int -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Int
port :: Maybe Int
$sel:port:RedshiftSettings' :: RedshiftSettings -> Maybe Int
port} -> Maybe Int
port) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Int
a -> RedshiftSettings
s {$sel:port:RedshiftSettings' :: Maybe Int
port = Maybe Int
a} :: RedshiftSettings)

-- | The number of threads used to upload a single file. This parameter
-- accepts a value from 1 through 64. It defaults to 10.
--
-- The number of parallel streams used to upload a single .csv file to an
-- S3 bucket using S3 Multipart Upload. For more information, see
-- <https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html Multipart upload overview>.
--
-- @FileTransferUploadStreams@ accepts a value from 1 through 64. It
-- defaults to 10.
redshiftSettings_fileTransferUploadStreams :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Int)
redshiftSettings_fileTransferUploadStreams :: (Maybe Int -> f (Maybe Int))
-> RedshiftSettings -> f RedshiftSettings
redshiftSettings_fileTransferUploadStreams = (RedshiftSettings -> Maybe Int)
-> (RedshiftSettings -> Maybe Int -> RedshiftSettings)
-> Lens RedshiftSettings RedshiftSettings (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RedshiftSettings' {Maybe Int
fileTransferUploadStreams :: Maybe Int
$sel:fileTransferUploadStreams:RedshiftSettings' :: RedshiftSettings -> Maybe Int
fileTransferUploadStreams} -> Maybe Int
fileTransferUploadStreams) (\s :: RedshiftSettings
s@RedshiftSettings' {} Maybe Int
a -> RedshiftSettings
s {$sel:fileTransferUploadStreams:RedshiftSettings' :: Maybe Int
fileTransferUploadStreams = Maybe Int
a} :: RedshiftSettings)

instance Core.FromJSON RedshiftSettings where
  parseJSON :: Value -> Parser RedshiftSettings
parseJSON =
    String
-> (Object -> Parser RedshiftSettings)
-> Value
-> Parser RedshiftSettings
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"RedshiftSettings"
      ( \Object
x ->
          Maybe Bool
-> Maybe Bool
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe EncryptionModeValue
-> Maybe Text
-> Maybe Bool
-> Maybe (Sensitive Text)
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> RedshiftSettings
RedshiftSettings'
            (Maybe Bool
 -> Maybe Bool
 -> Maybe Int
 -> Maybe Text
 -> Maybe Text
 -> Maybe Int
 -> Maybe Int
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe EncryptionModeValue
 -> Maybe Text
 -> Maybe Bool
 -> Maybe (Sensitive Text)
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Int
 -> Maybe Bool
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> Maybe Int
 -> Maybe Int
 -> RedshiftSettings)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Bool
      -> Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EmptyAsNull")
            Parser
  (Maybe Bool
   -> Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CaseSensitiveNames")
            Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MaxFileSize")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReplaceChars")
            Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ServerName")
            Parser
  (Maybe Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ConnectionTimeout")
            Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LoadTimeout")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ServiceAccessRoleArn")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ExplicitIds")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"BucketFolder")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TruncateColumns")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SecretsManagerAccessRoleArn")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ReplaceInvalidChars")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Username")
            Parser
  (Maybe Text
   -> Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe EncryptionModeValue
      -> Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"BucketName")
            Parser
  (Maybe EncryptionModeValue
   -> Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe EncryptionModeValue)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EncryptionModeValue)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"EncryptionMode")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DateFormat")
            Parser
  (Maybe Bool
   -> Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Bool)
-> Parser
     (Maybe (Sensitive Text)
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RemoveQuotes")
            Parser
  (Maybe (Sensitive Text)
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe (Sensitive Text))
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Sensitive Text))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Password")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"DatabaseName")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AcceptAnyDate")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AfterConnectScript")
            Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"SecretsManagerSecretId")
            Parser
  (Maybe Int
   -> Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Int)
-> Parser
     (Maybe Bool
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"WriteBufferSize")
            Parser
  (Maybe Bool
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> Maybe Int
      -> Maybe Int
      -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CompUpdate")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> Maybe Int
   -> Maybe Int
   -> RedshiftSettings)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe Text -> Maybe Int -> Maybe Int -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrimBlanks")
            Parser
  (Maybe Text
   -> Maybe Text -> Maybe Int -> Maybe Int -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text -> Maybe Int -> Maybe Int -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TimeFormat")
            Parser (Maybe Text -> Maybe Int -> Maybe Int -> RedshiftSettings)
-> Parser (Maybe Text)
-> Parser (Maybe Int -> Maybe Int -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ServerSideEncryptionKmsKeyId")
            Parser (Maybe Int -> Maybe Int -> RedshiftSettings)
-> Parser (Maybe Int) -> Parser (Maybe Int -> RedshiftSettings)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Port")
            Parser (Maybe Int -> RedshiftSettings)
-> Parser (Maybe Int) -> Parser RedshiftSettings
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FileTransferUploadStreams")
      )

instance Prelude.Hashable RedshiftSettings

instance Prelude.NFData RedshiftSettings

instance Core.ToJSON RedshiftSettings where
  toJSON :: RedshiftSettings -> Value
toJSON RedshiftSettings' {Maybe Bool
Maybe Int
Maybe Text
Maybe (Sensitive Text)
Maybe EncryptionModeValue
fileTransferUploadStreams :: Maybe Int
port :: Maybe Int
serverSideEncryptionKmsKeyId :: Maybe Text
timeFormat :: Maybe Text
trimBlanks :: Maybe Bool
compUpdate :: Maybe Bool
writeBufferSize :: Maybe Int
secretsManagerSecretId :: Maybe Text
afterConnectScript :: Maybe Text
acceptAnyDate :: Maybe Bool
databaseName :: Maybe Text
password :: Maybe (Sensitive Text)
removeQuotes :: Maybe Bool
dateFormat :: Maybe Text
encryptionMode :: Maybe EncryptionModeValue
bucketName :: Maybe Text
username :: Maybe Text
replaceInvalidChars :: Maybe Text
secretsManagerAccessRoleArn :: Maybe Text
truncateColumns :: Maybe Bool
bucketFolder :: Maybe Text
explicitIds :: Maybe Bool
serviceAccessRoleArn :: Maybe Text
loadTimeout :: Maybe Int
connectionTimeout :: Maybe Int
serverName :: Maybe Text
replaceChars :: Maybe Text
maxFileSize :: Maybe Int
caseSensitiveNames :: Maybe Bool
emptyAsNull :: Maybe Bool
$sel:fileTransferUploadStreams:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:port:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:serverSideEncryptionKmsKeyId:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:timeFormat:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:trimBlanks:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:compUpdate:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:writeBufferSize:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:secretsManagerSecretId:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:afterConnectScript:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:acceptAnyDate:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:databaseName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:password:RedshiftSettings' :: RedshiftSettings -> Maybe (Sensitive Text)
$sel:removeQuotes:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:dateFormat:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:encryptionMode:RedshiftSettings' :: RedshiftSettings -> Maybe EncryptionModeValue
$sel:bucketName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:username:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:replaceInvalidChars:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:secretsManagerAccessRoleArn:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:truncateColumns:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:bucketFolder:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:explicitIds:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:serviceAccessRoleArn:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:loadTimeout:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:connectionTimeout:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:serverName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:replaceChars:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:maxFileSize:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:caseSensitiveNames:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:emptyAsNull:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"EmptyAsNull" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
emptyAsNull,
            (Text
"CaseSensitiveNames" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
caseSensitiveNames,
            (Text
"MaxFileSize" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
maxFileSize,
            (Text
"ReplaceChars" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
replaceChars,
            (Text
"ServerName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
serverName,
            (Text
"ConnectionTimeout" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
connectionTimeout,
            (Text
"LoadTimeout" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
loadTimeout,
            (Text
"ServiceAccessRoleArn" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
serviceAccessRoleArn,
            (Text
"ExplicitIds" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
explicitIds,
            (Text
"BucketFolder" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
bucketFolder,
            (Text
"TruncateColumns" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
truncateColumns,
            (Text
"SecretsManagerAccessRoleArn" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
secretsManagerAccessRoleArn,
            (Text
"ReplaceInvalidChars" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
replaceInvalidChars,
            (Text
"Username" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
username,
            (Text
"BucketName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
bucketName,
            (Text
"EncryptionMode" Text -> EncryptionModeValue -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (EncryptionModeValue -> Pair)
-> Maybe EncryptionModeValue -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EncryptionModeValue
encryptionMode,
            (Text
"DateFormat" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
dateFormat,
            (Text
"RemoveQuotes" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
removeQuotes,
            (Text
"Password" Text -> Sensitive Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Sensitive Text -> Pair) -> Maybe (Sensitive Text) -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Sensitive Text)
password,
            (Text
"DatabaseName" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
databaseName,
            (Text
"AcceptAnyDate" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
acceptAnyDate,
            (Text
"AfterConnectScript" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
afterConnectScript,
            (Text
"SecretsManagerSecretId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
secretsManagerSecretId,
            (Text
"WriteBufferSize" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
writeBufferSize,
            (Text
"CompUpdate" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
compUpdate,
            (Text
"TrimBlanks" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
trimBlanks,
            (Text
"TimeFormat" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
timeFormat,
            (Text
"ServerSideEncryptionKmsKeyId" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Text -> Pair) -> Maybe Text -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
serverSideEncryptionKmsKeyId,
            (Text
"Port" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
port,
            (Text
"FileTransferUploadStreams" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
fileTransferUploadStreams
          ]
      )