{-# 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-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.DMS.Types.RedshiftSettings where

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

-- | Provides information that defines an Amazon Redshift endpoint.
--
-- /See:/ 'newRedshiftSettings' smart constructor.
data RedshiftSettings = 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 -> 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,
    -- | 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,
    -- | 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,
    -- | 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,
    -- | 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 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 name of the Amazon Redshift data warehouse (service) that you are
    -- working with.
    RedshiftSettings -> Maybe Text
databaseName :: Prelude.Maybe Prelude.Text,
    -- | 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 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,
    -- | 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,
    -- | 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,
    -- | 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,
    -- | 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 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,
    -- | The password for the user named in the @username@ property.
    RedshiftSettings -> Maybe (Sensitive Text)
password :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The port number for Amazon Redshift. The default value is 5439.
    RedshiftSettings -> Maybe Int
port :: Prelude.Maybe Prelude.Int,
    -- | 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,
    -- | 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,
    -- | A list of characters that you want to replace. Use with @ReplaceChars@.
    RedshiftSettings -> Maybe Text
replaceInvalidChars :: Prelude.Maybe Prelude.Text,
    -- | 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,
    -- | 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 name of the Amazon Redshift cluster you are using.
    RedshiftSettings -> Maybe Text
serverName :: 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 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,
    -- | 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,
    -- | 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,
    -- | 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,
    -- | An Amazon Redshift user name for a registered user.
    RedshiftSettings -> Maybe Text
username :: 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
  }
  deriving (RedshiftSettings -> RedshiftSettings -> Bool
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
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. 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:
--
-- '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.
--
-- '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.
--
-- 'bucketName', 'redshiftSettings_bucketName' - The name of the intermediate S3 bucket used to store .csv files before
-- uploading data to Redshift.
--
-- 'caseSensitiveNames', 'redshiftSettings_caseSensitiveNames' - If Amazon Redshift is configured to support case sensitive schema names,
-- set @CaseSensitiveNames@ to @true@. The default is @false@.
--
-- '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@.
--
-- '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.
--
-- 'databaseName', 'redshiftSettings_databaseName' - The name of the Amazon Redshift data warehouse (service) that you are
-- working with.
--
-- '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@.
--
-- '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@.
--
-- '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\"@
--
-- '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@.
--
-- '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.
--
-- '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.
--
-- '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).
--
-- 'password', 'redshiftSettings_password' - The password for the user named in the @username@ property.
--
-- 'port', 'redshiftSettings_port' - The port number for Amazon Redshift. The default value is 5439.
--
-- '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@.
--
-- 'replaceChars', 'redshiftSettings_replaceChars' - A value that specifies to replaces the invalid characters specified in
-- @ReplaceInvalidChars@, substituting the specified characters instead.
-- The default is @\"?\"@.
--
-- 'replaceInvalidChars', 'redshiftSettings_replaceInvalidChars' - A list of characters that you want to replace. Use with @ReplaceChars@.
--
-- '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/.
--
-- 'secretsManagerSecretId', 'redshiftSettings_secretsManagerSecretId' - The full ARN, partial ARN, or friendly name of the
-- @SecretsManagerSecret@ that contains the Amazon Redshift endpoint
-- connection details.
--
-- 'serverName', 'redshiftSettings_serverName' - The name of the Amazon Redshift cluster you are using.
--
-- '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.
--
-- '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.
--
-- '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@.
--
-- '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@.
--
-- '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@.
--
-- 'username', 'redshiftSettings_username' - An Amazon Redshift user name for a registered user.
--
-- '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).
newRedshiftSettings ::
  RedshiftSettings
newRedshiftSettings :: RedshiftSettings
newRedshiftSettings =
  RedshiftSettings'
    { $sel:acceptAnyDate:RedshiftSettings' :: Maybe Bool
acceptAnyDate = forall a. Maybe a
Prelude.Nothing,
      $sel:afterConnectScript:RedshiftSettings' :: Maybe Text
afterConnectScript = forall a. Maybe a
Prelude.Nothing,
      $sel:bucketFolder:RedshiftSettings' :: Maybe Text
bucketFolder = forall a. Maybe a
Prelude.Nothing,
      $sel:bucketName:RedshiftSettings' :: Maybe Text
bucketName = forall a. Maybe a
Prelude.Nothing,
      $sel:caseSensitiveNames:RedshiftSettings' :: Maybe Bool
caseSensitiveNames = forall a. Maybe a
Prelude.Nothing,
      $sel:compUpdate:RedshiftSettings' :: Maybe Bool
compUpdate = forall a. Maybe a
Prelude.Nothing,
      $sel:connectionTimeout:RedshiftSettings' :: Maybe Int
connectionTimeout = forall a. Maybe a
Prelude.Nothing,
      $sel:databaseName:RedshiftSettings' :: Maybe Text
databaseName = forall a. Maybe a
Prelude.Nothing,
      $sel:dateFormat:RedshiftSettings' :: Maybe Text
dateFormat = forall a. Maybe a
Prelude.Nothing,
      $sel:emptyAsNull:RedshiftSettings' :: Maybe Bool
emptyAsNull = forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionMode:RedshiftSettings' :: Maybe EncryptionModeValue
encryptionMode = forall a. Maybe a
Prelude.Nothing,
      $sel:explicitIds:RedshiftSettings' :: Maybe Bool
explicitIds = forall a. Maybe a
Prelude.Nothing,
      $sel:fileTransferUploadStreams:RedshiftSettings' :: Maybe Int
fileTransferUploadStreams = forall a. Maybe a
Prelude.Nothing,
      $sel:loadTimeout:RedshiftSettings' :: Maybe Int
loadTimeout = forall a. Maybe a
Prelude.Nothing,
      $sel:maxFileSize:RedshiftSettings' :: Maybe Int
maxFileSize = forall a. Maybe a
Prelude.Nothing,
      $sel:password:RedshiftSettings' :: Maybe (Sensitive Text)
password = forall a. Maybe a
Prelude.Nothing,
      $sel:port:RedshiftSettings' :: Maybe Int
port = forall a. Maybe a
Prelude.Nothing,
      $sel:removeQuotes:RedshiftSettings' :: Maybe Bool
removeQuotes = forall a. Maybe a
Prelude.Nothing,
      $sel:replaceChars:RedshiftSettings' :: Maybe Text
replaceChars = forall a. Maybe a
Prelude.Nothing,
      $sel:replaceInvalidChars:RedshiftSettings' :: Maybe Text
replaceInvalidChars = forall a. Maybe a
Prelude.Nothing,
      $sel:secretsManagerAccessRoleArn:RedshiftSettings' :: Maybe Text
secretsManagerAccessRoleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:secretsManagerSecretId:RedshiftSettings' :: Maybe Text
secretsManagerSecretId = forall a. Maybe a
Prelude.Nothing,
      $sel:serverName:RedshiftSettings' :: Maybe Text
serverName = forall a. Maybe a
Prelude.Nothing,
      $sel:serverSideEncryptionKmsKeyId:RedshiftSettings' :: Maybe Text
serverSideEncryptionKmsKeyId = forall a. Maybe a
Prelude.Nothing,
      $sel:serviceAccessRoleArn:RedshiftSettings' :: Maybe Text
serviceAccessRoleArn = forall a. Maybe a
Prelude.Nothing,
      $sel:timeFormat:RedshiftSettings' :: Maybe Text
timeFormat = forall a. Maybe a
Prelude.Nothing,
      $sel:trimBlanks:RedshiftSettings' :: Maybe Bool
trimBlanks = forall a. Maybe a
Prelude.Nothing,
      $sel:truncateColumns:RedshiftSettings' :: Maybe Bool
truncateColumns = forall a. Maybe a
Prelude.Nothing,
      $sel:username:RedshiftSettings' :: Maybe Text
username = forall a. Maybe a
Prelude.Nothing,
      $sel:writeBufferSize:RedshiftSettings' :: Maybe Int
writeBufferSize = forall a. Maybe a
Prelude.Nothing
    }

-- | 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 :: Lens' RedshiftSettings (Maybe Bool)
redshiftSettings_acceptAnyDate = 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 :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_afterConnectScript = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_bucketFolder = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_bucketName = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Bool)
redshiftSettings_caseSensitiveNames = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Bool)
redshiftSettings_compUpdate = 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 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 :: Lens' RedshiftSettings (Maybe Int)
redshiftSettings_connectionTimeout = 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 name of the Amazon Redshift data warehouse (service) that you are
-- working with.
redshiftSettings_databaseName :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_databaseName :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_databaseName = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_dateFormat = 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 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 :: Lens' RedshiftSettings (Maybe Bool)
redshiftSettings_emptyAsNull = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe EncryptionModeValue)
redshiftSettings_encryptionMode = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Bool)
redshiftSettings_explicitIds = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Int)
redshiftSettings_fileTransferUploadStreams = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Int)
redshiftSettings_loadTimeout = 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 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 :: Lens' RedshiftSettings (Maybe Int)
redshiftSettings_maxFileSize = 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)

-- | The password for the user named in the @username@ property.
redshiftSettings_password :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_password :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_password = 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) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. 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 forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | The port number for Amazon Redshift. The default value is 5439.
redshiftSettings_port :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Int)
redshiftSettings_port :: Lens' RedshiftSettings (Maybe Int)
redshiftSettings_port = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Bool)
redshiftSettings_removeQuotes = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_replaceChars = 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)

-- | A list of characters that you want to replace. Use with @ReplaceChars@.
redshiftSettings_replaceInvalidChars :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_replaceInvalidChars :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_replaceInvalidChars = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_secretsManagerAccessRoleArn = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_secretsManagerSecretId = 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 name of the Amazon Redshift cluster you are using.
redshiftSettings_serverName :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_serverName :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_serverName = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_serverSideEncryptionKmsKeyId = 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 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 :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_serviceAccessRoleArn = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_timeFormat = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Bool)
redshiftSettings_trimBlanks = 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)

-- | 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 :: Lens' RedshiftSettings (Maybe Bool)
redshiftSettings_truncateColumns = 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)

-- | An Amazon Redshift user name for a registered user.
redshiftSettings_username :: Lens.Lens' RedshiftSettings (Prelude.Maybe Prelude.Text)
redshiftSettings_username :: Lens' RedshiftSettings (Maybe Text)
redshiftSettings_username = 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 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 :: Lens' RedshiftSettings (Maybe Int)
redshiftSettings_writeBufferSize = 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)

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

instance Prelude.Hashable RedshiftSettings where
  hashWithSalt :: Int -> RedshiftSettings -> Int
hashWithSalt Int
_salt RedshiftSettings' {Maybe Bool
Maybe Int
Maybe Text
Maybe (Sensitive Text)
Maybe EncryptionModeValue
writeBufferSize :: Maybe Int
username :: Maybe Text
truncateColumns :: Maybe Bool
trimBlanks :: Maybe Bool
timeFormat :: Maybe Text
serviceAccessRoleArn :: Maybe Text
serverSideEncryptionKmsKeyId :: Maybe Text
serverName :: Maybe Text
secretsManagerSecretId :: Maybe Text
secretsManagerAccessRoleArn :: Maybe Text
replaceInvalidChars :: Maybe Text
replaceChars :: Maybe Text
removeQuotes :: Maybe Bool
port :: Maybe Int
password :: Maybe (Sensitive Text)
maxFileSize :: Maybe Int
loadTimeout :: Maybe Int
fileTransferUploadStreams :: Maybe Int
explicitIds :: Maybe Bool
encryptionMode :: Maybe EncryptionModeValue
emptyAsNull :: Maybe Bool
dateFormat :: Maybe Text
databaseName :: Maybe Text
connectionTimeout :: Maybe Int
compUpdate :: Maybe Bool
caseSensitiveNames :: Maybe Bool
bucketName :: Maybe Text
bucketFolder :: Maybe Text
afterConnectScript :: Maybe Text
acceptAnyDate :: Maybe Bool
$sel:writeBufferSize:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:username:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:truncateColumns:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:trimBlanks:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:timeFormat:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:serviceAccessRoleArn:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:serverSideEncryptionKmsKeyId:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:serverName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:secretsManagerSecretId:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:secretsManagerAccessRoleArn:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:replaceInvalidChars:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:replaceChars:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:removeQuotes:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:port:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:password:RedshiftSettings' :: RedshiftSettings -> Maybe (Sensitive Text)
$sel:maxFileSize:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:loadTimeout:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:fileTransferUploadStreams:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:explicitIds:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:encryptionMode:RedshiftSettings' :: RedshiftSettings -> Maybe EncryptionModeValue
$sel:emptyAsNull:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:dateFormat:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:databaseName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:connectionTimeout:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:compUpdate:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:caseSensitiveNames:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:bucketName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:bucketFolder:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:afterConnectScript:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:acceptAnyDate:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
acceptAnyDate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
afterConnectScript
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
bucketFolder
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
bucketName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
caseSensitiveNames
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
compUpdate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
connectionTimeout
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
databaseName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
dateFormat
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
emptyAsNull
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EncryptionModeValue
encryptionMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
explicitIds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
fileTransferUploadStreams
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
loadTimeout
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxFileSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
password
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
port
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
removeQuotes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replaceChars
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
replaceInvalidChars
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
secretsManagerAccessRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
secretsManagerSecretId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
serverName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
serverSideEncryptionKmsKeyId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
serviceAccessRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
timeFormat
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
trimBlanks
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
truncateColumns
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
username
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
writeBufferSize

instance Prelude.NFData RedshiftSettings where
  rnf :: RedshiftSettings -> ()
rnf RedshiftSettings' {Maybe Bool
Maybe Int
Maybe Text
Maybe (Sensitive Text)
Maybe EncryptionModeValue
writeBufferSize :: Maybe Int
username :: Maybe Text
truncateColumns :: Maybe Bool
trimBlanks :: Maybe Bool
timeFormat :: Maybe Text
serviceAccessRoleArn :: Maybe Text
serverSideEncryptionKmsKeyId :: Maybe Text
serverName :: Maybe Text
secretsManagerSecretId :: Maybe Text
secretsManagerAccessRoleArn :: Maybe Text
replaceInvalidChars :: Maybe Text
replaceChars :: Maybe Text
removeQuotes :: Maybe Bool
port :: Maybe Int
password :: Maybe (Sensitive Text)
maxFileSize :: Maybe Int
loadTimeout :: Maybe Int
fileTransferUploadStreams :: Maybe Int
explicitIds :: Maybe Bool
encryptionMode :: Maybe EncryptionModeValue
emptyAsNull :: Maybe Bool
dateFormat :: Maybe Text
databaseName :: Maybe Text
connectionTimeout :: Maybe Int
compUpdate :: Maybe Bool
caseSensitiveNames :: Maybe Bool
bucketName :: Maybe Text
bucketFolder :: Maybe Text
afterConnectScript :: Maybe Text
acceptAnyDate :: Maybe Bool
$sel:writeBufferSize:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:username:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:truncateColumns:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:trimBlanks:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:timeFormat:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:serviceAccessRoleArn:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:serverSideEncryptionKmsKeyId:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:serverName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:secretsManagerSecretId:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:secretsManagerAccessRoleArn:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:replaceInvalidChars:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:replaceChars:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:removeQuotes:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:port:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:password:RedshiftSettings' :: RedshiftSettings -> Maybe (Sensitive Text)
$sel:maxFileSize:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:loadTimeout:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:fileTransferUploadStreams:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:explicitIds:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:encryptionMode:RedshiftSettings' :: RedshiftSettings -> Maybe EncryptionModeValue
$sel:emptyAsNull:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:dateFormat:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:databaseName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:connectionTimeout:RedshiftSettings' :: RedshiftSettings -> Maybe Int
$sel:compUpdate:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:caseSensitiveNames:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
$sel:bucketName:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:bucketFolder:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:afterConnectScript:RedshiftSettings' :: RedshiftSettings -> Maybe Text
$sel:acceptAnyDate:RedshiftSettings' :: RedshiftSettings -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
acceptAnyDate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
afterConnectScript
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
bucketFolder
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
bucketName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
caseSensitiveNames
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
compUpdate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
connectionTimeout
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
databaseName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dateFormat
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
emptyAsNull
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EncryptionModeValue
encryptionMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
explicitIds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
fileTransferUploadStreams
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
loadTimeout
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxFileSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
password
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
port
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
removeQuotes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
replaceChars
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
replaceInvalidChars
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
secretsManagerAccessRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
secretsManagerSecretId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
serverName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
serverSideEncryptionKmsKeyId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
serviceAccessRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
timeFormat
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
trimBlanks
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Bool
truncateColumns
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
username
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Int
writeBufferSize

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