{-# 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.CostExplorer.Types.ReservationPurchaseRecommendation where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import Amazonka.CostExplorer.Types.AccountScope
import Amazonka.CostExplorer.Types.LookbackPeriodInDays
import Amazonka.CostExplorer.Types.PaymentOption
import Amazonka.CostExplorer.Types.ReservationPurchaseRecommendationDetail
import Amazonka.CostExplorer.Types.ReservationPurchaseRecommendationSummary
import Amazonka.CostExplorer.Types.ServiceSpecification
import Amazonka.CostExplorer.Types.TermInYears
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
data ReservationPurchaseRecommendation = ReservationPurchaseRecommendation'
{
ReservationPurchaseRecommendation -> Maybe AccountScope
accountScope :: Prelude.Maybe AccountScope,
ReservationPurchaseRecommendation -> Maybe LookbackPeriodInDays
lookbackPeriodInDays :: Prelude.Maybe LookbackPeriodInDays,
ReservationPurchaseRecommendation -> Maybe PaymentOption
paymentOption :: Prelude.Maybe PaymentOption,
ReservationPurchaseRecommendation
-> Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails :: Prelude.Maybe [ReservationPurchaseRecommendationDetail],
ReservationPurchaseRecommendation
-> Maybe ReservationPurchaseRecommendationSummary
recommendationSummary :: Prelude.Maybe ReservationPurchaseRecommendationSummary,
ReservationPurchaseRecommendation -> Maybe ServiceSpecification
serviceSpecification :: Prelude.Maybe ServiceSpecification,
ReservationPurchaseRecommendation -> Maybe TermInYears
termInYears :: Prelude.Maybe TermInYears
}
deriving (ReservationPurchaseRecommendation
-> ReservationPurchaseRecommendation -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ReservationPurchaseRecommendation
-> ReservationPurchaseRecommendation -> Bool
$c/= :: ReservationPurchaseRecommendation
-> ReservationPurchaseRecommendation -> Bool
== :: ReservationPurchaseRecommendation
-> ReservationPurchaseRecommendation -> Bool
$c== :: ReservationPurchaseRecommendation
-> ReservationPurchaseRecommendation -> Bool
Prelude.Eq, ReadPrec [ReservationPurchaseRecommendation]
ReadPrec ReservationPurchaseRecommendation
Int -> ReadS ReservationPurchaseRecommendation
ReadS [ReservationPurchaseRecommendation]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ReservationPurchaseRecommendation]
$creadListPrec :: ReadPrec [ReservationPurchaseRecommendation]
readPrec :: ReadPrec ReservationPurchaseRecommendation
$creadPrec :: ReadPrec ReservationPurchaseRecommendation
readList :: ReadS [ReservationPurchaseRecommendation]
$creadList :: ReadS [ReservationPurchaseRecommendation]
readsPrec :: Int -> ReadS ReservationPurchaseRecommendation
$creadsPrec :: Int -> ReadS ReservationPurchaseRecommendation
Prelude.Read, Int -> ReservationPurchaseRecommendation -> ShowS
[ReservationPurchaseRecommendation] -> ShowS
ReservationPurchaseRecommendation -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ReservationPurchaseRecommendation] -> ShowS
$cshowList :: [ReservationPurchaseRecommendation] -> ShowS
show :: ReservationPurchaseRecommendation -> String
$cshow :: ReservationPurchaseRecommendation -> String
showsPrec :: Int -> ReservationPurchaseRecommendation -> ShowS
$cshowsPrec :: Int -> ReservationPurchaseRecommendation -> ShowS
Prelude.Show, forall x.
Rep ReservationPurchaseRecommendation x
-> ReservationPurchaseRecommendation
forall x.
ReservationPurchaseRecommendation
-> Rep ReservationPurchaseRecommendation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ReservationPurchaseRecommendation x
-> ReservationPurchaseRecommendation
$cfrom :: forall x.
ReservationPurchaseRecommendation
-> Rep ReservationPurchaseRecommendation x
Prelude.Generic)
newReservationPurchaseRecommendation ::
ReservationPurchaseRecommendation
newReservationPurchaseRecommendation :: ReservationPurchaseRecommendation
newReservationPurchaseRecommendation =
ReservationPurchaseRecommendation'
{ $sel:accountScope:ReservationPurchaseRecommendation' :: Maybe AccountScope
accountScope =
forall a. Maybe a
Prelude.Nothing,
$sel:lookbackPeriodInDays:ReservationPurchaseRecommendation' :: Maybe LookbackPeriodInDays
lookbackPeriodInDays = forall a. Maybe a
Prelude.Nothing,
$sel:paymentOption:ReservationPurchaseRecommendation' :: Maybe PaymentOption
paymentOption = forall a. Maybe a
Prelude.Nothing,
$sel:recommendationDetails:ReservationPurchaseRecommendation' :: Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails = forall a. Maybe a
Prelude.Nothing,
$sel:recommendationSummary:ReservationPurchaseRecommendation' :: Maybe ReservationPurchaseRecommendationSummary
recommendationSummary = forall a. Maybe a
Prelude.Nothing,
$sel:serviceSpecification:ReservationPurchaseRecommendation' :: Maybe ServiceSpecification
serviceSpecification = forall a. Maybe a
Prelude.Nothing,
$sel:termInYears:ReservationPurchaseRecommendation' :: Maybe TermInYears
termInYears = forall a. Maybe a
Prelude.Nothing
}
reservationPurchaseRecommendation_accountScope :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe AccountScope)
reservationPurchaseRecommendation_accountScope :: Lens' ReservationPurchaseRecommendation (Maybe AccountScope)
reservationPurchaseRecommendation_accountScope = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe AccountScope
accountScope :: Maybe AccountScope
$sel:accountScope:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe AccountScope
accountScope} -> Maybe AccountScope
accountScope) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe AccountScope
a -> ReservationPurchaseRecommendation
s {$sel:accountScope:ReservationPurchaseRecommendation' :: Maybe AccountScope
accountScope = Maybe AccountScope
a} :: ReservationPurchaseRecommendation)
reservationPurchaseRecommendation_lookbackPeriodInDays :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe LookbackPeriodInDays)
reservationPurchaseRecommendation_lookbackPeriodInDays :: Lens'
ReservationPurchaseRecommendation (Maybe LookbackPeriodInDays)
reservationPurchaseRecommendation_lookbackPeriodInDays = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe LookbackPeriodInDays
lookbackPeriodInDays :: Maybe LookbackPeriodInDays
$sel:lookbackPeriodInDays:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe LookbackPeriodInDays
lookbackPeriodInDays} -> Maybe LookbackPeriodInDays
lookbackPeriodInDays) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe LookbackPeriodInDays
a -> ReservationPurchaseRecommendation
s {$sel:lookbackPeriodInDays:ReservationPurchaseRecommendation' :: Maybe LookbackPeriodInDays
lookbackPeriodInDays = Maybe LookbackPeriodInDays
a} :: ReservationPurchaseRecommendation)
reservationPurchaseRecommendation_paymentOption :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe PaymentOption)
reservationPurchaseRecommendation_paymentOption :: Lens' ReservationPurchaseRecommendation (Maybe PaymentOption)
reservationPurchaseRecommendation_paymentOption = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe PaymentOption
paymentOption :: Maybe PaymentOption
$sel:paymentOption:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe PaymentOption
paymentOption} -> Maybe PaymentOption
paymentOption) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe PaymentOption
a -> ReservationPurchaseRecommendation
s {$sel:paymentOption:ReservationPurchaseRecommendation' :: Maybe PaymentOption
paymentOption = Maybe PaymentOption
a} :: ReservationPurchaseRecommendation)
reservationPurchaseRecommendation_recommendationDetails :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe [ReservationPurchaseRecommendationDetail])
reservationPurchaseRecommendation_recommendationDetails :: Lens'
ReservationPurchaseRecommendation
(Maybe [ReservationPurchaseRecommendationDetail])
reservationPurchaseRecommendation_recommendationDetails = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails :: Maybe [ReservationPurchaseRecommendationDetail]
$sel:recommendationDetails:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails} -> Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe [ReservationPurchaseRecommendationDetail]
a -> ReservationPurchaseRecommendation
s {$sel:recommendationDetails:ReservationPurchaseRecommendation' :: Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails = Maybe [ReservationPurchaseRecommendationDetail]
a} :: ReservationPurchaseRecommendation) 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
reservationPurchaseRecommendation_recommendationSummary :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe ReservationPurchaseRecommendationSummary)
reservationPurchaseRecommendation_recommendationSummary :: Lens'
ReservationPurchaseRecommendation
(Maybe ReservationPurchaseRecommendationSummary)
reservationPurchaseRecommendation_recommendationSummary = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe ReservationPurchaseRecommendationSummary
recommendationSummary :: Maybe ReservationPurchaseRecommendationSummary
$sel:recommendationSummary:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe ReservationPurchaseRecommendationSummary
recommendationSummary} -> Maybe ReservationPurchaseRecommendationSummary
recommendationSummary) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe ReservationPurchaseRecommendationSummary
a -> ReservationPurchaseRecommendation
s {$sel:recommendationSummary:ReservationPurchaseRecommendation' :: Maybe ReservationPurchaseRecommendationSummary
recommendationSummary = Maybe ReservationPurchaseRecommendationSummary
a} :: ReservationPurchaseRecommendation)
reservationPurchaseRecommendation_serviceSpecification :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe ServiceSpecification)
reservationPurchaseRecommendation_serviceSpecification :: Lens'
ReservationPurchaseRecommendation (Maybe ServiceSpecification)
reservationPurchaseRecommendation_serviceSpecification = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe ServiceSpecification
serviceSpecification :: Maybe ServiceSpecification
$sel:serviceSpecification:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe ServiceSpecification
serviceSpecification} -> Maybe ServiceSpecification
serviceSpecification) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe ServiceSpecification
a -> ReservationPurchaseRecommendation
s {$sel:serviceSpecification:ReservationPurchaseRecommendation' :: Maybe ServiceSpecification
serviceSpecification = Maybe ServiceSpecification
a} :: ReservationPurchaseRecommendation)
reservationPurchaseRecommendation_termInYears :: Lens.Lens' ReservationPurchaseRecommendation (Prelude.Maybe TermInYears)
reservationPurchaseRecommendation_termInYears :: Lens' ReservationPurchaseRecommendation (Maybe TermInYears)
reservationPurchaseRecommendation_termInYears = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservationPurchaseRecommendation' {Maybe TermInYears
termInYears :: Maybe TermInYears
$sel:termInYears:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe TermInYears
termInYears} -> Maybe TermInYears
termInYears) (\s :: ReservationPurchaseRecommendation
s@ReservationPurchaseRecommendation' {} Maybe TermInYears
a -> ReservationPurchaseRecommendation
s {$sel:termInYears:ReservationPurchaseRecommendation' :: Maybe TermInYears
termInYears = Maybe TermInYears
a} :: ReservationPurchaseRecommendation)
instance
Data.FromJSON
ReservationPurchaseRecommendation
where
parseJSON :: Value -> Parser ReservationPurchaseRecommendation
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"ReservationPurchaseRecommendation"
( \Object
x ->
Maybe AccountScope
-> Maybe LookbackPeriodInDays
-> Maybe PaymentOption
-> Maybe [ReservationPurchaseRecommendationDetail]
-> Maybe ReservationPurchaseRecommendationSummary
-> Maybe ServiceSpecification
-> Maybe TermInYears
-> ReservationPurchaseRecommendation
ReservationPurchaseRecommendation'
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
"AccountScope")
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
"LookbackPeriodInDays")
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
"PaymentOption")
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
"RecommendationDetails"
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
"RecommendationSummary")
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
"ServiceSpecification")
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
"TermInYears")
)
instance
Prelude.Hashable
ReservationPurchaseRecommendation
where
hashWithSalt :: Int -> ReservationPurchaseRecommendation -> Int
hashWithSalt
Int
_salt
ReservationPurchaseRecommendation' {Maybe [ReservationPurchaseRecommendationDetail]
Maybe AccountScope
Maybe LookbackPeriodInDays
Maybe PaymentOption
Maybe ReservationPurchaseRecommendationSummary
Maybe ServiceSpecification
Maybe TermInYears
termInYears :: Maybe TermInYears
serviceSpecification :: Maybe ServiceSpecification
recommendationSummary :: Maybe ReservationPurchaseRecommendationSummary
recommendationDetails :: Maybe [ReservationPurchaseRecommendationDetail]
paymentOption :: Maybe PaymentOption
lookbackPeriodInDays :: Maybe LookbackPeriodInDays
accountScope :: Maybe AccountScope
$sel:termInYears:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe TermInYears
$sel:serviceSpecification:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe ServiceSpecification
$sel:recommendationSummary:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe ReservationPurchaseRecommendationSummary
$sel:recommendationDetails:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe [ReservationPurchaseRecommendationDetail]
$sel:paymentOption:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe PaymentOption
$sel:lookbackPeriodInDays:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe LookbackPeriodInDays
$sel:accountScope:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe AccountScope
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AccountScope
accountScope
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LookbackPeriodInDays
lookbackPeriodInDays
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PaymentOption
paymentOption
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReservationPurchaseRecommendationSummary
recommendationSummary
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ServiceSpecification
serviceSpecification
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TermInYears
termInYears
instance
Prelude.NFData
ReservationPurchaseRecommendation
where
rnf :: ReservationPurchaseRecommendation -> ()
rnf ReservationPurchaseRecommendation' {Maybe [ReservationPurchaseRecommendationDetail]
Maybe AccountScope
Maybe LookbackPeriodInDays
Maybe PaymentOption
Maybe ReservationPurchaseRecommendationSummary
Maybe ServiceSpecification
Maybe TermInYears
termInYears :: Maybe TermInYears
serviceSpecification :: Maybe ServiceSpecification
recommendationSummary :: Maybe ReservationPurchaseRecommendationSummary
recommendationDetails :: Maybe [ReservationPurchaseRecommendationDetail]
paymentOption :: Maybe PaymentOption
lookbackPeriodInDays :: Maybe LookbackPeriodInDays
accountScope :: Maybe AccountScope
$sel:termInYears:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe TermInYears
$sel:serviceSpecification:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe ServiceSpecification
$sel:recommendationSummary:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe ReservationPurchaseRecommendationSummary
$sel:recommendationDetails:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation
-> Maybe [ReservationPurchaseRecommendationDetail]
$sel:paymentOption:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe PaymentOption
$sel:lookbackPeriodInDays:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe LookbackPeriodInDays
$sel:accountScope:ReservationPurchaseRecommendation' :: ReservationPurchaseRecommendation -> Maybe AccountScope
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe AccountScope
accountScope
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LookbackPeriodInDays
lookbackPeriodInDays
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PaymentOption
paymentOption
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ReservationPurchaseRecommendationDetail]
recommendationDetails
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ReservationPurchaseRecommendationSummary
recommendationSummary
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ServiceSpecification
serviceSpecification
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TermInYears
termInYears