packages feed

amazonka-connect-2.0: gen/Amazonka/Connect/Types/CurrentMetricResult.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.Connect.Types.CurrentMetricResult
-- 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.Connect.Types.CurrentMetricResult where

import Amazonka.Connect.Types.CurrentMetricData
import Amazonka.Connect.Types.Dimensions
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

-- | Contains information about a set of real-time metrics.
--
-- /See:/ 'newCurrentMetricResult' smart constructor.
data CurrentMetricResult = CurrentMetricResult'
  { -- | The set of metrics.
    collections :: Prelude.Maybe [CurrentMetricData],
    -- | The dimensions for the metrics.
    dimensions :: Prelude.Maybe Dimensions
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'CurrentMetricResult' 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:
--
-- 'collections', 'currentMetricResult_collections' - The set of metrics.
--
-- 'dimensions', 'currentMetricResult_dimensions' - The dimensions for the metrics.
newCurrentMetricResult ::
  CurrentMetricResult
newCurrentMetricResult =
  CurrentMetricResult'
    { collections = Prelude.Nothing,
      dimensions = Prelude.Nothing
    }

-- | The set of metrics.
currentMetricResult_collections :: Lens.Lens' CurrentMetricResult (Prelude.Maybe [CurrentMetricData])
currentMetricResult_collections = Lens.lens (\CurrentMetricResult' {collections} -> collections) (\s@CurrentMetricResult' {} a -> s {collections = a} :: CurrentMetricResult) Prelude.. Lens.mapping Lens.coerced

-- | The dimensions for the metrics.
currentMetricResult_dimensions :: Lens.Lens' CurrentMetricResult (Prelude.Maybe Dimensions)
currentMetricResult_dimensions = Lens.lens (\CurrentMetricResult' {dimensions} -> dimensions) (\s@CurrentMetricResult' {} a -> s {dimensions = a} :: CurrentMetricResult)

instance Data.FromJSON CurrentMetricResult where
  parseJSON =
    Data.withObject
      "CurrentMetricResult"
      ( \x ->
          CurrentMetricResult'
            Prelude.<$> (x Data..:? "Collections" Data..!= Prelude.mempty)
            Prelude.<*> (x Data..:? "Dimensions")
      )

instance Prelude.Hashable CurrentMetricResult where
  hashWithSalt _salt CurrentMetricResult' {..} =
    _salt
      `Prelude.hashWithSalt` collections
      `Prelude.hashWithSalt` dimensions

instance Prelude.NFData CurrentMetricResult where
  rnf CurrentMetricResult' {..} =
    Prelude.rnf collections
      `Prelude.seq` Prelude.rnf dimensions