{-# 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.MQ.Types.BrokerSummary
-- 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.MQ.Types.BrokerSummary where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MQ.Types.BrokerState
import Amazonka.MQ.Types.DeploymentMode
import Amazonka.MQ.Types.EngineType
import qualified Amazonka.Prelude as Prelude

-- | Returns information about all brokers.
--
-- /See:/ 'newBrokerSummary' smart constructor.
data BrokerSummary = BrokerSummary'
  { -- | The broker\'s Amazon Resource Name (ARN).
    BrokerSummary -> Maybe Text
brokerArn :: Prelude.Maybe Prelude.Text,
    -- | The unique ID that Amazon MQ generates for the broker.
    BrokerSummary -> Maybe Text
brokerId :: Prelude.Maybe Prelude.Text,
    -- | The broker\'s name. This value is unique in your AWS account, 1-50
    -- characters long, and containing only letters, numbers, dashes, and
    -- underscores, and must not contain white spaces, brackets, wildcard
    -- characters, or special characters.
    BrokerSummary -> Maybe Text
brokerName :: Prelude.Maybe Prelude.Text,
    -- | The broker\'s status.
    BrokerSummary -> Maybe BrokerState
brokerState :: Prelude.Maybe BrokerState,
    -- | The time when the broker was created.
    BrokerSummary -> Maybe ISO8601
created :: Prelude.Maybe Data.ISO8601,
    -- | The broker\'s instance type.
    BrokerSummary -> Maybe Text
hostInstanceType :: Prelude.Maybe Prelude.Text,
    -- | The broker\'s deployment mode.
    BrokerSummary -> DeploymentMode
deploymentMode :: DeploymentMode,
    -- | The type of broker engine.
    BrokerSummary -> EngineType
engineType :: EngineType
  }
  deriving (BrokerSummary -> BrokerSummary -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BrokerSummary -> BrokerSummary -> Bool
$c/= :: BrokerSummary -> BrokerSummary -> Bool
== :: BrokerSummary -> BrokerSummary -> Bool
$c== :: BrokerSummary -> BrokerSummary -> Bool
Prelude.Eq, ReadPrec [BrokerSummary]
ReadPrec BrokerSummary
Int -> ReadS BrokerSummary
ReadS [BrokerSummary]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [BrokerSummary]
$creadListPrec :: ReadPrec [BrokerSummary]
readPrec :: ReadPrec BrokerSummary
$creadPrec :: ReadPrec BrokerSummary
readList :: ReadS [BrokerSummary]
$creadList :: ReadS [BrokerSummary]
readsPrec :: Int -> ReadS BrokerSummary
$creadsPrec :: Int -> ReadS BrokerSummary
Prelude.Read, Int -> BrokerSummary -> ShowS
[BrokerSummary] -> ShowS
BrokerSummary -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BrokerSummary] -> ShowS
$cshowList :: [BrokerSummary] -> ShowS
show :: BrokerSummary -> String
$cshow :: BrokerSummary -> String
showsPrec :: Int -> BrokerSummary -> ShowS
$cshowsPrec :: Int -> BrokerSummary -> ShowS
Prelude.Show, forall x. Rep BrokerSummary x -> BrokerSummary
forall x. BrokerSummary -> Rep BrokerSummary x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep BrokerSummary x -> BrokerSummary
$cfrom :: forall x. BrokerSummary -> Rep BrokerSummary x
Prelude.Generic)

-- |
-- Create a value of 'BrokerSummary' 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:
--
-- 'brokerArn', 'brokerSummary_brokerArn' - The broker\'s Amazon Resource Name (ARN).
--
-- 'brokerId', 'brokerSummary_brokerId' - The unique ID that Amazon MQ generates for the broker.
--
-- 'brokerName', 'brokerSummary_brokerName' - The broker\'s name. This value is unique in your AWS account, 1-50
-- characters long, and containing only letters, numbers, dashes, and
-- underscores, and must not contain white spaces, brackets, wildcard
-- characters, or special characters.
--
-- 'brokerState', 'brokerSummary_brokerState' - The broker\'s status.
--
-- 'created', 'brokerSummary_created' - The time when the broker was created.
--
-- 'hostInstanceType', 'brokerSummary_hostInstanceType' - The broker\'s instance type.
--
-- 'deploymentMode', 'brokerSummary_deploymentMode' - The broker\'s deployment mode.
--
-- 'engineType', 'brokerSummary_engineType' - The type of broker engine.
newBrokerSummary ::
  -- | 'deploymentMode'
  DeploymentMode ->
  -- | 'engineType'
  EngineType ->
  BrokerSummary
newBrokerSummary :: DeploymentMode -> EngineType -> BrokerSummary
newBrokerSummary DeploymentMode
pDeploymentMode_ EngineType
pEngineType_ =
  BrokerSummary'
    { $sel:brokerArn:BrokerSummary' :: Maybe Text
brokerArn = forall a. Maybe a
Prelude.Nothing,
      $sel:brokerId:BrokerSummary' :: Maybe Text
brokerId = forall a. Maybe a
Prelude.Nothing,
      $sel:brokerName:BrokerSummary' :: Maybe Text
brokerName = forall a. Maybe a
Prelude.Nothing,
      $sel:brokerState:BrokerSummary' :: Maybe BrokerState
brokerState = forall a. Maybe a
Prelude.Nothing,
      $sel:created:BrokerSummary' :: Maybe ISO8601
created = forall a. Maybe a
Prelude.Nothing,
      $sel:hostInstanceType:BrokerSummary' :: Maybe Text
hostInstanceType = forall a. Maybe a
Prelude.Nothing,
      $sel:deploymentMode:BrokerSummary' :: DeploymentMode
deploymentMode = DeploymentMode
pDeploymentMode_,
      $sel:engineType:BrokerSummary' :: EngineType
engineType = EngineType
pEngineType_
    }

-- | The broker\'s Amazon Resource Name (ARN).
brokerSummary_brokerArn :: Lens.Lens' BrokerSummary (Prelude.Maybe Prelude.Text)
brokerSummary_brokerArn :: Lens' BrokerSummary (Maybe Text)
brokerSummary_brokerArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BrokerSummary' {Maybe Text
brokerArn :: Maybe Text
$sel:brokerArn:BrokerSummary' :: BrokerSummary -> Maybe Text
brokerArn} -> Maybe Text
brokerArn) (\s :: BrokerSummary
s@BrokerSummary' {} Maybe Text
a -> BrokerSummary
s {$sel:brokerArn:BrokerSummary' :: Maybe Text
brokerArn = Maybe Text
a} :: BrokerSummary)

-- | The unique ID that Amazon MQ generates for the broker.
brokerSummary_brokerId :: Lens.Lens' BrokerSummary (Prelude.Maybe Prelude.Text)
brokerSummary_brokerId :: Lens' BrokerSummary (Maybe Text)
brokerSummary_brokerId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BrokerSummary' {Maybe Text
brokerId :: Maybe Text
$sel:brokerId:BrokerSummary' :: BrokerSummary -> Maybe Text
brokerId} -> Maybe Text
brokerId) (\s :: BrokerSummary
s@BrokerSummary' {} Maybe Text
a -> BrokerSummary
s {$sel:brokerId:BrokerSummary' :: Maybe Text
brokerId = Maybe Text
a} :: BrokerSummary)

-- | The broker\'s name. This value is unique in your AWS account, 1-50
-- characters long, and containing only letters, numbers, dashes, and
-- underscores, and must not contain white spaces, brackets, wildcard
-- characters, or special characters.
brokerSummary_brokerName :: Lens.Lens' BrokerSummary (Prelude.Maybe Prelude.Text)
brokerSummary_brokerName :: Lens' BrokerSummary (Maybe Text)
brokerSummary_brokerName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BrokerSummary' {Maybe Text
brokerName :: Maybe Text
$sel:brokerName:BrokerSummary' :: BrokerSummary -> Maybe Text
brokerName} -> Maybe Text
brokerName) (\s :: BrokerSummary
s@BrokerSummary' {} Maybe Text
a -> BrokerSummary
s {$sel:brokerName:BrokerSummary' :: Maybe Text
brokerName = Maybe Text
a} :: BrokerSummary)

-- | The broker\'s status.
brokerSummary_brokerState :: Lens.Lens' BrokerSummary (Prelude.Maybe BrokerState)
brokerSummary_brokerState :: Lens' BrokerSummary (Maybe BrokerState)
brokerSummary_brokerState = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BrokerSummary' {Maybe BrokerState
brokerState :: Maybe BrokerState
$sel:brokerState:BrokerSummary' :: BrokerSummary -> Maybe BrokerState
brokerState} -> Maybe BrokerState
brokerState) (\s :: BrokerSummary
s@BrokerSummary' {} Maybe BrokerState
a -> BrokerSummary
s {$sel:brokerState:BrokerSummary' :: Maybe BrokerState
brokerState = Maybe BrokerState
a} :: BrokerSummary)

-- | The time when the broker was created.
brokerSummary_created :: Lens.Lens' BrokerSummary (Prelude.Maybe Prelude.UTCTime)
brokerSummary_created :: Lens' BrokerSummary (Maybe UTCTime)
brokerSummary_created = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BrokerSummary' {Maybe ISO8601
created :: Maybe ISO8601
$sel:created:BrokerSummary' :: BrokerSummary -> Maybe ISO8601
created} -> Maybe ISO8601
created) (\s :: BrokerSummary
s@BrokerSummary' {} Maybe ISO8601
a -> BrokerSummary
s {$sel:created:BrokerSummary' :: Maybe ISO8601
created = Maybe ISO8601
a} :: BrokerSummary) 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 :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The broker\'s instance type.
brokerSummary_hostInstanceType :: Lens.Lens' BrokerSummary (Prelude.Maybe Prelude.Text)
brokerSummary_hostInstanceType :: Lens' BrokerSummary (Maybe Text)
brokerSummary_hostInstanceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BrokerSummary' {Maybe Text
hostInstanceType :: Maybe Text
$sel:hostInstanceType:BrokerSummary' :: BrokerSummary -> Maybe Text
hostInstanceType} -> Maybe Text
hostInstanceType) (\s :: BrokerSummary
s@BrokerSummary' {} Maybe Text
a -> BrokerSummary
s {$sel:hostInstanceType:BrokerSummary' :: Maybe Text
hostInstanceType = Maybe Text
a} :: BrokerSummary)

-- | The broker\'s deployment mode.
brokerSummary_deploymentMode :: Lens.Lens' BrokerSummary DeploymentMode
brokerSummary_deploymentMode :: Lens' BrokerSummary DeploymentMode
brokerSummary_deploymentMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BrokerSummary' {DeploymentMode
deploymentMode :: DeploymentMode
$sel:deploymentMode:BrokerSummary' :: BrokerSummary -> DeploymentMode
deploymentMode} -> DeploymentMode
deploymentMode) (\s :: BrokerSummary
s@BrokerSummary' {} DeploymentMode
a -> BrokerSummary
s {$sel:deploymentMode:BrokerSummary' :: DeploymentMode
deploymentMode = DeploymentMode
a} :: BrokerSummary)

-- | The type of broker engine.
brokerSummary_engineType :: Lens.Lens' BrokerSummary EngineType
brokerSummary_engineType :: Lens' BrokerSummary EngineType
brokerSummary_engineType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\BrokerSummary' {EngineType
engineType :: EngineType
$sel:engineType:BrokerSummary' :: BrokerSummary -> EngineType
engineType} -> EngineType
engineType) (\s :: BrokerSummary
s@BrokerSummary' {} EngineType
a -> BrokerSummary
s {$sel:engineType:BrokerSummary' :: EngineType
engineType = EngineType
a} :: BrokerSummary)

instance Data.FromJSON BrokerSummary where
  parseJSON :: Value -> Parser BrokerSummary
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"BrokerSummary"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe BrokerState
-> Maybe ISO8601
-> Maybe Text
-> DeploymentMode
-> EngineType
-> BrokerSummary
BrokerSummary'
            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
"brokerArn")
            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
"brokerId")
            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
"brokerName")
            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
"brokerState")
            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
"created")
            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
"hostInstanceType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"deploymentMode")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"engineType")
      )

instance Prelude.Hashable BrokerSummary where
  hashWithSalt :: Int -> BrokerSummary -> Int
hashWithSalt Int
_salt BrokerSummary' {Maybe Text
Maybe ISO8601
Maybe BrokerState
DeploymentMode
EngineType
engineType :: EngineType
deploymentMode :: DeploymentMode
hostInstanceType :: Maybe Text
created :: Maybe ISO8601
brokerState :: Maybe BrokerState
brokerName :: Maybe Text
brokerId :: Maybe Text
brokerArn :: Maybe Text
$sel:engineType:BrokerSummary' :: BrokerSummary -> EngineType
$sel:deploymentMode:BrokerSummary' :: BrokerSummary -> DeploymentMode
$sel:hostInstanceType:BrokerSummary' :: BrokerSummary -> Maybe Text
$sel:created:BrokerSummary' :: BrokerSummary -> Maybe ISO8601
$sel:brokerState:BrokerSummary' :: BrokerSummary -> Maybe BrokerState
$sel:brokerName:BrokerSummary' :: BrokerSummary -> Maybe Text
$sel:brokerId:BrokerSummary' :: BrokerSummary -> Maybe Text
$sel:brokerArn:BrokerSummary' :: BrokerSummary -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
brokerArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
brokerId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
brokerName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe BrokerState
brokerState
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
created
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
hostInstanceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` DeploymentMode
deploymentMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` EngineType
engineType

instance Prelude.NFData BrokerSummary where
  rnf :: BrokerSummary -> ()
rnf BrokerSummary' {Maybe Text
Maybe ISO8601
Maybe BrokerState
DeploymentMode
EngineType
engineType :: EngineType
deploymentMode :: DeploymentMode
hostInstanceType :: Maybe Text
created :: Maybe ISO8601
brokerState :: Maybe BrokerState
brokerName :: Maybe Text
brokerId :: Maybe Text
brokerArn :: Maybe Text
$sel:engineType:BrokerSummary' :: BrokerSummary -> EngineType
$sel:deploymentMode:BrokerSummary' :: BrokerSummary -> DeploymentMode
$sel:hostInstanceType:BrokerSummary' :: BrokerSummary -> Maybe Text
$sel:created:BrokerSummary' :: BrokerSummary -> Maybe ISO8601
$sel:brokerState:BrokerSummary' :: BrokerSummary -> Maybe BrokerState
$sel:brokerName:BrokerSummary' :: BrokerSummary -> Maybe Text
$sel:brokerId:BrokerSummary' :: BrokerSummary -> Maybe Text
$sel:brokerArn:BrokerSummary' :: BrokerSummary -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
brokerArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
brokerId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
brokerName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe BrokerState
brokerState
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
created
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
hostInstanceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf DeploymentMode
deploymentMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf EngineType
engineType