{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

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

-- |
-- Module      : Amazonka.KinesisAnalyticsV2.Types.MetricsLevel
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.KinesisAnalyticsV2.Types.MetricsLevel
  ( MetricsLevel
      ( ..,
        MetricsLevel_APPLICATION,
        MetricsLevel_OPERATOR,
        MetricsLevel_PARALLELISM,
        MetricsLevel_TASK
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

newtype MetricsLevel = MetricsLevel'
  { MetricsLevel -> Text
fromMetricsLevel ::
      Core.Text
  }
  deriving stock
    ( Int -> MetricsLevel -> ShowS
[MetricsLevel] -> ShowS
MetricsLevel -> String
(Int -> MetricsLevel -> ShowS)
-> (MetricsLevel -> String)
-> ([MetricsLevel] -> ShowS)
-> Show MetricsLevel
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MetricsLevel] -> ShowS
$cshowList :: [MetricsLevel] -> ShowS
show :: MetricsLevel -> String
$cshow :: MetricsLevel -> String
showsPrec :: Int -> MetricsLevel -> ShowS
$cshowsPrec :: Int -> MetricsLevel -> ShowS
Prelude.Show,
      ReadPrec [MetricsLevel]
ReadPrec MetricsLevel
Int -> ReadS MetricsLevel
ReadS [MetricsLevel]
(Int -> ReadS MetricsLevel)
-> ReadS [MetricsLevel]
-> ReadPrec MetricsLevel
-> ReadPrec [MetricsLevel]
-> Read MetricsLevel
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MetricsLevel]
$creadListPrec :: ReadPrec [MetricsLevel]
readPrec :: ReadPrec MetricsLevel
$creadPrec :: ReadPrec MetricsLevel
readList :: ReadS [MetricsLevel]
$creadList :: ReadS [MetricsLevel]
readsPrec :: Int -> ReadS MetricsLevel
$creadsPrec :: Int -> ReadS MetricsLevel
Prelude.Read,
      MetricsLevel -> MetricsLevel -> Bool
(MetricsLevel -> MetricsLevel -> Bool)
-> (MetricsLevel -> MetricsLevel -> Bool) -> Eq MetricsLevel
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MetricsLevel -> MetricsLevel -> Bool
$c/= :: MetricsLevel -> MetricsLevel -> Bool
== :: MetricsLevel -> MetricsLevel -> Bool
$c== :: MetricsLevel -> MetricsLevel -> Bool
Prelude.Eq,
      Eq MetricsLevel
Eq MetricsLevel
-> (MetricsLevel -> MetricsLevel -> Ordering)
-> (MetricsLevel -> MetricsLevel -> Bool)
-> (MetricsLevel -> MetricsLevel -> Bool)
-> (MetricsLevel -> MetricsLevel -> Bool)
-> (MetricsLevel -> MetricsLevel -> Bool)
-> (MetricsLevel -> MetricsLevel -> MetricsLevel)
-> (MetricsLevel -> MetricsLevel -> MetricsLevel)
-> Ord MetricsLevel
MetricsLevel -> MetricsLevel -> Bool
MetricsLevel -> MetricsLevel -> Ordering
MetricsLevel -> MetricsLevel -> MetricsLevel
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: MetricsLevel -> MetricsLevel -> MetricsLevel
$cmin :: MetricsLevel -> MetricsLevel -> MetricsLevel
max :: MetricsLevel -> MetricsLevel -> MetricsLevel
$cmax :: MetricsLevel -> MetricsLevel -> MetricsLevel
>= :: MetricsLevel -> MetricsLevel -> Bool
$c>= :: MetricsLevel -> MetricsLevel -> Bool
> :: MetricsLevel -> MetricsLevel -> Bool
$c> :: MetricsLevel -> MetricsLevel -> Bool
<= :: MetricsLevel -> MetricsLevel -> Bool
$c<= :: MetricsLevel -> MetricsLevel -> Bool
< :: MetricsLevel -> MetricsLevel -> Bool
$c< :: MetricsLevel -> MetricsLevel -> Bool
compare :: MetricsLevel -> MetricsLevel -> Ordering
$ccompare :: MetricsLevel -> MetricsLevel -> Ordering
$cp1Ord :: Eq MetricsLevel
Prelude.Ord,
      (forall x. MetricsLevel -> Rep MetricsLevel x)
-> (forall x. Rep MetricsLevel x -> MetricsLevel)
-> Generic MetricsLevel
forall x. Rep MetricsLevel x -> MetricsLevel
forall x. MetricsLevel -> Rep MetricsLevel x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MetricsLevel x -> MetricsLevel
$cfrom :: forall x. MetricsLevel -> Rep MetricsLevel x
Prelude.Generic
    )
  deriving newtype
    ( Int -> MetricsLevel -> Int
MetricsLevel -> Int
(Int -> MetricsLevel -> Int)
-> (MetricsLevel -> Int) -> Hashable MetricsLevel
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: MetricsLevel -> Int
$chash :: MetricsLevel -> Int
hashWithSalt :: Int -> MetricsLevel -> Int
$chashWithSalt :: Int -> MetricsLevel -> Int
Prelude.Hashable,
      MetricsLevel -> ()
(MetricsLevel -> ()) -> NFData MetricsLevel
forall a. (a -> ()) -> NFData a
rnf :: MetricsLevel -> ()
$crnf :: MetricsLevel -> ()
Prelude.NFData,
      Text -> Either String MetricsLevel
(Text -> Either String MetricsLevel) -> FromText MetricsLevel
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String MetricsLevel
$cfromText :: Text -> Either String MetricsLevel
Core.FromText,
      MetricsLevel -> Text
(MetricsLevel -> Text) -> ToText MetricsLevel
forall a. (a -> Text) -> ToText a
toText :: MetricsLevel -> Text
$ctoText :: MetricsLevel -> Text
Core.ToText,
      MetricsLevel -> ByteString
(MetricsLevel -> ByteString) -> ToByteString MetricsLevel
forall a. (a -> ByteString) -> ToByteString a
toBS :: MetricsLevel -> ByteString
$ctoBS :: MetricsLevel -> ByteString
Core.ToByteString,
      MetricsLevel -> ByteStringBuilder
(MetricsLevel -> ByteStringBuilder) -> ToLog MetricsLevel
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: MetricsLevel -> ByteStringBuilder
$cbuild :: MetricsLevel -> ByteStringBuilder
Core.ToLog,
      HeaderName -> MetricsLevel -> [Header]
(HeaderName -> MetricsLevel -> [Header]) -> ToHeader MetricsLevel
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> MetricsLevel -> [Header]
$ctoHeader :: HeaderName -> MetricsLevel -> [Header]
Core.ToHeader,
      MetricsLevel -> QueryString
(MetricsLevel -> QueryString) -> ToQuery MetricsLevel
forall a. (a -> QueryString) -> ToQuery a
toQuery :: MetricsLevel -> QueryString
$ctoQuery :: MetricsLevel -> QueryString
Core.ToQuery,
      Value -> Parser [MetricsLevel]
Value -> Parser MetricsLevel
(Value -> Parser MetricsLevel)
-> (Value -> Parser [MetricsLevel]) -> FromJSON MetricsLevel
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [MetricsLevel]
$cparseJSONList :: Value -> Parser [MetricsLevel]
parseJSON :: Value -> Parser MetricsLevel
$cparseJSON :: Value -> Parser MetricsLevel
Core.FromJSON,
      FromJSONKeyFunction [MetricsLevel]
FromJSONKeyFunction MetricsLevel
FromJSONKeyFunction MetricsLevel
-> FromJSONKeyFunction [MetricsLevel] -> FromJSONKey MetricsLevel
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [MetricsLevel]
$cfromJSONKeyList :: FromJSONKeyFunction [MetricsLevel]
fromJSONKey :: FromJSONKeyFunction MetricsLevel
$cfromJSONKey :: FromJSONKeyFunction MetricsLevel
Core.FromJSONKey,
      [MetricsLevel] -> Encoding
[MetricsLevel] -> Value
MetricsLevel -> Encoding
MetricsLevel -> Value
(MetricsLevel -> Value)
-> (MetricsLevel -> Encoding)
-> ([MetricsLevel] -> Value)
-> ([MetricsLevel] -> Encoding)
-> ToJSON MetricsLevel
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [MetricsLevel] -> Encoding
$ctoEncodingList :: [MetricsLevel] -> Encoding
toJSONList :: [MetricsLevel] -> Value
$ctoJSONList :: [MetricsLevel] -> Value
toEncoding :: MetricsLevel -> Encoding
$ctoEncoding :: MetricsLevel -> Encoding
toJSON :: MetricsLevel -> Value
$ctoJSON :: MetricsLevel -> Value
Core.ToJSON,
      ToJSONKeyFunction [MetricsLevel]
ToJSONKeyFunction MetricsLevel
ToJSONKeyFunction MetricsLevel
-> ToJSONKeyFunction [MetricsLevel] -> ToJSONKey MetricsLevel
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [MetricsLevel]
$ctoJSONKeyList :: ToJSONKeyFunction [MetricsLevel]
toJSONKey :: ToJSONKeyFunction MetricsLevel
$ctoJSONKey :: ToJSONKeyFunction MetricsLevel
Core.ToJSONKey,
      [Node] -> Either String MetricsLevel
([Node] -> Either String MetricsLevel) -> FromXML MetricsLevel
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String MetricsLevel
$cparseXML :: [Node] -> Either String MetricsLevel
Core.FromXML,
      MetricsLevel -> XML
(MetricsLevel -> XML) -> ToXML MetricsLevel
forall a. (a -> XML) -> ToXML a
toXML :: MetricsLevel -> XML
$ctoXML :: MetricsLevel -> XML
Core.ToXML
    )

pattern MetricsLevel_APPLICATION :: MetricsLevel
pattern $bMetricsLevel_APPLICATION :: MetricsLevel
$mMetricsLevel_APPLICATION :: forall r. MetricsLevel -> (Void# -> r) -> (Void# -> r) -> r
MetricsLevel_APPLICATION = MetricsLevel' "APPLICATION"

pattern MetricsLevel_OPERATOR :: MetricsLevel
pattern $bMetricsLevel_OPERATOR :: MetricsLevel
$mMetricsLevel_OPERATOR :: forall r. MetricsLevel -> (Void# -> r) -> (Void# -> r) -> r
MetricsLevel_OPERATOR = MetricsLevel' "OPERATOR"

pattern MetricsLevel_PARALLELISM :: MetricsLevel
pattern $bMetricsLevel_PARALLELISM :: MetricsLevel
$mMetricsLevel_PARALLELISM :: forall r. MetricsLevel -> (Void# -> r) -> (Void# -> r) -> r
MetricsLevel_PARALLELISM = MetricsLevel' "PARALLELISM"

pattern MetricsLevel_TASK :: MetricsLevel
pattern $bMetricsLevel_TASK :: MetricsLevel
$mMetricsLevel_TASK :: forall r. MetricsLevel -> (Void# -> r) -> (Void# -> r) -> r
MetricsLevel_TASK = MetricsLevel' "TASK"

{-# COMPLETE
  MetricsLevel_APPLICATION,
  MetricsLevel_OPERATOR,
  MetricsLevel_PARALLELISM,
  MetricsLevel_TASK,
  MetricsLevel'
  #-}