{-# 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.Redshift.Types.ReservedNodeOffering where
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
import Amazonka.Redshift.Internal
import Amazonka.Redshift.Types.RecurringCharge
import Amazonka.Redshift.Types.ReservedNodeOfferingType
data ReservedNodeOffering = ReservedNodeOffering'
{
ReservedNodeOffering -> Maybe Text
currencyCode :: Prelude.Maybe Prelude.Text,
ReservedNodeOffering -> Maybe Int
duration :: Prelude.Maybe Prelude.Int,
ReservedNodeOffering -> Maybe Double
fixedPrice :: Prelude.Maybe Prelude.Double,
ReservedNodeOffering -> Maybe Text
nodeType :: Prelude.Maybe Prelude.Text,
ReservedNodeOffering -> Maybe Text
offeringType :: Prelude.Maybe Prelude.Text,
ReservedNodeOffering -> Maybe [RecurringCharge]
recurringCharges :: Prelude.Maybe [RecurringCharge],
ReservedNodeOffering -> Maybe Text
reservedNodeOfferingId :: Prelude.Maybe Prelude.Text,
ReservedNodeOffering -> Maybe ReservedNodeOfferingType
reservedNodeOfferingType :: Prelude.Maybe ReservedNodeOfferingType,
ReservedNodeOffering -> Maybe Double
usagePrice :: Prelude.Maybe Prelude.Double
}
deriving (ReservedNodeOffering -> ReservedNodeOffering -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ReservedNodeOffering -> ReservedNodeOffering -> Bool
$c/= :: ReservedNodeOffering -> ReservedNodeOffering -> Bool
== :: ReservedNodeOffering -> ReservedNodeOffering -> Bool
$c== :: ReservedNodeOffering -> ReservedNodeOffering -> Bool
Prelude.Eq, ReadPrec [ReservedNodeOffering]
ReadPrec ReservedNodeOffering
Int -> ReadS ReservedNodeOffering
ReadS [ReservedNodeOffering]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ReservedNodeOffering]
$creadListPrec :: ReadPrec [ReservedNodeOffering]
readPrec :: ReadPrec ReservedNodeOffering
$creadPrec :: ReadPrec ReservedNodeOffering
readList :: ReadS [ReservedNodeOffering]
$creadList :: ReadS [ReservedNodeOffering]
readsPrec :: Int -> ReadS ReservedNodeOffering
$creadsPrec :: Int -> ReadS ReservedNodeOffering
Prelude.Read, Int -> ReservedNodeOffering -> ShowS
[ReservedNodeOffering] -> ShowS
ReservedNodeOffering -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ReservedNodeOffering] -> ShowS
$cshowList :: [ReservedNodeOffering] -> ShowS
show :: ReservedNodeOffering -> String
$cshow :: ReservedNodeOffering -> String
showsPrec :: Int -> ReservedNodeOffering -> ShowS
$cshowsPrec :: Int -> ReservedNodeOffering -> ShowS
Prelude.Show, forall x. Rep ReservedNodeOffering x -> ReservedNodeOffering
forall x. ReservedNodeOffering -> Rep ReservedNodeOffering x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ReservedNodeOffering x -> ReservedNodeOffering
$cfrom :: forall x. ReservedNodeOffering -> Rep ReservedNodeOffering x
Prelude.Generic)
newReservedNodeOffering ::
ReservedNodeOffering
newReservedNodeOffering :: ReservedNodeOffering
newReservedNodeOffering =
ReservedNodeOffering'
{ $sel:currencyCode:ReservedNodeOffering' :: Maybe Text
currencyCode =
forall a. Maybe a
Prelude.Nothing,
$sel:duration:ReservedNodeOffering' :: Maybe Int
duration = forall a. Maybe a
Prelude.Nothing,
$sel:fixedPrice:ReservedNodeOffering' :: Maybe Double
fixedPrice = forall a. Maybe a
Prelude.Nothing,
$sel:nodeType:ReservedNodeOffering' :: Maybe Text
nodeType = forall a. Maybe a
Prelude.Nothing,
$sel:offeringType:ReservedNodeOffering' :: Maybe Text
offeringType = forall a. Maybe a
Prelude.Nothing,
$sel:recurringCharges:ReservedNodeOffering' :: Maybe [RecurringCharge]
recurringCharges = forall a. Maybe a
Prelude.Nothing,
$sel:reservedNodeOfferingId:ReservedNodeOffering' :: Maybe Text
reservedNodeOfferingId = forall a. Maybe a
Prelude.Nothing,
$sel:reservedNodeOfferingType:ReservedNodeOffering' :: Maybe ReservedNodeOfferingType
reservedNodeOfferingType = forall a. Maybe a
Prelude.Nothing,
$sel:usagePrice:ReservedNodeOffering' :: Maybe Double
usagePrice = forall a. Maybe a
Prelude.Nothing
}
reservedNodeOffering_currencyCode :: Lens.Lens' ReservedNodeOffering (Prelude.Maybe Prelude.Text)
reservedNodeOffering_currencyCode :: Lens' ReservedNodeOffering (Maybe Text)
reservedNodeOffering_currencyCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservedNodeOffering' {Maybe Text
currencyCode :: Maybe Text
$sel:currencyCode:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
currencyCode} -> Maybe Text
currencyCode) (\s :: ReservedNodeOffering
s@ReservedNodeOffering' {} Maybe Text
a -> ReservedNodeOffering
s {$sel:currencyCode:ReservedNodeOffering' :: Maybe Text
currencyCode = Maybe Text
a} :: ReservedNodeOffering)
reservedNodeOffering_duration :: Lens.Lens' ReservedNodeOffering (Prelude.Maybe Prelude.Int)
reservedNodeOffering_duration :: Lens' ReservedNodeOffering (Maybe Int)
reservedNodeOffering_duration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservedNodeOffering' {Maybe Int
duration :: Maybe Int
$sel:duration:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Int
duration} -> Maybe Int
duration) (\s :: ReservedNodeOffering
s@ReservedNodeOffering' {} Maybe Int
a -> ReservedNodeOffering
s {$sel:duration:ReservedNodeOffering' :: Maybe Int
duration = Maybe Int
a} :: ReservedNodeOffering)
reservedNodeOffering_fixedPrice :: Lens.Lens' ReservedNodeOffering (Prelude.Maybe Prelude.Double)
reservedNodeOffering_fixedPrice :: Lens' ReservedNodeOffering (Maybe Double)
reservedNodeOffering_fixedPrice = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservedNodeOffering' {Maybe Double
fixedPrice :: Maybe Double
$sel:fixedPrice:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Double
fixedPrice} -> Maybe Double
fixedPrice) (\s :: ReservedNodeOffering
s@ReservedNodeOffering' {} Maybe Double
a -> ReservedNodeOffering
s {$sel:fixedPrice:ReservedNodeOffering' :: Maybe Double
fixedPrice = Maybe Double
a} :: ReservedNodeOffering)
reservedNodeOffering_nodeType :: Lens.Lens' ReservedNodeOffering (Prelude.Maybe Prelude.Text)
reservedNodeOffering_nodeType :: Lens' ReservedNodeOffering (Maybe Text)
reservedNodeOffering_nodeType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservedNodeOffering' {Maybe Text
nodeType :: Maybe Text
$sel:nodeType:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
nodeType} -> Maybe Text
nodeType) (\s :: ReservedNodeOffering
s@ReservedNodeOffering' {} Maybe Text
a -> ReservedNodeOffering
s {$sel:nodeType:ReservedNodeOffering' :: Maybe Text
nodeType = Maybe Text
a} :: ReservedNodeOffering)
reservedNodeOffering_offeringType :: Lens.Lens' ReservedNodeOffering (Prelude.Maybe Prelude.Text)
reservedNodeOffering_offeringType :: Lens' ReservedNodeOffering (Maybe Text)
reservedNodeOffering_offeringType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservedNodeOffering' {Maybe Text
offeringType :: Maybe Text
$sel:offeringType:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
offeringType} -> Maybe Text
offeringType) (\s :: ReservedNodeOffering
s@ReservedNodeOffering' {} Maybe Text
a -> ReservedNodeOffering
s {$sel:offeringType:ReservedNodeOffering' :: Maybe Text
offeringType = Maybe Text
a} :: ReservedNodeOffering)
reservedNodeOffering_recurringCharges :: Lens.Lens' ReservedNodeOffering (Prelude.Maybe [RecurringCharge])
reservedNodeOffering_recurringCharges :: Lens' ReservedNodeOffering (Maybe [RecurringCharge])
reservedNodeOffering_recurringCharges = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservedNodeOffering' {Maybe [RecurringCharge]
recurringCharges :: Maybe [RecurringCharge]
$sel:recurringCharges:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe [RecurringCharge]
recurringCharges} -> Maybe [RecurringCharge]
recurringCharges) (\s :: ReservedNodeOffering
s@ReservedNodeOffering' {} Maybe [RecurringCharge]
a -> ReservedNodeOffering
s {$sel:recurringCharges:ReservedNodeOffering' :: Maybe [RecurringCharge]
recurringCharges = Maybe [RecurringCharge]
a} :: ReservedNodeOffering) 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
reservedNodeOffering_reservedNodeOfferingId :: Lens.Lens' ReservedNodeOffering (Prelude.Maybe Prelude.Text)
reservedNodeOffering_reservedNodeOfferingId :: Lens' ReservedNodeOffering (Maybe Text)
reservedNodeOffering_reservedNodeOfferingId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservedNodeOffering' {Maybe Text
reservedNodeOfferingId :: Maybe Text
$sel:reservedNodeOfferingId:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
reservedNodeOfferingId} -> Maybe Text
reservedNodeOfferingId) (\s :: ReservedNodeOffering
s@ReservedNodeOffering' {} Maybe Text
a -> ReservedNodeOffering
s {$sel:reservedNodeOfferingId:ReservedNodeOffering' :: Maybe Text
reservedNodeOfferingId = Maybe Text
a} :: ReservedNodeOffering)
reservedNodeOffering_reservedNodeOfferingType :: Lens.Lens' ReservedNodeOffering (Prelude.Maybe ReservedNodeOfferingType)
reservedNodeOffering_reservedNodeOfferingType :: Lens' ReservedNodeOffering (Maybe ReservedNodeOfferingType)
reservedNodeOffering_reservedNodeOfferingType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservedNodeOffering' {Maybe ReservedNodeOfferingType
reservedNodeOfferingType :: Maybe ReservedNodeOfferingType
$sel:reservedNodeOfferingType:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe ReservedNodeOfferingType
reservedNodeOfferingType} -> Maybe ReservedNodeOfferingType
reservedNodeOfferingType) (\s :: ReservedNodeOffering
s@ReservedNodeOffering' {} Maybe ReservedNodeOfferingType
a -> ReservedNodeOffering
s {$sel:reservedNodeOfferingType:ReservedNodeOffering' :: Maybe ReservedNodeOfferingType
reservedNodeOfferingType = Maybe ReservedNodeOfferingType
a} :: ReservedNodeOffering)
reservedNodeOffering_usagePrice :: Lens.Lens' ReservedNodeOffering (Prelude.Maybe Prelude.Double)
reservedNodeOffering_usagePrice :: Lens' ReservedNodeOffering (Maybe Double)
reservedNodeOffering_usagePrice = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReservedNodeOffering' {Maybe Double
usagePrice :: Maybe Double
$sel:usagePrice:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Double
usagePrice} -> Maybe Double
usagePrice) (\s :: ReservedNodeOffering
s@ReservedNodeOffering' {} Maybe Double
a -> ReservedNodeOffering
s {$sel:usagePrice:ReservedNodeOffering' :: Maybe Double
usagePrice = Maybe Double
a} :: ReservedNodeOffering)
instance Data.FromXML ReservedNodeOffering where
parseXML :: [Node] -> Either String ReservedNodeOffering
parseXML [Node]
x =
Maybe Text
-> Maybe Int
-> Maybe Double
-> Maybe Text
-> Maybe Text
-> Maybe [RecurringCharge]
-> Maybe Text
-> Maybe ReservedNodeOfferingType
-> Maybe Double
-> ReservedNodeOffering
ReservedNodeOffering'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"CurrencyCode")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"Duration")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"FixedPrice")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"NodeType")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"OfferingType")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"RecurringCharges"
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"RecurringCharge")
)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ReservedNodeOfferingId")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"ReservedNodeOfferingType")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"UsagePrice")
instance Prelude.Hashable ReservedNodeOffering where
hashWithSalt :: Int -> ReservedNodeOffering -> Int
hashWithSalt Int
_salt ReservedNodeOffering' {Maybe Double
Maybe Int
Maybe [RecurringCharge]
Maybe Text
Maybe ReservedNodeOfferingType
usagePrice :: Maybe Double
reservedNodeOfferingType :: Maybe ReservedNodeOfferingType
reservedNodeOfferingId :: Maybe Text
recurringCharges :: Maybe [RecurringCharge]
offeringType :: Maybe Text
nodeType :: Maybe Text
fixedPrice :: Maybe Double
duration :: Maybe Int
currencyCode :: Maybe Text
$sel:usagePrice:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Double
$sel:reservedNodeOfferingType:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe ReservedNodeOfferingType
$sel:reservedNodeOfferingId:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
$sel:recurringCharges:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe [RecurringCharge]
$sel:offeringType:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
$sel:nodeType:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
$sel:fixedPrice:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Double
$sel:duration:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Int
$sel:currencyCode:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
currencyCode
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
duration
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
fixedPrice
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nodeType
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
offeringType
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [RecurringCharge]
recurringCharges
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reservedNodeOfferingId
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReservedNodeOfferingType
reservedNodeOfferingType
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
usagePrice
instance Prelude.NFData ReservedNodeOffering where
rnf :: ReservedNodeOffering -> ()
rnf ReservedNodeOffering' {Maybe Double
Maybe Int
Maybe [RecurringCharge]
Maybe Text
Maybe ReservedNodeOfferingType
usagePrice :: Maybe Double
reservedNodeOfferingType :: Maybe ReservedNodeOfferingType
reservedNodeOfferingId :: Maybe Text
recurringCharges :: Maybe [RecurringCharge]
offeringType :: Maybe Text
nodeType :: Maybe Text
fixedPrice :: Maybe Double
duration :: Maybe Int
currencyCode :: Maybe Text
$sel:usagePrice:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Double
$sel:reservedNodeOfferingType:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe ReservedNodeOfferingType
$sel:reservedNodeOfferingId:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
$sel:recurringCharges:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe [RecurringCharge]
$sel:offeringType:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
$sel:nodeType:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
$sel:fixedPrice:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Double
$sel:duration:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Int
$sel:currencyCode:ReservedNodeOffering' :: ReservedNodeOffering -> Maybe Text
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
currencyCode
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
duration
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
fixedPrice
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nodeType
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
offeringType
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [RecurringCharge]
recurringCharges
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
reservedNodeOfferingId
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ReservedNodeOfferingType
reservedNodeOfferingType
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
usagePrice