{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.LookoutMetrics.UpdateMetricSet
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates a dataset.
module Amazonka.LookoutMetrics.UpdateMetricSet
  ( -- * Creating a Request
    UpdateMetricSet (..),
    newUpdateMetricSet,

    -- * Request Lenses
    updateMetricSet_dimensionFilterList,
    updateMetricSet_dimensionList,
    updateMetricSet_metricList,
    updateMetricSet_metricSetDescription,
    updateMetricSet_metricSetFrequency,
    updateMetricSet_metricSource,
    updateMetricSet_offset,
    updateMetricSet_timestampColumn,
    updateMetricSet_metricSetArn,

    -- * Destructuring the Response
    UpdateMetricSetResponse (..),
    newUpdateMetricSetResponse,

    -- * Response Lenses
    updateMetricSetResponse_metricSetArn,
    updateMetricSetResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.LookoutMetrics.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newUpdateMetricSet' smart constructor.
data UpdateMetricSet = UpdateMetricSet'
  { -- | Describes a list of filters for choosing specific dimensions and
    -- specific values. Each filter consists of the dimension and one of its
    -- values that you want to include. When multiple dimensions or values are
    -- specified, the dimensions are joined with an AND operation and the
    -- values are joined with an OR operation.
    UpdateMetricSet -> Maybe [MetricSetDimensionFilter]
dimensionFilterList :: Prelude.Maybe [MetricSetDimensionFilter],
    -- | The dimension list.
    UpdateMetricSet -> Maybe (NonEmpty Text)
dimensionList :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | The metric list.
    UpdateMetricSet -> Maybe (NonEmpty Metric)
metricList :: Prelude.Maybe (Prelude.NonEmpty Metric),
    -- | The dataset\'s description.
    UpdateMetricSet -> Maybe Text
metricSetDescription :: Prelude.Maybe Prelude.Text,
    -- | The dataset\'s interval.
    UpdateMetricSet -> Maybe Frequency
metricSetFrequency :: Prelude.Maybe Frequency,
    UpdateMetricSet -> Maybe MetricSource
metricSource :: Prelude.Maybe MetricSource,
    -- | After an interval ends, the amount of seconds that the detector waits
    -- before importing data. Offset is only supported for S3, Redshift, Athena
    -- and datasources.
    UpdateMetricSet -> Maybe Natural
offset :: Prelude.Maybe Prelude.Natural,
    -- | The timestamp column.
    UpdateMetricSet -> Maybe TimestampColumn
timestampColumn :: Prelude.Maybe TimestampColumn,
    -- | The ARN of the dataset to update.
    UpdateMetricSet -> Text
metricSetArn :: Prelude.Text
  }
  deriving (UpdateMetricSet -> UpdateMetricSet -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateMetricSet -> UpdateMetricSet -> Bool
$c/= :: UpdateMetricSet -> UpdateMetricSet -> Bool
== :: UpdateMetricSet -> UpdateMetricSet -> Bool
$c== :: UpdateMetricSet -> UpdateMetricSet -> Bool
Prelude.Eq, ReadPrec [UpdateMetricSet]
ReadPrec UpdateMetricSet
Int -> ReadS UpdateMetricSet
ReadS [UpdateMetricSet]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateMetricSet]
$creadListPrec :: ReadPrec [UpdateMetricSet]
readPrec :: ReadPrec UpdateMetricSet
$creadPrec :: ReadPrec UpdateMetricSet
readList :: ReadS [UpdateMetricSet]
$creadList :: ReadS [UpdateMetricSet]
readsPrec :: Int -> ReadS UpdateMetricSet
$creadsPrec :: Int -> ReadS UpdateMetricSet
Prelude.Read, Int -> UpdateMetricSet -> ShowS
[UpdateMetricSet] -> ShowS
UpdateMetricSet -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateMetricSet] -> ShowS
$cshowList :: [UpdateMetricSet] -> ShowS
show :: UpdateMetricSet -> String
$cshow :: UpdateMetricSet -> String
showsPrec :: Int -> UpdateMetricSet -> ShowS
$cshowsPrec :: Int -> UpdateMetricSet -> ShowS
Prelude.Show, forall x. Rep UpdateMetricSet x -> UpdateMetricSet
forall x. UpdateMetricSet -> Rep UpdateMetricSet x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateMetricSet x -> UpdateMetricSet
$cfrom :: forall x. UpdateMetricSet -> Rep UpdateMetricSet x
Prelude.Generic)

-- |
-- Create a value of 'UpdateMetricSet' 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:
--
-- 'dimensionFilterList', 'updateMetricSet_dimensionFilterList' - Describes a list of filters for choosing specific dimensions and
-- specific values. Each filter consists of the dimension and one of its
-- values that you want to include. When multiple dimensions or values are
-- specified, the dimensions are joined with an AND operation and the
-- values are joined with an OR operation.
--
-- 'dimensionList', 'updateMetricSet_dimensionList' - The dimension list.
--
-- 'metricList', 'updateMetricSet_metricList' - The metric list.
--
-- 'metricSetDescription', 'updateMetricSet_metricSetDescription' - The dataset\'s description.
--
-- 'metricSetFrequency', 'updateMetricSet_metricSetFrequency' - The dataset\'s interval.
--
-- 'metricSource', 'updateMetricSet_metricSource' - Undocumented member.
--
-- 'offset', 'updateMetricSet_offset' - After an interval ends, the amount of seconds that the detector waits
-- before importing data. Offset is only supported for S3, Redshift, Athena
-- and datasources.
--
-- 'timestampColumn', 'updateMetricSet_timestampColumn' - The timestamp column.
--
-- 'metricSetArn', 'updateMetricSet_metricSetArn' - The ARN of the dataset to update.
newUpdateMetricSet ::
  -- | 'metricSetArn'
  Prelude.Text ->
  UpdateMetricSet
newUpdateMetricSet :: Text -> UpdateMetricSet
newUpdateMetricSet Text
pMetricSetArn_ =
  UpdateMetricSet'
    { $sel:dimensionFilterList:UpdateMetricSet' :: Maybe [MetricSetDimensionFilter]
dimensionFilterList =
        forall a. Maybe a
Prelude.Nothing,
      $sel:dimensionList:UpdateMetricSet' :: Maybe (NonEmpty Text)
dimensionList = forall a. Maybe a
Prelude.Nothing,
      $sel:metricList:UpdateMetricSet' :: Maybe (NonEmpty Metric)
metricList = forall a. Maybe a
Prelude.Nothing,
      $sel:metricSetDescription:UpdateMetricSet' :: Maybe Text
metricSetDescription = forall a. Maybe a
Prelude.Nothing,
      $sel:metricSetFrequency:UpdateMetricSet' :: Maybe Frequency
metricSetFrequency = forall a. Maybe a
Prelude.Nothing,
      $sel:metricSource:UpdateMetricSet' :: Maybe MetricSource
metricSource = forall a. Maybe a
Prelude.Nothing,
      $sel:offset:UpdateMetricSet' :: Maybe Natural
offset = forall a. Maybe a
Prelude.Nothing,
      $sel:timestampColumn:UpdateMetricSet' :: Maybe TimestampColumn
timestampColumn = forall a. Maybe a
Prelude.Nothing,
      $sel:metricSetArn:UpdateMetricSet' :: Text
metricSetArn = Text
pMetricSetArn_
    }

-- | Describes a list of filters for choosing specific dimensions and
-- specific values. Each filter consists of the dimension and one of its
-- values that you want to include. When multiple dimensions or values are
-- specified, the dimensions are joined with an AND operation and the
-- values are joined with an OR operation.
updateMetricSet_dimensionFilterList :: Lens.Lens' UpdateMetricSet (Prelude.Maybe [MetricSetDimensionFilter])
updateMetricSet_dimensionFilterList :: Lens' UpdateMetricSet (Maybe [MetricSetDimensionFilter])
updateMetricSet_dimensionFilterList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMetricSet' {Maybe [MetricSetDimensionFilter]
dimensionFilterList :: Maybe [MetricSetDimensionFilter]
$sel:dimensionFilterList:UpdateMetricSet' :: UpdateMetricSet -> Maybe [MetricSetDimensionFilter]
dimensionFilterList} -> Maybe [MetricSetDimensionFilter]
dimensionFilterList) (\s :: UpdateMetricSet
s@UpdateMetricSet' {} Maybe [MetricSetDimensionFilter]
a -> UpdateMetricSet
s {$sel:dimensionFilterList:UpdateMetricSet' :: Maybe [MetricSetDimensionFilter]
dimensionFilterList = Maybe [MetricSetDimensionFilter]
a} :: UpdateMetricSet) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The dimension list.
updateMetricSet_dimensionList :: Lens.Lens' UpdateMetricSet (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
updateMetricSet_dimensionList :: Lens' UpdateMetricSet (Maybe (NonEmpty Text))
updateMetricSet_dimensionList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMetricSet' {Maybe (NonEmpty Text)
dimensionList :: Maybe (NonEmpty Text)
$sel:dimensionList:UpdateMetricSet' :: UpdateMetricSet -> Maybe (NonEmpty Text)
dimensionList} -> Maybe (NonEmpty Text)
dimensionList) (\s :: UpdateMetricSet
s@UpdateMetricSet' {} Maybe (NonEmpty Text)
a -> UpdateMetricSet
s {$sel:dimensionList:UpdateMetricSet' :: Maybe (NonEmpty Text)
dimensionList = Maybe (NonEmpty Text)
a} :: UpdateMetricSet) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The metric list.
updateMetricSet_metricList :: Lens.Lens' UpdateMetricSet (Prelude.Maybe (Prelude.NonEmpty Metric))
updateMetricSet_metricList :: Lens' UpdateMetricSet (Maybe (NonEmpty Metric))
updateMetricSet_metricList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMetricSet' {Maybe (NonEmpty Metric)
metricList :: Maybe (NonEmpty Metric)
$sel:metricList:UpdateMetricSet' :: UpdateMetricSet -> Maybe (NonEmpty Metric)
metricList} -> Maybe (NonEmpty Metric)
metricList) (\s :: UpdateMetricSet
s@UpdateMetricSet' {} Maybe (NonEmpty Metric)
a -> UpdateMetricSet
s {$sel:metricList:UpdateMetricSet' :: Maybe (NonEmpty Metric)
metricList = Maybe (NonEmpty Metric)
a} :: UpdateMetricSet) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The dataset\'s description.
updateMetricSet_metricSetDescription :: Lens.Lens' UpdateMetricSet (Prelude.Maybe Prelude.Text)
updateMetricSet_metricSetDescription :: Lens' UpdateMetricSet (Maybe Text)
updateMetricSet_metricSetDescription = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMetricSet' {Maybe Text
metricSetDescription :: Maybe Text
$sel:metricSetDescription:UpdateMetricSet' :: UpdateMetricSet -> Maybe Text
metricSetDescription} -> Maybe Text
metricSetDescription) (\s :: UpdateMetricSet
s@UpdateMetricSet' {} Maybe Text
a -> UpdateMetricSet
s {$sel:metricSetDescription:UpdateMetricSet' :: Maybe Text
metricSetDescription = Maybe Text
a} :: UpdateMetricSet)

-- | The dataset\'s interval.
updateMetricSet_metricSetFrequency :: Lens.Lens' UpdateMetricSet (Prelude.Maybe Frequency)
updateMetricSet_metricSetFrequency :: Lens' UpdateMetricSet (Maybe Frequency)
updateMetricSet_metricSetFrequency = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMetricSet' {Maybe Frequency
metricSetFrequency :: Maybe Frequency
$sel:metricSetFrequency:UpdateMetricSet' :: UpdateMetricSet -> Maybe Frequency
metricSetFrequency} -> Maybe Frequency
metricSetFrequency) (\s :: UpdateMetricSet
s@UpdateMetricSet' {} Maybe Frequency
a -> UpdateMetricSet
s {$sel:metricSetFrequency:UpdateMetricSet' :: Maybe Frequency
metricSetFrequency = Maybe Frequency
a} :: UpdateMetricSet)

-- | Undocumented member.
updateMetricSet_metricSource :: Lens.Lens' UpdateMetricSet (Prelude.Maybe MetricSource)
updateMetricSet_metricSource :: Lens' UpdateMetricSet (Maybe MetricSource)
updateMetricSet_metricSource = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMetricSet' {Maybe MetricSource
metricSource :: Maybe MetricSource
$sel:metricSource:UpdateMetricSet' :: UpdateMetricSet -> Maybe MetricSource
metricSource} -> Maybe MetricSource
metricSource) (\s :: UpdateMetricSet
s@UpdateMetricSet' {} Maybe MetricSource
a -> UpdateMetricSet
s {$sel:metricSource:UpdateMetricSet' :: Maybe MetricSource
metricSource = Maybe MetricSource
a} :: UpdateMetricSet)

-- | After an interval ends, the amount of seconds that the detector waits
-- before importing data. Offset is only supported for S3, Redshift, Athena
-- and datasources.
updateMetricSet_offset :: Lens.Lens' UpdateMetricSet (Prelude.Maybe Prelude.Natural)
updateMetricSet_offset :: Lens' UpdateMetricSet (Maybe Natural)
updateMetricSet_offset = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMetricSet' {Maybe Natural
offset :: Maybe Natural
$sel:offset:UpdateMetricSet' :: UpdateMetricSet -> Maybe Natural
offset} -> Maybe Natural
offset) (\s :: UpdateMetricSet
s@UpdateMetricSet' {} Maybe Natural
a -> UpdateMetricSet
s {$sel:offset:UpdateMetricSet' :: Maybe Natural
offset = Maybe Natural
a} :: UpdateMetricSet)

-- | The timestamp column.
updateMetricSet_timestampColumn :: Lens.Lens' UpdateMetricSet (Prelude.Maybe TimestampColumn)
updateMetricSet_timestampColumn :: Lens' UpdateMetricSet (Maybe TimestampColumn)
updateMetricSet_timestampColumn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMetricSet' {Maybe TimestampColumn
timestampColumn :: Maybe TimestampColumn
$sel:timestampColumn:UpdateMetricSet' :: UpdateMetricSet -> Maybe TimestampColumn
timestampColumn} -> Maybe TimestampColumn
timestampColumn) (\s :: UpdateMetricSet
s@UpdateMetricSet' {} Maybe TimestampColumn
a -> UpdateMetricSet
s {$sel:timestampColumn:UpdateMetricSet' :: Maybe TimestampColumn
timestampColumn = Maybe TimestampColumn
a} :: UpdateMetricSet)

-- | The ARN of the dataset to update.
updateMetricSet_metricSetArn :: Lens.Lens' UpdateMetricSet Prelude.Text
updateMetricSet_metricSetArn :: Lens' UpdateMetricSet Text
updateMetricSet_metricSetArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMetricSet' {Text
metricSetArn :: Text
$sel:metricSetArn:UpdateMetricSet' :: UpdateMetricSet -> Text
metricSetArn} -> Text
metricSetArn) (\s :: UpdateMetricSet
s@UpdateMetricSet' {} Text
a -> UpdateMetricSet
s {$sel:metricSetArn:UpdateMetricSet' :: Text
metricSetArn = Text
a} :: UpdateMetricSet)

instance Core.AWSRequest UpdateMetricSet where
  type
    AWSResponse UpdateMetricSet =
      UpdateMetricSetResponse
  request :: (Service -> Service) -> UpdateMetricSet -> Request UpdateMetricSet
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateMetricSet
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse UpdateMetricSet)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Int -> UpdateMetricSetResponse
UpdateMetricSetResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"MetricSetArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable UpdateMetricSet where
  hashWithSalt :: Int -> UpdateMetricSet -> Int
hashWithSalt Int
_salt UpdateMetricSet' {Maybe Natural
Maybe [MetricSetDimensionFilter]
Maybe (NonEmpty Text)
Maybe (NonEmpty Metric)
Maybe Text
Maybe Frequency
Maybe TimestampColumn
Maybe MetricSource
Text
metricSetArn :: Text
timestampColumn :: Maybe TimestampColumn
offset :: Maybe Natural
metricSource :: Maybe MetricSource
metricSetFrequency :: Maybe Frequency
metricSetDescription :: Maybe Text
metricList :: Maybe (NonEmpty Metric)
dimensionList :: Maybe (NonEmpty Text)
dimensionFilterList :: Maybe [MetricSetDimensionFilter]
$sel:metricSetArn:UpdateMetricSet' :: UpdateMetricSet -> Text
$sel:timestampColumn:UpdateMetricSet' :: UpdateMetricSet -> Maybe TimestampColumn
$sel:offset:UpdateMetricSet' :: UpdateMetricSet -> Maybe Natural
$sel:metricSource:UpdateMetricSet' :: UpdateMetricSet -> Maybe MetricSource
$sel:metricSetFrequency:UpdateMetricSet' :: UpdateMetricSet -> Maybe Frequency
$sel:metricSetDescription:UpdateMetricSet' :: UpdateMetricSet -> Maybe Text
$sel:metricList:UpdateMetricSet' :: UpdateMetricSet -> Maybe (NonEmpty Metric)
$sel:dimensionList:UpdateMetricSet' :: UpdateMetricSet -> Maybe (NonEmpty Text)
$sel:dimensionFilterList:UpdateMetricSet' :: UpdateMetricSet -> Maybe [MetricSetDimensionFilter]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [MetricSetDimensionFilter]
dimensionFilterList
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Text)
dimensionList
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Metric)
metricList
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
metricSetDescription
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Frequency
metricSetFrequency
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe MetricSource
metricSource
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
offset
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimestampColumn
timestampColumn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
metricSetArn

instance Prelude.NFData UpdateMetricSet where
  rnf :: UpdateMetricSet -> ()
rnf UpdateMetricSet' {Maybe Natural
Maybe [MetricSetDimensionFilter]
Maybe (NonEmpty Text)
Maybe (NonEmpty Metric)
Maybe Text
Maybe Frequency
Maybe TimestampColumn
Maybe MetricSource
Text
metricSetArn :: Text
timestampColumn :: Maybe TimestampColumn
offset :: Maybe Natural
metricSource :: Maybe MetricSource
metricSetFrequency :: Maybe Frequency
metricSetDescription :: Maybe Text
metricList :: Maybe (NonEmpty Metric)
dimensionList :: Maybe (NonEmpty Text)
dimensionFilterList :: Maybe [MetricSetDimensionFilter]
$sel:metricSetArn:UpdateMetricSet' :: UpdateMetricSet -> Text
$sel:timestampColumn:UpdateMetricSet' :: UpdateMetricSet -> Maybe TimestampColumn
$sel:offset:UpdateMetricSet' :: UpdateMetricSet -> Maybe Natural
$sel:metricSource:UpdateMetricSet' :: UpdateMetricSet -> Maybe MetricSource
$sel:metricSetFrequency:UpdateMetricSet' :: UpdateMetricSet -> Maybe Frequency
$sel:metricSetDescription:UpdateMetricSet' :: UpdateMetricSet -> Maybe Text
$sel:metricList:UpdateMetricSet' :: UpdateMetricSet -> Maybe (NonEmpty Metric)
$sel:dimensionList:UpdateMetricSet' :: UpdateMetricSet -> Maybe (NonEmpty Text)
$sel:dimensionFilterList:UpdateMetricSet' :: UpdateMetricSet -> Maybe [MetricSetDimensionFilter]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [MetricSetDimensionFilter]
dimensionFilterList
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
dimensionList
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Metric)
metricList
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
metricSetDescription
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Frequency
metricSetFrequency
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe MetricSource
metricSource
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
offset
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimestampColumn
timestampColumn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
metricSetArn

instance Data.ToHeaders UpdateMetricSet where
  toHeaders :: UpdateMetricSet -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateMetricSet where
  toJSON :: UpdateMetricSet -> Value
toJSON UpdateMetricSet' {Maybe Natural
Maybe [MetricSetDimensionFilter]
Maybe (NonEmpty Text)
Maybe (NonEmpty Metric)
Maybe Text
Maybe Frequency
Maybe TimestampColumn
Maybe MetricSource
Text
metricSetArn :: Text
timestampColumn :: Maybe TimestampColumn
offset :: Maybe Natural
metricSource :: Maybe MetricSource
metricSetFrequency :: Maybe Frequency
metricSetDescription :: Maybe Text
metricList :: Maybe (NonEmpty Metric)
dimensionList :: Maybe (NonEmpty Text)
dimensionFilterList :: Maybe [MetricSetDimensionFilter]
$sel:metricSetArn:UpdateMetricSet' :: UpdateMetricSet -> Text
$sel:timestampColumn:UpdateMetricSet' :: UpdateMetricSet -> Maybe TimestampColumn
$sel:offset:UpdateMetricSet' :: UpdateMetricSet -> Maybe Natural
$sel:metricSource:UpdateMetricSet' :: UpdateMetricSet -> Maybe MetricSource
$sel:metricSetFrequency:UpdateMetricSet' :: UpdateMetricSet -> Maybe Frequency
$sel:metricSetDescription:UpdateMetricSet' :: UpdateMetricSet -> Maybe Text
$sel:metricList:UpdateMetricSet' :: UpdateMetricSet -> Maybe (NonEmpty Metric)
$sel:dimensionList:UpdateMetricSet' :: UpdateMetricSet -> Maybe (NonEmpty Text)
$sel:dimensionFilterList:UpdateMetricSet' :: UpdateMetricSet -> Maybe [MetricSetDimensionFilter]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"DimensionFilterList" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [MetricSetDimensionFilter]
dimensionFilterList,
            (Key
"DimensionList" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Text)
dimensionList,
            (Key
"MetricList" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty Metric)
metricList,
            (Key
"MetricSetDescription" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
metricSetDescription,
            (Key
"MetricSetFrequency" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Frequency
metricSetFrequency,
            (Key
"MetricSource" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe MetricSource
metricSource,
            (Key
"Offset" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Natural
offset,
            (Key
"TimestampColumn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TimestampColumn
timestampColumn,
            forall a. a -> Maybe a
Prelude.Just (Key
"MetricSetArn" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
metricSetArn)
          ]
      )

instance Data.ToPath UpdateMetricSet where
  toPath :: UpdateMetricSet -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/UpdateMetricSet"

instance Data.ToQuery UpdateMetricSet where
  toQuery :: UpdateMetricSet -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newUpdateMetricSetResponse' smart constructor.
data UpdateMetricSetResponse = UpdateMetricSetResponse'
  { -- | The ARN of the dataset.
    UpdateMetricSetResponse -> Maybe Text
metricSetArn :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    UpdateMetricSetResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (UpdateMetricSetResponse -> UpdateMetricSetResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateMetricSetResponse -> UpdateMetricSetResponse -> Bool
$c/= :: UpdateMetricSetResponse -> UpdateMetricSetResponse -> Bool
== :: UpdateMetricSetResponse -> UpdateMetricSetResponse -> Bool
$c== :: UpdateMetricSetResponse -> UpdateMetricSetResponse -> Bool
Prelude.Eq, ReadPrec [UpdateMetricSetResponse]
ReadPrec UpdateMetricSetResponse
Int -> ReadS UpdateMetricSetResponse
ReadS [UpdateMetricSetResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateMetricSetResponse]
$creadListPrec :: ReadPrec [UpdateMetricSetResponse]
readPrec :: ReadPrec UpdateMetricSetResponse
$creadPrec :: ReadPrec UpdateMetricSetResponse
readList :: ReadS [UpdateMetricSetResponse]
$creadList :: ReadS [UpdateMetricSetResponse]
readsPrec :: Int -> ReadS UpdateMetricSetResponse
$creadsPrec :: Int -> ReadS UpdateMetricSetResponse
Prelude.Read, Int -> UpdateMetricSetResponse -> ShowS
[UpdateMetricSetResponse] -> ShowS
UpdateMetricSetResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateMetricSetResponse] -> ShowS
$cshowList :: [UpdateMetricSetResponse] -> ShowS
show :: UpdateMetricSetResponse -> String
$cshow :: UpdateMetricSetResponse -> String
showsPrec :: Int -> UpdateMetricSetResponse -> ShowS
$cshowsPrec :: Int -> UpdateMetricSetResponse -> ShowS
Prelude.Show, forall x. Rep UpdateMetricSetResponse x -> UpdateMetricSetResponse
forall x. UpdateMetricSetResponse -> Rep UpdateMetricSetResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateMetricSetResponse x -> UpdateMetricSetResponse
$cfrom :: forall x. UpdateMetricSetResponse -> Rep UpdateMetricSetResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateMetricSetResponse' 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:
--
-- 'metricSetArn', 'updateMetricSetResponse_metricSetArn' - The ARN of the dataset.
--
-- 'httpStatus', 'updateMetricSetResponse_httpStatus' - The response's http status code.
newUpdateMetricSetResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  UpdateMetricSetResponse
newUpdateMetricSetResponse :: Int -> UpdateMetricSetResponse
newUpdateMetricSetResponse Int
pHttpStatus_ =
  UpdateMetricSetResponse'
    { $sel:metricSetArn:UpdateMetricSetResponse' :: Maybe Text
metricSetArn =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:UpdateMetricSetResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The ARN of the dataset.
updateMetricSetResponse_metricSetArn :: Lens.Lens' UpdateMetricSetResponse (Prelude.Maybe Prelude.Text)
updateMetricSetResponse_metricSetArn :: Lens' UpdateMetricSetResponse (Maybe Text)
updateMetricSetResponse_metricSetArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMetricSetResponse' {Maybe Text
metricSetArn :: Maybe Text
$sel:metricSetArn:UpdateMetricSetResponse' :: UpdateMetricSetResponse -> Maybe Text
metricSetArn} -> Maybe Text
metricSetArn) (\s :: UpdateMetricSetResponse
s@UpdateMetricSetResponse' {} Maybe Text
a -> UpdateMetricSetResponse
s {$sel:metricSetArn:UpdateMetricSetResponse' :: Maybe Text
metricSetArn = Maybe Text
a} :: UpdateMetricSetResponse)

-- | The response's http status code.
updateMetricSetResponse_httpStatus :: Lens.Lens' UpdateMetricSetResponse Prelude.Int
updateMetricSetResponse_httpStatus :: Lens' UpdateMetricSetResponse Int
updateMetricSetResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateMetricSetResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateMetricSetResponse' :: UpdateMetricSetResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: UpdateMetricSetResponse
s@UpdateMetricSetResponse' {} Int
a -> UpdateMetricSetResponse
s {$sel:httpStatus:UpdateMetricSetResponse' :: Int
httpStatus = Int
a} :: UpdateMetricSetResponse)

instance Prelude.NFData UpdateMetricSetResponse where
  rnf :: UpdateMetricSetResponse -> ()
rnf UpdateMetricSetResponse' {Int
Maybe Text
httpStatus :: Int
metricSetArn :: Maybe Text
$sel:httpStatus:UpdateMetricSetResponse' :: UpdateMetricSetResponse -> Int
$sel:metricSetArn:UpdateMetricSetResponse' :: UpdateMetricSetResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
metricSetArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus