{-# 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.Budgets.Types.Definition where
import Amazonka.Budgets.Types.IamActionDefinition
import Amazonka.Budgets.Types.ScpActionDefinition
import Amazonka.Budgets.Types.SsmActionDefinition
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
data Definition = Definition'
{
Definition -> Maybe IamActionDefinition
iamActionDefinition :: Prelude.Maybe IamActionDefinition,
Definition -> Maybe ScpActionDefinition
scpActionDefinition :: Prelude.Maybe ScpActionDefinition,
Definition -> Maybe SsmActionDefinition
ssmActionDefinition :: Prelude.Maybe SsmActionDefinition
}
deriving (Definition -> Definition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Definition -> Definition -> Bool
$c/= :: Definition -> Definition -> Bool
== :: Definition -> Definition -> Bool
$c== :: Definition -> Definition -> Bool
Prelude.Eq, ReadPrec [Definition]
ReadPrec Definition
Int -> ReadS Definition
ReadS [Definition]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Definition]
$creadListPrec :: ReadPrec [Definition]
readPrec :: ReadPrec Definition
$creadPrec :: ReadPrec Definition
readList :: ReadS [Definition]
$creadList :: ReadS [Definition]
readsPrec :: Int -> ReadS Definition
$creadsPrec :: Int -> ReadS Definition
Prelude.Read, Int -> Definition -> ShowS
[Definition] -> ShowS
Definition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Definition] -> ShowS
$cshowList :: [Definition] -> ShowS
show :: Definition -> String
$cshow :: Definition -> String
showsPrec :: Int -> Definition -> ShowS
$cshowsPrec :: Int -> Definition -> ShowS
Prelude.Show, forall x. Rep Definition x -> Definition
forall x. Definition -> Rep Definition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Definition x -> Definition
$cfrom :: forall x. Definition -> Rep Definition x
Prelude.Generic)
newDefinition ::
Definition
newDefinition :: Definition
newDefinition =
Definition'
{ $sel:iamActionDefinition:Definition' :: Maybe IamActionDefinition
iamActionDefinition = forall a. Maybe a
Prelude.Nothing,
$sel:scpActionDefinition:Definition' :: Maybe ScpActionDefinition
scpActionDefinition = forall a. Maybe a
Prelude.Nothing,
$sel:ssmActionDefinition:Definition' :: Maybe SsmActionDefinition
ssmActionDefinition = forall a. Maybe a
Prelude.Nothing
}
definition_iamActionDefinition :: Lens.Lens' Definition (Prelude.Maybe IamActionDefinition)
definition_iamActionDefinition :: Lens' Definition (Maybe IamActionDefinition)
definition_iamActionDefinition = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Definition' {Maybe IamActionDefinition
iamActionDefinition :: Maybe IamActionDefinition
$sel:iamActionDefinition:Definition' :: Definition -> Maybe IamActionDefinition
iamActionDefinition} -> Maybe IamActionDefinition
iamActionDefinition) (\s :: Definition
s@Definition' {} Maybe IamActionDefinition
a -> Definition
s {$sel:iamActionDefinition:Definition' :: Maybe IamActionDefinition
iamActionDefinition = Maybe IamActionDefinition
a} :: Definition)
definition_scpActionDefinition :: Lens.Lens' Definition (Prelude.Maybe ScpActionDefinition)
definition_scpActionDefinition :: Lens' Definition (Maybe ScpActionDefinition)
definition_scpActionDefinition = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Definition' {Maybe ScpActionDefinition
scpActionDefinition :: Maybe ScpActionDefinition
$sel:scpActionDefinition:Definition' :: Definition -> Maybe ScpActionDefinition
scpActionDefinition} -> Maybe ScpActionDefinition
scpActionDefinition) (\s :: Definition
s@Definition' {} Maybe ScpActionDefinition
a -> Definition
s {$sel:scpActionDefinition:Definition' :: Maybe ScpActionDefinition
scpActionDefinition = Maybe ScpActionDefinition
a} :: Definition)
definition_ssmActionDefinition :: Lens.Lens' Definition (Prelude.Maybe SsmActionDefinition)
definition_ssmActionDefinition :: Lens' Definition (Maybe SsmActionDefinition)
definition_ssmActionDefinition = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Definition' {Maybe SsmActionDefinition
ssmActionDefinition :: Maybe SsmActionDefinition
$sel:ssmActionDefinition:Definition' :: Definition -> Maybe SsmActionDefinition
ssmActionDefinition} -> Maybe SsmActionDefinition
ssmActionDefinition) (\s :: Definition
s@Definition' {} Maybe SsmActionDefinition
a -> Definition
s {$sel:ssmActionDefinition:Definition' :: Maybe SsmActionDefinition
ssmActionDefinition = Maybe SsmActionDefinition
a} :: Definition)
instance Data.FromJSON Definition where
parseJSON :: Value -> Parser Definition
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"Definition"
( \Object
x ->
Maybe IamActionDefinition
-> Maybe ScpActionDefinition
-> Maybe SsmActionDefinition
-> Definition
Definition'
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
"IamActionDefinition")
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
"ScpActionDefinition")
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
"SsmActionDefinition")
)
instance Prelude.Hashable Definition where
hashWithSalt :: Int -> Definition -> Int
hashWithSalt Int
_salt Definition' {Maybe IamActionDefinition
Maybe ScpActionDefinition
Maybe SsmActionDefinition
ssmActionDefinition :: Maybe SsmActionDefinition
scpActionDefinition :: Maybe ScpActionDefinition
iamActionDefinition :: Maybe IamActionDefinition
$sel:ssmActionDefinition:Definition' :: Definition -> Maybe SsmActionDefinition
$sel:scpActionDefinition:Definition' :: Definition -> Maybe ScpActionDefinition
$sel:iamActionDefinition:Definition' :: Definition -> Maybe IamActionDefinition
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe IamActionDefinition
iamActionDefinition
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ScpActionDefinition
scpActionDefinition
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SsmActionDefinition
ssmActionDefinition
instance Prelude.NFData Definition where
rnf :: Definition -> ()
rnf Definition' {Maybe IamActionDefinition
Maybe ScpActionDefinition
Maybe SsmActionDefinition
ssmActionDefinition :: Maybe SsmActionDefinition
scpActionDefinition :: Maybe ScpActionDefinition
iamActionDefinition :: Maybe IamActionDefinition
$sel:ssmActionDefinition:Definition' :: Definition -> Maybe SsmActionDefinition
$sel:scpActionDefinition:Definition' :: Definition -> Maybe ScpActionDefinition
$sel:iamActionDefinition:Definition' :: Definition -> Maybe IamActionDefinition
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe IamActionDefinition
iamActionDefinition
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ScpActionDefinition
scpActionDefinition
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SsmActionDefinition
ssmActionDefinition
instance Data.ToJSON Definition where
toJSON :: Definition -> Value
toJSON Definition' {Maybe IamActionDefinition
Maybe ScpActionDefinition
Maybe SsmActionDefinition
ssmActionDefinition :: Maybe SsmActionDefinition
scpActionDefinition :: Maybe ScpActionDefinition
iamActionDefinition :: Maybe IamActionDefinition
$sel:ssmActionDefinition:Definition' :: Definition -> Maybe SsmActionDefinition
$sel:scpActionDefinition:Definition' :: Definition -> Maybe ScpActionDefinition
$sel:iamActionDefinition:Definition' :: Definition -> Maybe IamActionDefinition
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"IamActionDefinition" 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 IamActionDefinition
iamActionDefinition,
(Key
"ScpActionDefinition" 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 ScpActionDefinition
scpActionDefinition,
(Key
"SsmActionDefinition" 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 SsmActionDefinition
ssmActionDefinition
]
)