{-# 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.RecommendationData 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.Document
import Amazonka.Wisdom.Types.RecommendationType
import Amazonka.Wisdom.Types.RelevanceLevel
data RecommendationData = RecommendationData'
{
RecommendationData -> Maybe RelevanceLevel
relevanceLevel :: Prelude.Maybe RelevanceLevel,
RecommendationData -> Maybe Double
relevanceScore :: Prelude.Maybe Prelude.Double,
RecommendationData -> Maybe RecommendationType
type' :: Prelude.Maybe RecommendationType,
RecommendationData -> Document
document :: Document,
RecommendationData -> Text
recommendationId :: Prelude.Text
}
deriving (RecommendationData -> RecommendationData -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: RecommendationData -> RecommendationData -> Bool
$c/= :: RecommendationData -> RecommendationData -> Bool
== :: RecommendationData -> RecommendationData -> Bool
$c== :: RecommendationData -> RecommendationData -> Bool
Prelude.Eq, Int -> RecommendationData -> ShowS
[RecommendationData] -> ShowS
RecommendationData -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [RecommendationData] -> ShowS
$cshowList :: [RecommendationData] -> ShowS
show :: RecommendationData -> String
$cshow :: RecommendationData -> String
showsPrec :: Int -> RecommendationData -> ShowS
$cshowsPrec :: Int -> RecommendationData -> ShowS
Prelude.Show, forall x. Rep RecommendationData x -> RecommendationData
forall x. RecommendationData -> Rep RecommendationData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep RecommendationData x -> RecommendationData
$cfrom :: forall x. RecommendationData -> Rep RecommendationData x
Prelude.Generic)
newRecommendationData ::
Document ->
Prelude.Text ->
RecommendationData
newRecommendationData :: Document -> Text -> RecommendationData
newRecommendationData Document
pDocument_ Text
pRecommendationId_ =
RecommendationData'
{ $sel:relevanceLevel:RecommendationData' :: Maybe RelevanceLevel
relevanceLevel =
forall a. Maybe a
Prelude.Nothing,
$sel:relevanceScore:RecommendationData' :: Maybe Double
relevanceScore = forall a. Maybe a
Prelude.Nothing,
$sel:type':RecommendationData' :: Maybe RecommendationType
type' = forall a. Maybe a
Prelude.Nothing,
$sel:document:RecommendationData' :: Document
document = Document
pDocument_,
$sel:recommendationId:RecommendationData' :: Text
recommendationId = Text
pRecommendationId_
}
recommendationData_relevanceLevel :: Lens.Lens' RecommendationData (Prelude.Maybe RelevanceLevel)
recommendationData_relevanceLevel :: Lens' RecommendationData (Maybe RelevanceLevel)
recommendationData_relevanceLevel = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecommendationData' {Maybe RelevanceLevel
relevanceLevel :: Maybe RelevanceLevel
$sel:relevanceLevel:RecommendationData' :: RecommendationData -> Maybe RelevanceLevel
relevanceLevel} -> Maybe RelevanceLevel
relevanceLevel) (\s :: RecommendationData
s@RecommendationData' {} Maybe RelevanceLevel
a -> RecommendationData
s {$sel:relevanceLevel:RecommendationData' :: Maybe RelevanceLevel
relevanceLevel = Maybe RelevanceLevel
a} :: RecommendationData)
recommendationData_relevanceScore :: Lens.Lens' RecommendationData (Prelude.Maybe Prelude.Double)
recommendationData_relevanceScore :: Lens' RecommendationData (Maybe Double)
recommendationData_relevanceScore = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecommendationData' {Maybe Double
relevanceScore :: Maybe Double
$sel:relevanceScore:RecommendationData' :: RecommendationData -> Maybe Double
relevanceScore} -> Maybe Double
relevanceScore) (\s :: RecommendationData
s@RecommendationData' {} Maybe Double
a -> RecommendationData
s {$sel:relevanceScore:RecommendationData' :: Maybe Double
relevanceScore = Maybe Double
a} :: RecommendationData)
recommendationData_type :: Lens.Lens' RecommendationData (Prelude.Maybe RecommendationType)
recommendationData_type :: Lens' RecommendationData (Maybe RecommendationType)
recommendationData_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecommendationData' {Maybe RecommendationType
type' :: Maybe RecommendationType
$sel:type':RecommendationData' :: RecommendationData -> Maybe RecommendationType
type'} -> Maybe RecommendationType
type') (\s :: RecommendationData
s@RecommendationData' {} Maybe RecommendationType
a -> RecommendationData
s {$sel:type':RecommendationData' :: Maybe RecommendationType
type' = Maybe RecommendationType
a} :: RecommendationData)
recommendationData_document :: Lens.Lens' RecommendationData Document
recommendationData_document :: Lens' RecommendationData Document
recommendationData_document = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecommendationData' {Document
document :: Document
$sel:document:RecommendationData' :: RecommendationData -> Document
document} -> Document
document) (\s :: RecommendationData
s@RecommendationData' {} Document
a -> RecommendationData
s {$sel:document:RecommendationData' :: Document
document = Document
a} :: RecommendationData)
recommendationData_recommendationId :: Lens.Lens' RecommendationData Prelude.Text
recommendationData_recommendationId :: Lens' RecommendationData Text
recommendationData_recommendationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\RecommendationData' {Text
recommendationId :: Text
$sel:recommendationId:RecommendationData' :: RecommendationData -> Text
recommendationId} -> Text
recommendationId) (\s :: RecommendationData
s@RecommendationData' {} Text
a -> RecommendationData
s {$sel:recommendationId:RecommendationData' :: Text
recommendationId = Text
a} :: RecommendationData)
instance Data.FromJSON RecommendationData where
parseJSON :: Value -> Parser RecommendationData
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"RecommendationData"
( \Object
x ->
Maybe RelevanceLevel
-> Maybe Double
-> Maybe RecommendationType
-> Document
-> Text
-> RecommendationData
RecommendationData'
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
"relevanceLevel")
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
"relevanceScore")
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
"type")
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
"document")
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
"recommendationId")
)
instance Prelude.Hashable RecommendationData where
hashWithSalt :: Int -> RecommendationData -> Int
hashWithSalt Int
_salt RecommendationData' {Maybe Double
Maybe RecommendationType
Maybe RelevanceLevel
Text
Document
recommendationId :: Text
document :: Document
type' :: Maybe RecommendationType
relevanceScore :: Maybe Double
relevanceLevel :: Maybe RelevanceLevel
$sel:recommendationId:RecommendationData' :: RecommendationData -> Text
$sel:document:RecommendationData' :: RecommendationData -> Document
$sel:type':RecommendationData' :: RecommendationData -> Maybe RecommendationType
$sel:relevanceScore:RecommendationData' :: RecommendationData -> Maybe Double
$sel:relevanceLevel:RecommendationData' :: RecommendationData -> Maybe RelevanceLevel
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RelevanceLevel
relevanceLevel
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
relevanceScore
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RecommendationType
type'
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Document
document
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
recommendationId
instance Prelude.NFData RecommendationData where
rnf :: RecommendationData -> ()
rnf RecommendationData' {Maybe Double
Maybe RecommendationType
Maybe RelevanceLevel
Text
Document
recommendationId :: Text
document :: Document
type' :: Maybe RecommendationType
relevanceScore :: Maybe Double
relevanceLevel :: Maybe RelevanceLevel
$sel:recommendationId:RecommendationData' :: RecommendationData -> Text
$sel:document:RecommendationData' :: RecommendationData -> Document
$sel:type':RecommendationData' :: RecommendationData -> Maybe RecommendationType
$sel:relevanceScore:RecommendationData' :: RecommendationData -> Maybe Double
$sel:relevanceLevel:RecommendationData' :: RecommendationData -> Maybe RelevanceLevel
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe RelevanceLevel
relevanceLevel
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
relevanceScore
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RecommendationType
type'
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Document
document
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
recommendationId