packages feed

amazonka-rds-2.0: gen/Amazonka/RDS/Types/OptionGroupOptionSetting.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.OptionGroupOptionSetting
-- 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.OptionGroupOptionSetting 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.MinimumEngineVersionPerAllowedValue

-- | Option group option settings are used to display settings available for
-- each option with their default values and other information. These
-- values are used with the DescribeOptionGroupOptions action.
--
-- /See:/ 'newOptionGroupOptionSetting' smart constructor.
data OptionGroupOptionSetting = OptionGroupOptionSetting'
  { -- | Indicates the acceptable values for the option group option.
    allowedValues :: Prelude.Maybe Prelude.Text,
    -- | The DB engine specific parameter type for the option group option.
    applyType :: Prelude.Maybe Prelude.Text,
    -- | The default value for the option group option.
    defaultValue :: Prelude.Maybe Prelude.Text,
    -- | Boolean value where true indicates that this option group option can be
    -- changed from the default value.
    isModifiable :: Prelude.Maybe Prelude.Bool,
    -- | Boolean value where true indicates that a value must be specified for
    -- this option setting of the option group option.
    isRequired :: Prelude.Maybe Prelude.Bool,
    -- | The minimum DB engine version required for the corresponding allowed
    -- value for this option setting.
    minimumEngineVersionPerAllowedValue :: Prelude.Maybe [MinimumEngineVersionPerAllowedValue],
    -- | The description of the option group option.
    settingDescription :: Prelude.Maybe Prelude.Text,
    -- | The name of the option group option.
    settingName :: Prelude.Maybe Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'OptionGroupOptionSetting' 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:
--
-- 'allowedValues', 'optionGroupOptionSetting_allowedValues' - Indicates the acceptable values for the option group option.
--
-- 'applyType', 'optionGroupOptionSetting_applyType' - The DB engine specific parameter type for the option group option.
--
-- 'defaultValue', 'optionGroupOptionSetting_defaultValue' - The default value for the option group option.
--
-- 'isModifiable', 'optionGroupOptionSetting_isModifiable' - Boolean value where true indicates that this option group option can be
-- changed from the default value.
--
-- 'isRequired', 'optionGroupOptionSetting_isRequired' - Boolean value where true indicates that a value must be specified for
-- this option setting of the option group option.
--
-- 'minimumEngineVersionPerAllowedValue', 'optionGroupOptionSetting_minimumEngineVersionPerAllowedValue' - The minimum DB engine version required for the corresponding allowed
-- value for this option setting.
--
-- 'settingDescription', 'optionGroupOptionSetting_settingDescription' - The description of the option group option.
--
-- 'settingName', 'optionGroupOptionSetting_settingName' - The name of the option group option.
newOptionGroupOptionSetting ::
  OptionGroupOptionSetting
newOptionGroupOptionSetting =
  OptionGroupOptionSetting'
    { allowedValues =
        Prelude.Nothing,
      applyType = Prelude.Nothing,
      defaultValue = Prelude.Nothing,
      isModifiable = Prelude.Nothing,
      isRequired = Prelude.Nothing,
      minimumEngineVersionPerAllowedValue =
        Prelude.Nothing,
      settingDescription = Prelude.Nothing,
      settingName = Prelude.Nothing
    }

-- | Indicates the acceptable values for the option group option.
optionGroupOptionSetting_allowedValues :: Lens.Lens' OptionGroupOptionSetting (Prelude.Maybe Prelude.Text)
optionGroupOptionSetting_allowedValues = Lens.lens (\OptionGroupOptionSetting' {allowedValues} -> allowedValues) (\s@OptionGroupOptionSetting' {} a -> s {allowedValues = a} :: OptionGroupOptionSetting)

-- | The DB engine specific parameter type for the option group option.
optionGroupOptionSetting_applyType :: Lens.Lens' OptionGroupOptionSetting (Prelude.Maybe Prelude.Text)
optionGroupOptionSetting_applyType = Lens.lens (\OptionGroupOptionSetting' {applyType} -> applyType) (\s@OptionGroupOptionSetting' {} a -> s {applyType = a} :: OptionGroupOptionSetting)

-- | The default value for the option group option.
optionGroupOptionSetting_defaultValue :: Lens.Lens' OptionGroupOptionSetting (Prelude.Maybe Prelude.Text)
optionGroupOptionSetting_defaultValue = Lens.lens (\OptionGroupOptionSetting' {defaultValue} -> defaultValue) (\s@OptionGroupOptionSetting' {} a -> s {defaultValue = a} :: OptionGroupOptionSetting)

-- | Boolean value where true indicates that this option group option can be
-- changed from the default value.
optionGroupOptionSetting_isModifiable :: Lens.Lens' OptionGroupOptionSetting (Prelude.Maybe Prelude.Bool)
optionGroupOptionSetting_isModifiable = Lens.lens (\OptionGroupOptionSetting' {isModifiable} -> isModifiable) (\s@OptionGroupOptionSetting' {} a -> s {isModifiable = a} :: OptionGroupOptionSetting)

-- | Boolean value where true indicates that a value must be specified for
-- this option setting of the option group option.
optionGroupOptionSetting_isRequired :: Lens.Lens' OptionGroupOptionSetting (Prelude.Maybe Prelude.Bool)
optionGroupOptionSetting_isRequired = Lens.lens (\OptionGroupOptionSetting' {isRequired} -> isRequired) (\s@OptionGroupOptionSetting' {} a -> s {isRequired = a} :: OptionGroupOptionSetting)

-- | The minimum DB engine version required for the corresponding allowed
-- value for this option setting.
optionGroupOptionSetting_minimumEngineVersionPerAllowedValue :: Lens.Lens' OptionGroupOptionSetting (Prelude.Maybe [MinimumEngineVersionPerAllowedValue])
optionGroupOptionSetting_minimumEngineVersionPerAllowedValue = Lens.lens (\OptionGroupOptionSetting' {minimumEngineVersionPerAllowedValue} -> minimumEngineVersionPerAllowedValue) (\s@OptionGroupOptionSetting' {} a -> s {minimumEngineVersionPerAllowedValue = a} :: OptionGroupOptionSetting) Prelude.. Lens.mapping Lens.coerced

-- | The description of the option group option.
optionGroupOptionSetting_settingDescription :: Lens.Lens' OptionGroupOptionSetting (Prelude.Maybe Prelude.Text)
optionGroupOptionSetting_settingDescription = Lens.lens (\OptionGroupOptionSetting' {settingDescription} -> settingDescription) (\s@OptionGroupOptionSetting' {} a -> s {settingDescription = a} :: OptionGroupOptionSetting)

-- | The name of the option group option.
optionGroupOptionSetting_settingName :: Lens.Lens' OptionGroupOptionSetting (Prelude.Maybe Prelude.Text)
optionGroupOptionSetting_settingName = Lens.lens (\OptionGroupOptionSetting' {settingName} -> settingName) (\s@OptionGroupOptionSetting' {} a -> s {settingName = a} :: OptionGroupOptionSetting)

instance Data.FromXML OptionGroupOptionSetting where
  parseXML x =
    OptionGroupOptionSetting'
      Prelude.<$> (x Data..@? "AllowedValues")
      Prelude.<*> (x Data..@? "ApplyType")
      Prelude.<*> (x Data..@? "DefaultValue")
      Prelude.<*> (x Data..@? "IsModifiable")
      Prelude.<*> (x Data..@? "IsRequired")
      Prelude.<*> ( x
                      Data..@? "MinimumEngineVersionPerAllowedValue"
                      Core..!@ Prelude.mempty
                      Prelude.>>= Core.may
                        ( Data.parseXMLList
                            "MinimumEngineVersionPerAllowedValue"
                        )
                  )
      Prelude.<*> (x Data..@? "SettingDescription")
      Prelude.<*> (x Data..@? "SettingName")

instance Prelude.Hashable OptionGroupOptionSetting where
  hashWithSalt _salt OptionGroupOptionSetting' {..} =
    _salt
      `Prelude.hashWithSalt` allowedValues
      `Prelude.hashWithSalt` applyType
      `Prelude.hashWithSalt` defaultValue
      `Prelude.hashWithSalt` isModifiable
      `Prelude.hashWithSalt` isRequired
      `Prelude.hashWithSalt` minimumEngineVersionPerAllowedValue
      `Prelude.hashWithSalt` settingDescription
      `Prelude.hashWithSalt` settingName

instance Prelude.NFData OptionGroupOptionSetting where
  rnf OptionGroupOptionSetting' {..} =
    Prelude.rnf allowedValues
      `Prelude.seq` Prelude.rnf applyType
      `Prelude.seq` Prelude.rnf defaultValue
      `Prelude.seq` Prelude.rnf isModifiable
      `Prelude.seq` Prelude.rnf isRequired
      `Prelude.seq` Prelude.rnf minimumEngineVersionPerAllowedValue
      `Prelude.seq` Prelude.rnf settingDescription
      `Prelude.seq` Prelude.rnf settingName