{-# 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 #-}
module Amazonka.ElasticSearch.Types.Limits where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ElasticSearch.Types.AdditionalLimit
import Amazonka.ElasticSearch.Types.InstanceLimits
import Amazonka.ElasticSearch.Types.StorageType
import qualified Amazonka.Prelude as Prelude
data Limits = Limits'
{
Limits -> Maybe [AdditionalLimit]
additionalLimits :: Prelude.Maybe [AdditionalLimit],
Limits -> Maybe InstanceLimits
instanceLimits :: Prelude.Maybe InstanceLimits,
Limits -> Maybe [StorageType]
storageTypes :: Prelude.Maybe [StorageType]
}
deriving (Limits -> Limits -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Limits -> Limits -> Bool
$c/= :: Limits -> Limits -> Bool
== :: Limits -> Limits -> Bool
$c== :: Limits -> Limits -> Bool
Prelude.Eq, ReadPrec [Limits]
ReadPrec Limits
Int -> ReadS Limits
ReadS [Limits]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Limits]
$creadListPrec :: ReadPrec [Limits]
readPrec :: ReadPrec Limits
$creadPrec :: ReadPrec Limits
readList :: ReadS [Limits]
$creadList :: ReadS [Limits]
readsPrec :: Int -> ReadS Limits
$creadsPrec :: Int -> ReadS Limits
Prelude.Read, Int -> Limits -> ShowS
[Limits] -> ShowS
Limits -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Limits] -> ShowS
$cshowList :: [Limits] -> ShowS
show :: Limits -> String
$cshow :: Limits -> String
showsPrec :: Int -> Limits -> ShowS
$cshowsPrec :: Int -> Limits -> ShowS
Prelude.Show, forall x. Rep Limits x -> Limits
forall x. Limits -> Rep Limits x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Limits x -> Limits
$cfrom :: forall x. Limits -> Rep Limits x
Prelude.Generic)
newLimits ::
Limits
newLimits :: Limits
newLimits =
Limits'
{ $sel:additionalLimits:Limits' :: Maybe [AdditionalLimit]
additionalLimits = forall a. Maybe a
Prelude.Nothing,
$sel:instanceLimits:Limits' :: Maybe InstanceLimits
instanceLimits = forall a. Maybe a
Prelude.Nothing,
$sel:storageTypes:Limits' :: Maybe [StorageType]
storageTypes = forall a. Maybe a
Prelude.Nothing
}
limits_additionalLimits :: Lens.Lens' Limits (Prelude.Maybe [AdditionalLimit])
limits_additionalLimits :: Lens' Limits (Maybe [AdditionalLimit])
limits_additionalLimits = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Limits' {Maybe [AdditionalLimit]
additionalLimits :: Maybe [AdditionalLimit]
$sel:additionalLimits:Limits' :: Limits -> Maybe [AdditionalLimit]
additionalLimits} -> Maybe [AdditionalLimit]
additionalLimits) (\s :: Limits
s@Limits' {} Maybe [AdditionalLimit]
a -> Limits
s {$sel:additionalLimits:Limits' :: Maybe [AdditionalLimit]
additionalLimits = Maybe [AdditionalLimit]
a} :: Limits) 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
limits_instanceLimits :: Lens.Lens' Limits (Prelude.Maybe InstanceLimits)
limits_instanceLimits :: Lens' Limits (Maybe InstanceLimits)
limits_instanceLimits = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Limits' {Maybe InstanceLimits
instanceLimits :: Maybe InstanceLimits
$sel:instanceLimits:Limits' :: Limits -> Maybe InstanceLimits
instanceLimits} -> Maybe InstanceLimits
instanceLimits) (\s :: Limits
s@Limits' {} Maybe InstanceLimits
a -> Limits
s {$sel:instanceLimits:Limits' :: Maybe InstanceLimits
instanceLimits = Maybe InstanceLimits
a} :: Limits)
limits_storageTypes :: Lens.Lens' Limits (Prelude.Maybe [StorageType])
limits_storageTypes :: Lens' Limits (Maybe [StorageType])
limits_storageTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Limits' {Maybe [StorageType]
storageTypes :: Maybe [StorageType]
$sel:storageTypes:Limits' :: Limits -> Maybe [StorageType]
storageTypes} -> Maybe [StorageType]
storageTypes) (\s :: Limits
s@Limits' {} Maybe [StorageType]
a -> Limits
s {$sel:storageTypes:Limits' :: Maybe [StorageType]
storageTypes = Maybe [StorageType]
a} :: Limits) 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
instance Data.FromJSON Limits where
parseJSON :: Value -> Parser Limits
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"Limits"
( \Object
x ->
Maybe [AdditionalLimit]
-> Maybe InstanceLimits -> Maybe [StorageType] -> Limits
Limits'
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
"AdditionalLimits"
forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
)
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
"InstanceLimits")
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
"StorageTypes" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
)
instance Prelude.Hashable Limits where
hashWithSalt :: Int -> Limits -> Int
hashWithSalt Int
_salt Limits' {Maybe [AdditionalLimit]
Maybe [StorageType]
Maybe InstanceLimits
storageTypes :: Maybe [StorageType]
instanceLimits :: Maybe InstanceLimits
additionalLimits :: Maybe [AdditionalLimit]
$sel:storageTypes:Limits' :: Limits -> Maybe [StorageType]
$sel:instanceLimits:Limits' :: Limits -> Maybe InstanceLimits
$sel:additionalLimits:Limits' :: Limits -> Maybe [AdditionalLimit]
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [AdditionalLimit]
additionalLimits
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceLimits
instanceLimits
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [StorageType]
storageTypes
instance Prelude.NFData Limits where
rnf :: Limits -> ()
rnf Limits' {Maybe [AdditionalLimit]
Maybe [StorageType]
Maybe InstanceLimits
storageTypes :: Maybe [StorageType]
instanceLimits :: Maybe InstanceLimits
additionalLimits :: Maybe [AdditionalLimit]
$sel:storageTypes:Limits' :: Limits -> Maybe [StorageType]
$sel:instanceLimits:Limits' :: Limits -> Maybe InstanceLimits
$sel:additionalLimits:Limits' :: Limits -> Maybe [AdditionalLimit]
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe [AdditionalLimit]
additionalLimits
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceLimits
instanceLimits
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [StorageType]
storageTypes