{-# 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.Wisdom.Types.RecommendationTrigger 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.Wisdom.Types.RecommendationSourceType
import Amazonka.Wisdom.Types.RecommendationTriggerData
import Amazonka.Wisdom.Types.RecommendationTriggerType
data RecommendationTrigger = RecommendationTrigger'
{
RecommendationTrigger -> RecommendationTriggerData
data' :: RecommendationTriggerData,
RecommendationTrigger -> Text
id :: Prelude.Text,
RecommendationTrigger -> [Text]
recommendationIds :: [Prelude.Text],
RecommendationTrigger -> RecommendationSourceType
source :: RecommendationSourceType,
RecommendationTrigger -> RecommendationTriggerType
type' :: RecommendationTriggerType
}
deriving (RecommendationTrigger -> RecommendationTrigger -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RecommendationTrigger -> RecommendationTrigger -> Bool
$c/= :: RecommendationTrigger -> RecommendationTrigger -> Bool
== :: RecommendationTrigger -> RecommendationTrigger -> Bool
$c== :: RecommendationTrigger -> RecommendationTrigger -> Bool
Prelude.Eq, Int -> RecommendationTrigger -> ShowS
[RecommendationTrigger] -> ShowS
RecommendationTrigger -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RecommendationTrigger] -> ShowS
$cshowList :: [RecommendationTrigger] -> ShowS
show :: RecommendationTrigger -> String
$cshow :: RecommendationTrigger -> String
showsPrec :: Int -> RecommendationTrigger -> ShowS
$cshowsPrec :: Int -> RecommendationTrigger -> ShowS
Prelude.Show, forall x. Rep RecommendationTrigger x -> RecommendationTrigger
forall x. RecommendationTrigger -> Rep RecommendationTrigger x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RecommendationTrigger x -> RecommendationTrigger
$cfrom :: forall x. RecommendationTrigger -> Rep RecommendationTrigger x
Prelude.Generic)
newRecommendationTrigger ::
RecommendationTriggerData ->
Prelude.Text ->
RecommendationSourceType ->
RecommendationTriggerType ->
RecommendationTrigger
newRecommendationTrigger :: RecommendationTriggerData
-> Text
-> RecommendationSourceType
-> RecommendationTriggerType
-> RecommendationTrigger
newRecommendationTrigger RecommendationTriggerData
pData_ Text
pId_ RecommendationSourceType
pSource_ RecommendationTriggerType
pType_ =
RecommendationTrigger'
{ $sel:data':RecommendationTrigger' :: RecommendationTriggerData
data' = RecommendationTriggerData
pData_,
$sel:id:RecommendationTrigger' :: Text
id = Text
pId_,
$sel:recommendationIds:RecommendationTrigger' :: [Text]
recommendationIds = forall a. Monoid a => a
Prelude.mempty,
$sel:source:RecommendationTrigger' :: RecommendationSourceType
source = RecommendationSourceType
pSource_,
$sel:type':RecommendationTrigger' :: RecommendationTriggerType
type' = RecommendationTriggerType
pType_
}
recommendationTrigger_data :: Lens.Lens' RecommendationTrigger RecommendationTriggerData
recommendationTrigger_data :: Lens' RecommendationTrigger RecommendationTriggerData
recommendationTrigger_data = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecommendationTrigger' {RecommendationTriggerData
data' :: RecommendationTriggerData
$sel:data':RecommendationTrigger' :: RecommendationTrigger -> RecommendationTriggerData
data'} -> RecommendationTriggerData
data') (\s :: RecommendationTrigger
s@RecommendationTrigger' {} RecommendationTriggerData
a -> RecommendationTrigger
s {$sel:data':RecommendationTrigger' :: RecommendationTriggerData
data' = RecommendationTriggerData
a} :: RecommendationTrigger)
recommendationTrigger_id :: Lens.Lens' RecommendationTrigger Prelude.Text
recommendationTrigger_id :: Lens' RecommendationTrigger Text
recommendationTrigger_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecommendationTrigger' {Text
id :: Text
$sel:id:RecommendationTrigger' :: RecommendationTrigger -> Text
id} -> Text
id) (\s :: RecommendationTrigger
s@RecommendationTrigger' {} Text
a -> RecommendationTrigger
s {$sel:id:RecommendationTrigger' :: Text
id = Text
a} :: RecommendationTrigger)
recommendationTrigger_recommendationIds :: Lens.Lens' RecommendationTrigger [Prelude.Text]
recommendationTrigger_recommendationIds :: Lens' RecommendationTrigger [Text]
recommendationTrigger_recommendationIds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecommendationTrigger' {[Text]
recommendationIds :: [Text]
$sel:recommendationIds:RecommendationTrigger' :: RecommendationTrigger -> [Text]
recommendationIds} -> [Text]
recommendationIds) (\s :: RecommendationTrigger
s@RecommendationTrigger' {} [Text]
a -> RecommendationTrigger
s {$sel:recommendationIds:RecommendationTrigger' :: [Text]
recommendationIds = [Text]
a} :: RecommendationTrigger) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced
recommendationTrigger_source :: Lens.Lens' RecommendationTrigger RecommendationSourceType
recommendationTrigger_source :: Lens' RecommendationTrigger RecommendationSourceType
recommendationTrigger_source = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecommendationTrigger' {RecommendationSourceType
source :: RecommendationSourceType
$sel:source:RecommendationTrigger' :: RecommendationTrigger -> RecommendationSourceType
source} -> RecommendationSourceType
source) (\s :: RecommendationTrigger
s@RecommendationTrigger' {} RecommendationSourceType
a -> RecommendationTrigger
s {$sel:source:RecommendationTrigger' :: RecommendationSourceType
source = RecommendationSourceType
a} :: RecommendationTrigger)
recommendationTrigger_type :: Lens.Lens' RecommendationTrigger RecommendationTriggerType
recommendationTrigger_type :: Lens' RecommendationTrigger RecommendationTriggerType
recommendationTrigger_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecommendationTrigger' {RecommendationTriggerType
type' :: RecommendationTriggerType
$sel:type':RecommendationTrigger' :: RecommendationTrigger -> RecommendationTriggerType
type'} -> RecommendationTriggerType
type') (\s :: RecommendationTrigger
s@RecommendationTrigger' {} RecommendationTriggerType
a -> RecommendationTrigger
s {$sel:type':RecommendationTrigger' :: RecommendationTriggerType
type' = RecommendationTriggerType
a} :: RecommendationTrigger)
instance Data.FromJSON RecommendationTrigger where
parseJSON :: Value -> Parser RecommendationTrigger
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"RecommendationTrigger"
( \Object
x ->
RecommendationTriggerData
-> Text
-> [Text]
-> RecommendationSourceType
-> RecommendationTriggerType
-> RecommendationTrigger
RecommendationTrigger'
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"data")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"id")
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
"recommendationIds"
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 a
Data..: Key
"source")
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"type")
)
instance Prelude.Hashable RecommendationTrigger where
hashWithSalt :: Int -> RecommendationTrigger -> Int
hashWithSalt Int
_salt RecommendationTrigger' {[Text]
Text
RecommendationSourceType
RecommendationTriggerData
RecommendationTriggerType
type' :: RecommendationTriggerType
source :: RecommendationSourceType
recommendationIds :: [Text]
id :: Text
data' :: RecommendationTriggerData
$sel:type':RecommendationTrigger' :: RecommendationTrigger -> RecommendationTriggerType
$sel:source:RecommendationTrigger' :: RecommendationTrigger -> RecommendationSourceType
$sel:recommendationIds:RecommendationTrigger' :: RecommendationTrigger -> [Text]
$sel:id:RecommendationTrigger' :: RecommendationTrigger -> Text
$sel:data':RecommendationTrigger' :: RecommendationTrigger -> RecommendationTriggerData
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` RecommendationTriggerData
data'
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
id
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Text]
recommendationIds
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` RecommendationSourceType
source
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` RecommendationTriggerType
type'
instance Prelude.NFData RecommendationTrigger where
rnf :: RecommendationTrigger -> ()
rnf RecommendationTrigger' {[Text]
Text
RecommendationSourceType
RecommendationTriggerData
RecommendationTriggerType
type' :: RecommendationTriggerType
source :: RecommendationSourceType
recommendationIds :: [Text]
id :: Text
data' :: RecommendationTriggerData
$sel:type':RecommendationTrigger' :: RecommendationTrigger -> RecommendationTriggerType
$sel:source:RecommendationTrigger' :: RecommendationTrigger -> RecommendationSourceType
$sel:recommendationIds:RecommendationTrigger' :: RecommendationTrigger -> [Text]
$sel:id:RecommendationTrigger' :: RecommendationTrigger -> Text
$sel:data':RecommendationTrigger' :: RecommendationTrigger -> RecommendationTriggerData
..} =
forall a. NFData a => a -> ()
Prelude.rnf RecommendationTriggerData
data'
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
id
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Text]
recommendationIds
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf RecommendationSourceType
source
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf RecommendationTriggerType
type'