packages feed

amazonka-rds-2.0: gen/Amazonka/RDS/Types/OptionConfiguration.hs

{-# 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.RDS.Types.OptionConfiguration
-- 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.RDS.Types.OptionConfiguration where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.RDS.Types.OptionSetting

-- | A list of all available options
--
-- /See:/ 'newOptionConfiguration' smart constructor.
data OptionConfiguration = OptionConfiguration'
  { -- | A list of DBSecurityGroupMembership name strings used for this option.
    dbSecurityGroupMemberships :: Prelude.Maybe [Prelude.Text],
    -- | The option settings to include in an option group.
    optionSettings :: Prelude.Maybe [OptionSetting],
    -- | The version for the option.
    optionVersion :: Prelude.Maybe Prelude.Text,
    -- | The optional port for the option.
    port :: Prelude.Maybe Prelude.Int,
    -- | A list of VpcSecurityGroupMembership name strings used for this option.
    vpcSecurityGroupMemberships :: Prelude.Maybe [Prelude.Text],
    -- | The configuration of options to include in a group.
    optionName :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'OptionConfiguration' 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:
--
-- 'dbSecurityGroupMemberships', 'optionConfiguration_dbSecurityGroupMemberships' - A list of DBSecurityGroupMembership name strings used for this option.
--
-- 'optionSettings', 'optionConfiguration_optionSettings' - The option settings to include in an option group.
--
-- 'optionVersion', 'optionConfiguration_optionVersion' - The version for the option.
--
-- 'port', 'optionConfiguration_port' - The optional port for the option.
--
-- 'vpcSecurityGroupMemberships', 'optionConfiguration_vpcSecurityGroupMemberships' - A list of VpcSecurityGroupMembership name strings used for this option.
--
-- 'optionName', 'optionConfiguration_optionName' - The configuration of options to include in a group.
newOptionConfiguration ::
  -- | 'optionName'
  Prelude.Text ->
  OptionConfiguration
newOptionConfiguration pOptionName_ =
  OptionConfiguration'
    { dbSecurityGroupMemberships =
        Prelude.Nothing,
      optionSettings = Prelude.Nothing,
      optionVersion = Prelude.Nothing,
      port = Prelude.Nothing,
      vpcSecurityGroupMemberships = Prelude.Nothing,
      optionName = pOptionName_
    }

-- | A list of DBSecurityGroupMembership name strings used for this option.
optionConfiguration_dbSecurityGroupMemberships :: Lens.Lens' OptionConfiguration (Prelude.Maybe [Prelude.Text])
optionConfiguration_dbSecurityGroupMemberships = Lens.lens (\OptionConfiguration' {dbSecurityGroupMemberships} -> dbSecurityGroupMemberships) (\s@OptionConfiguration' {} a -> s {dbSecurityGroupMemberships = a} :: OptionConfiguration) Prelude.. Lens.mapping Lens.coerced

-- | The option settings to include in an option group.
optionConfiguration_optionSettings :: Lens.Lens' OptionConfiguration (Prelude.Maybe [OptionSetting])
optionConfiguration_optionSettings = Lens.lens (\OptionConfiguration' {optionSettings} -> optionSettings) (\s@OptionConfiguration' {} a -> s {optionSettings = a} :: OptionConfiguration) Prelude.. Lens.mapping Lens.coerced

-- | The version for the option.
optionConfiguration_optionVersion :: Lens.Lens' OptionConfiguration (Prelude.Maybe Prelude.Text)
optionConfiguration_optionVersion = Lens.lens (\OptionConfiguration' {optionVersion} -> optionVersion) (\s@OptionConfiguration' {} a -> s {optionVersion = a} :: OptionConfiguration)

-- | The optional port for the option.
optionConfiguration_port :: Lens.Lens' OptionConfiguration (Prelude.Maybe Prelude.Int)
optionConfiguration_port = Lens.lens (\OptionConfiguration' {port} -> port) (\s@OptionConfiguration' {} a -> s {port = a} :: OptionConfiguration)

-- | A list of VpcSecurityGroupMembership name strings used for this option.
optionConfiguration_vpcSecurityGroupMemberships :: Lens.Lens' OptionConfiguration (Prelude.Maybe [Prelude.Text])
optionConfiguration_vpcSecurityGroupMemberships = Lens.lens (\OptionConfiguration' {vpcSecurityGroupMemberships} -> vpcSecurityGroupMemberships) (\s@OptionConfiguration' {} a -> s {vpcSecurityGroupMemberships = a} :: OptionConfiguration) Prelude.. Lens.mapping Lens.coerced

-- | The configuration of options to include in a group.
optionConfiguration_optionName :: Lens.Lens' OptionConfiguration Prelude.Text
optionConfiguration_optionName = Lens.lens (\OptionConfiguration' {optionName} -> optionName) (\s@OptionConfiguration' {} a -> s {optionName = a} :: OptionConfiguration)

instance Prelude.Hashable OptionConfiguration where
  hashWithSalt _salt OptionConfiguration' {..} =
    _salt
      `Prelude.hashWithSalt` dbSecurityGroupMemberships
      `Prelude.hashWithSalt` optionSettings
      `Prelude.hashWithSalt` optionVersion
      `Prelude.hashWithSalt` port
      `Prelude.hashWithSalt` vpcSecurityGroupMemberships
      `Prelude.hashWithSalt` optionName

instance Prelude.NFData OptionConfiguration where
  rnf OptionConfiguration' {..} =
    Prelude.rnf dbSecurityGroupMemberships
      `Prelude.seq` Prelude.rnf optionSettings
      `Prelude.seq` Prelude.rnf optionVersion
      `Prelude.seq` Prelude.rnf port
      `Prelude.seq` Prelude.rnf vpcSecurityGroupMemberships
      `Prelude.seq` Prelude.rnf optionName

instance Data.ToQuery OptionConfiguration where
  toQuery OptionConfiguration' {..} =
    Prelude.mconcat
      [ "DBSecurityGroupMemberships"
          Data.=: Data.toQuery
            ( Data.toQueryList "DBSecurityGroupName"
                Prelude.<$> dbSecurityGroupMemberships
            ),
        "OptionSettings"
          Data.=: Data.toQuery
            ( Data.toQueryList "OptionSetting"
                Prelude.<$> optionSettings
            ),
        "OptionVersion" Data.=: optionVersion,
        "Port" Data.=: port,
        "VpcSecurityGroupMemberships"
          Data.=: Data.toQuery
            ( Data.toQueryList "VpcSecurityGroupId"
                Prelude.<$> vpcSecurityGroupMemberships
            ),
        "OptionName" Data.=: optionName
      ]