{-# 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.Redshift.Types.AquaConfiguration
-- 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.Redshift.Types.AquaConfiguration 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.Redshift.Internal
import Amazonka.Redshift.Types.AquaConfigurationStatus
import Amazonka.Redshift.Types.AquaStatus

-- | The operation that uses this structure is retired. Amazon Redshift
-- automatically determines whether to use AQUA (Advanced Query
-- Accelerator).
--
-- /See:/ 'newAquaConfiguration' smart constructor.
data AquaConfiguration = AquaConfiguration'
  { -- | This field is retired. Amazon Redshift automatically determines whether
    -- to use AQUA (Advanced Query Accelerator).
    AquaConfiguration -> Maybe AquaConfigurationStatus
aquaConfigurationStatus :: Prelude.Maybe AquaConfigurationStatus,
    -- | This field is retired. Amazon Redshift automatically determines whether
    -- to use AQUA (Advanced Query Accelerator).
    AquaConfiguration -> Maybe AquaStatus
aquaStatus :: Prelude.Maybe AquaStatus
  }
  deriving (AquaConfiguration -> AquaConfiguration -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AquaConfiguration -> AquaConfiguration -> Bool
$c/= :: AquaConfiguration -> AquaConfiguration -> Bool
== :: AquaConfiguration -> AquaConfiguration -> Bool
$c== :: AquaConfiguration -> AquaConfiguration -> Bool
Prelude.Eq, ReadPrec [AquaConfiguration]
ReadPrec AquaConfiguration
Int -> ReadS AquaConfiguration
ReadS [AquaConfiguration]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AquaConfiguration]
$creadListPrec :: ReadPrec [AquaConfiguration]
readPrec :: ReadPrec AquaConfiguration
$creadPrec :: ReadPrec AquaConfiguration
readList :: ReadS [AquaConfiguration]
$creadList :: ReadS [AquaConfiguration]
readsPrec :: Int -> ReadS AquaConfiguration
$creadsPrec :: Int -> ReadS AquaConfiguration
Prelude.Read, Int -> AquaConfiguration -> ShowS
[AquaConfiguration] -> ShowS
AquaConfiguration -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AquaConfiguration] -> ShowS
$cshowList :: [AquaConfiguration] -> ShowS
show :: AquaConfiguration -> String
$cshow :: AquaConfiguration -> String
showsPrec :: Int -> AquaConfiguration -> ShowS
$cshowsPrec :: Int -> AquaConfiguration -> ShowS
Prelude.Show, forall x. Rep AquaConfiguration x -> AquaConfiguration
forall x. AquaConfiguration -> Rep AquaConfiguration x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AquaConfiguration x -> AquaConfiguration
$cfrom :: forall x. AquaConfiguration -> Rep AquaConfiguration x
Prelude.Generic)

-- |
-- Create a value of 'AquaConfiguration' 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:
--
-- 'aquaConfigurationStatus', 'aquaConfiguration_aquaConfigurationStatus' - This field is retired. Amazon Redshift automatically determines whether
-- to use AQUA (Advanced Query Accelerator).
--
-- 'aquaStatus', 'aquaConfiguration_aquaStatus' - This field is retired. Amazon Redshift automatically determines whether
-- to use AQUA (Advanced Query Accelerator).
newAquaConfiguration ::
  AquaConfiguration
newAquaConfiguration :: AquaConfiguration
newAquaConfiguration =
  AquaConfiguration'
    { $sel:aquaConfigurationStatus:AquaConfiguration' :: Maybe AquaConfigurationStatus
aquaConfigurationStatus =
        forall a. Maybe a
Prelude.Nothing,
      $sel:aquaStatus:AquaConfiguration' :: Maybe AquaStatus
aquaStatus = forall a. Maybe a
Prelude.Nothing
    }

-- | This field is retired. Amazon Redshift automatically determines whether
-- to use AQUA (Advanced Query Accelerator).
aquaConfiguration_aquaConfigurationStatus :: Lens.Lens' AquaConfiguration (Prelude.Maybe AquaConfigurationStatus)
aquaConfiguration_aquaConfigurationStatus :: Lens' AquaConfiguration (Maybe AquaConfigurationStatus)
aquaConfiguration_aquaConfigurationStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AquaConfiguration' {Maybe AquaConfigurationStatus
aquaConfigurationStatus :: Maybe AquaConfigurationStatus
$sel:aquaConfigurationStatus:AquaConfiguration' :: AquaConfiguration -> Maybe AquaConfigurationStatus
aquaConfigurationStatus} -> Maybe AquaConfigurationStatus
aquaConfigurationStatus) (\s :: AquaConfiguration
s@AquaConfiguration' {} Maybe AquaConfigurationStatus
a -> AquaConfiguration
s {$sel:aquaConfigurationStatus:AquaConfiguration' :: Maybe AquaConfigurationStatus
aquaConfigurationStatus = Maybe AquaConfigurationStatus
a} :: AquaConfiguration)

-- | This field is retired. Amazon Redshift automatically determines whether
-- to use AQUA (Advanced Query Accelerator).
aquaConfiguration_aquaStatus :: Lens.Lens' AquaConfiguration (Prelude.Maybe AquaStatus)
aquaConfiguration_aquaStatus :: Lens' AquaConfiguration (Maybe AquaStatus)
aquaConfiguration_aquaStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AquaConfiguration' {Maybe AquaStatus
aquaStatus :: Maybe AquaStatus
$sel:aquaStatus:AquaConfiguration' :: AquaConfiguration -> Maybe AquaStatus
aquaStatus} -> Maybe AquaStatus
aquaStatus) (\s :: AquaConfiguration
s@AquaConfiguration' {} Maybe AquaStatus
a -> AquaConfiguration
s {$sel:aquaStatus:AquaConfiguration' :: Maybe AquaStatus
aquaStatus = Maybe AquaStatus
a} :: AquaConfiguration)

instance Data.FromXML AquaConfiguration where
  parseXML :: [Node] -> Either String AquaConfiguration
parseXML [Node]
x =
    Maybe AquaConfigurationStatus
-> Maybe AquaStatus -> AquaConfiguration
AquaConfiguration'
      forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AquaConfigurationStatus")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"AquaStatus")

instance Prelude.Hashable AquaConfiguration where
  hashWithSalt :: Int -> AquaConfiguration -> Int
hashWithSalt Int
_salt AquaConfiguration' {Maybe AquaConfigurationStatus
Maybe AquaStatus
aquaStatus :: Maybe AquaStatus
aquaConfigurationStatus :: Maybe AquaConfigurationStatus
$sel:aquaStatus:AquaConfiguration' :: AquaConfiguration -> Maybe AquaStatus
$sel:aquaConfigurationStatus:AquaConfiguration' :: AquaConfiguration -> Maybe AquaConfigurationStatus
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AquaConfigurationStatus
aquaConfigurationStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AquaStatus
aquaStatus

instance Prelude.NFData AquaConfiguration where
  rnf :: AquaConfiguration -> ()
rnf AquaConfiguration' {Maybe AquaConfigurationStatus
Maybe AquaStatus
aquaStatus :: Maybe AquaStatus
aquaConfigurationStatus :: Maybe AquaConfigurationStatus
$sel:aquaStatus:AquaConfiguration' :: AquaConfiguration -> Maybe AquaStatus
$sel:aquaConfigurationStatus:AquaConfiguration' :: AquaConfiguration -> Maybe AquaConfigurationStatus
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AquaConfigurationStatus
aquaConfigurationStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AquaStatus
aquaStatus