{-# 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 #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Personalize.Types.Solution
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Personalize.Types.Solution where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Personalize.Types.AutoMLResult
import Amazonka.Personalize.Types.SolutionConfig
import Amazonka.Personalize.Types.SolutionVersionSummary
import qualified Amazonka.Prelude as Prelude

-- | An object that provides information about a solution. A solution is a
-- trained model that can be deployed as a campaign.
--
-- /See:/ 'newSolution' smart constructor.
data Solution = Solution'
  { -- | When @performAutoML@ is true, specifies the best recipe found.
    Solution -> Maybe AutoMLResult
autoMLResult :: Prelude.Maybe AutoMLResult,
    -- | The creation date and time (in Unix time) of the solution.
    Solution -> Maybe POSIX
creationDateTime :: Prelude.Maybe Data.POSIX,
    -- | The Amazon Resource Name (ARN) of the dataset group that provides the
    -- training data.
    Solution -> Maybe Text
datasetGroupArn :: Prelude.Maybe Prelude.Text,
    -- | The event type (for example, \'click\' or \'like\') that is used for
    -- training the model. If no @eventType@ is provided, Amazon Personalize
    -- uses all interactions for training with equal weight regardless of type.
    Solution -> Maybe Text
eventType :: Prelude.Maybe Prelude.Text,
    -- | The date and time (in Unix time) that the solution was last updated.
    Solution -> Maybe POSIX
lastUpdatedDateTime :: Prelude.Maybe Data.POSIX,
    -- | Describes the latest version of the solution, including the status and
    -- the ARN.
    Solution -> Maybe SolutionVersionSummary
latestSolutionVersion :: Prelude.Maybe SolutionVersionSummary,
    -- | The name of the solution.
    Solution -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | When true, Amazon Personalize performs a search for the best
    -- USER_PERSONALIZATION recipe from the list specified in the solution
    -- configuration (@recipeArn@ must not be specified). When false (the
    -- default), Amazon Personalize uses @recipeArn@ for training.
    Solution -> Maybe Bool
performAutoML :: Prelude.Maybe Prelude.Bool,
    -- | Whether to perform hyperparameter optimization (HPO) on the chosen
    -- recipe. The default is @false@.
    Solution -> Maybe Bool
performHPO :: Prelude.Maybe Prelude.Bool,
    -- | The ARN of the recipe used to create the solution.
    Solution -> Maybe Text
recipeArn :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the solution.
    Solution -> Maybe Text
solutionArn :: Prelude.Maybe Prelude.Text,
    -- | Describes the configuration properties for the solution.
    Solution -> Maybe SolutionConfig
solutionConfig :: Prelude.Maybe SolutionConfig,
    -- | The status of the solution.
    --
    -- A solution can be in one of the following states:
    --
    -- -   CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED
    --
    -- -   DELETE PENDING > DELETE IN_PROGRESS
    Solution -> Maybe Text
status :: Prelude.Maybe Prelude.Text
  }
  deriving (Solution -> Solution -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Solution -> Solution -> Bool
$c/= :: Solution -> Solution -> Bool
== :: Solution -> Solution -> Bool
$c== :: Solution -> Solution -> Bool
Prelude.Eq, ReadPrec [Solution]
ReadPrec Solution
Int -> ReadS Solution
ReadS [Solution]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Solution]
$creadListPrec :: ReadPrec [Solution]
readPrec :: ReadPrec Solution
$creadPrec :: ReadPrec Solution
readList :: ReadS [Solution]
$creadList :: ReadS [Solution]
readsPrec :: Int -> ReadS Solution
$creadsPrec :: Int -> ReadS Solution
Prelude.Read, Int -> Solution -> ShowS
[Solution] -> ShowS
Solution -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Solution] -> ShowS
$cshowList :: [Solution] -> ShowS
show :: Solution -> String
$cshow :: Solution -> String
showsPrec :: Int -> Solution -> ShowS
$cshowsPrec :: Int -> Solution -> ShowS
Prelude.Show, forall x. Rep Solution x -> Solution
forall x. Solution -> Rep Solution x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Solution x -> Solution
$cfrom :: forall x. Solution -> Rep Solution x
Prelude.Generic)

-- |
-- Create a value of 'Solution' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'autoMLResult', 'solution_autoMLResult' - When @performAutoML@ is true, specifies the best recipe found.
--
-- 'creationDateTime', 'solution_creationDateTime' - The creation date and time (in Unix time) of the solution.
--
-- 'datasetGroupArn', 'solution_datasetGroupArn' - The Amazon Resource Name (ARN) of the dataset group that provides the
-- training data.
--
-- 'eventType', 'solution_eventType' - The event type (for example, \'click\' or \'like\') that is used for
-- training the model. If no @eventType@ is provided, Amazon Personalize
-- uses all interactions for training with equal weight regardless of type.
--
-- 'lastUpdatedDateTime', 'solution_lastUpdatedDateTime' - The date and time (in Unix time) that the solution was last updated.
--
-- 'latestSolutionVersion', 'solution_latestSolutionVersion' - Describes the latest version of the solution, including the status and
-- the ARN.
--
-- 'name', 'solution_name' - The name of the solution.
--
-- 'performAutoML', 'solution_performAutoML' - When true, Amazon Personalize performs a search for the best
-- USER_PERSONALIZATION recipe from the list specified in the solution
-- configuration (@recipeArn@ must not be specified). When false (the
-- default), Amazon Personalize uses @recipeArn@ for training.
--
-- 'performHPO', 'solution_performHPO' - Whether to perform hyperparameter optimization (HPO) on the chosen
-- recipe. The default is @false@.
--
-- 'recipeArn', 'solution_recipeArn' - The ARN of the recipe used to create the solution.
--
-- 'solutionArn', 'solution_solutionArn' - The ARN of the solution.
--
-- 'solutionConfig', 'solution_solutionConfig' - Describes the configuration properties for the solution.
--
-- 'status', 'solution_status' - The status of the solution.
--
-- A solution can be in one of the following states:
--
-- -   CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED
--
-- -   DELETE PENDING > DELETE IN_PROGRESS
newSolution ::
  Solution
newSolution :: Solution
newSolution =
  Solution'
    { $sel:autoMLResult:Solution' :: Maybe AutoMLResult
autoMLResult = forall a. Maybe a
Prelude.Nothing,
      $sel:creationDateTime:Solution' :: Maybe POSIX
creationDateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:datasetGroupArn:Solution' :: Maybe Text
datasetGroupArn = forall a. Maybe a
Prelude.Nothing,
      $sel:eventType:Solution' :: Maybe Text
eventType = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedDateTime:Solution' :: Maybe POSIX
lastUpdatedDateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:latestSolutionVersion:Solution' :: Maybe SolutionVersionSummary
latestSolutionVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:name:Solution' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:performAutoML:Solution' :: Maybe Bool
performAutoML = forall a. Maybe a
Prelude.Nothing,
      $sel:performHPO:Solution' :: Maybe Bool
performHPO = forall a. Maybe a
Prelude.Nothing,
      $sel:recipeArn:Solution' :: Maybe Text
recipeArn = forall a. Maybe a
Prelude.Nothing,
      $sel:solutionArn:Solution' :: Maybe Text
solutionArn = forall a. Maybe a
Prelude.Nothing,
      $sel:solutionConfig:Solution' :: Maybe SolutionConfig
solutionConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:status:Solution' :: Maybe Text
status = forall a. Maybe a
Prelude.Nothing
    }

-- | When @performAutoML@ is true, specifies the best recipe found.
solution_autoMLResult :: Lens.Lens' Solution (Prelude.Maybe AutoMLResult)
solution_autoMLResult :: Lens' Solution (Maybe AutoMLResult)
solution_autoMLResult = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe AutoMLResult
autoMLResult :: Maybe AutoMLResult
$sel:autoMLResult:Solution' :: Solution -> Maybe AutoMLResult
autoMLResult} -> Maybe AutoMLResult
autoMLResult) (\s :: Solution
s@Solution' {} Maybe AutoMLResult
a -> Solution
s {$sel:autoMLResult:Solution' :: Maybe AutoMLResult
autoMLResult = Maybe AutoMLResult
a} :: Solution)

-- | The creation date and time (in Unix time) of the solution.
solution_creationDateTime :: Lens.Lens' Solution (Prelude.Maybe Prelude.UTCTime)
solution_creationDateTime :: Lens' Solution (Maybe UTCTime)
solution_creationDateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe POSIX
creationDateTime :: Maybe POSIX
$sel:creationDateTime:Solution' :: Solution -> Maybe POSIX
creationDateTime} -> Maybe POSIX
creationDateTime) (\s :: Solution
s@Solution' {} Maybe POSIX
a -> Solution
s {$sel:creationDateTime:Solution' :: Maybe POSIX
creationDateTime = Maybe POSIX
a} :: Solution) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The Amazon Resource Name (ARN) of the dataset group that provides the
-- training data.
solution_datasetGroupArn :: Lens.Lens' Solution (Prelude.Maybe Prelude.Text)
solution_datasetGroupArn :: Lens' Solution (Maybe Text)
solution_datasetGroupArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe Text
datasetGroupArn :: Maybe Text
$sel:datasetGroupArn:Solution' :: Solution -> Maybe Text
datasetGroupArn} -> Maybe Text
datasetGroupArn) (\s :: Solution
s@Solution' {} Maybe Text
a -> Solution
s {$sel:datasetGroupArn:Solution' :: Maybe Text
datasetGroupArn = Maybe Text
a} :: Solution)

-- | The event type (for example, \'click\' or \'like\') that is used for
-- training the model. If no @eventType@ is provided, Amazon Personalize
-- uses all interactions for training with equal weight regardless of type.
solution_eventType :: Lens.Lens' Solution (Prelude.Maybe Prelude.Text)
solution_eventType :: Lens' Solution (Maybe Text)
solution_eventType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe Text
eventType :: Maybe Text
$sel:eventType:Solution' :: Solution -> Maybe Text
eventType} -> Maybe Text
eventType) (\s :: Solution
s@Solution' {} Maybe Text
a -> Solution
s {$sel:eventType:Solution' :: Maybe Text
eventType = Maybe Text
a} :: Solution)

-- | The date and time (in Unix time) that the solution was last updated.
solution_lastUpdatedDateTime :: Lens.Lens' Solution (Prelude.Maybe Prelude.UTCTime)
solution_lastUpdatedDateTime :: Lens' Solution (Maybe UTCTime)
solution_lastUpdatedDateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe POSIX
lastUpdatedDateTime :: Maybe POSIX
$sel:lastUpdatedDateTime:Solution' :: Solution -> Maybe POSIX
lastUpdatedDateTime} -> Maybe POSIX
lastUpdatedDateTime) (\s :: Solution
s@Solution' {} Maybe POSIX
a -> Solution
s {$sel:lastUpdatedDateTime:Solution' :: Maybe POSIX
lastUpdatedDateTime = Maybe POSIX
a} :: Solution) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Describes the latest version of the solution, including the status and
-- the ARN.
solution_latestSolutionVersion :: Lens.Lens' Solution (Prelude.Maybe SolutionVersionSummary)
solution_latestSolutionVersion :: Lens' Solution (Maybe SolutionVersionSummary)
solution_latestSolutionVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe SolutionVersionSummary
latestSolutionVersion :: Maybe SolutionVersionSummary
$sel:latestSolutionVersion:Solution' :: Solution -> Maybe SolutionVersionSummary
latestSolutionVersion} -> Maybe SolutionVersionSummary
latestSolutionVersion) (\s :: Solution
s@Solution' {} Maybe SolutionVersionSummary
a -> Solution
s {$sel:latestSolutionVersion:Solution' :: Maybe SolutionVersionSummary
latestSolutionVersion = Maybe SolutionVersionSummary
a} :: Solution)

-- | The name of the solution.
solution_name :: Lens.Lens' Solution (Prelude.Maybe Prelude.Text)
solution_name :: Lens' Solution (Maybe Text)
solution_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe Text
name :: Maybe Text
$sel:name:Solution' :: Solution -> Maybe Text
name} -> Maybe Text
name) (\s :: Solution
s@Solution' {} Maybe Text
a -> Solution
s {$sel:name:Solution' :: Maybe Text
name = Maybe Text
a} :: Solution)

-- | When true, Amazon Personalize performs a search for the best
-- USER_PERSONALIZATION recipe from the list specified in the solution
-- configuration (@recipeArn@ must not be specified). When false (the
-- default), Amazon Personalize uses @recipeArn@ for training.
solution_performAutoML :: Lens.Lens' Solution (Prelude.Maybe Prelude.Bool)
solution_performAutoML :: Lens' Solution (Maybe Bool)
solution_performAutoML = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe Bool
performAutoML :: Maybe Bool
$sel:performAutoML:Solution' :: Solution -> Maybe Bool
performAutoML} -> Maybe Bool
performAutoML) (\s :: Solution
s@Solution' {} Maybe Bool
a -> Solution
s {$sel:performAutoML:Solution' :: Maybe Bool
performAutoML = Maybe Bool
a} :: Solution)

-- | Whether to perform hyperparameter optimization (HPO) on the chosen
-- recipe. The default is @false@.
solution_performHPO :: Lens.Lens' Solution (Prelude.Maybe Prelude.Bool)
solution_performHPO :: Lens' Solution (Maybe Bool)
solution_performHPO = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe Bool
performHPO :: Maybe Bool
$sel:performHPO:Solution' :: Solution -> Maybe Bool
performHPO} -> Maybe Bool
performHPO) (\s :: Solution
s@Solution' {} Maybe Bool
a -> Solution
s {$sel:performHPO:Solution' :: Maybe Bool
performHPO = Maybe Bool
a} :: Solution)

-- | The ARN of the recipe used to create the solution.
solution_recipeArn :: Lens.Lens' Solution (Prelude.Maybe Prelude.Text)
solution_recipeArn :: Lens' Solution (Maybe Text)
solution_recipeArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe Text
recipeArn :: Maybe Text
$sel:recipeArn:Solution' :: Solution -> Maybe Text
recipeArn} -> Maybe Text
recipeArn) (\s :: Solution
s@Solution' {} Maybe Text
a -> Solution
s {$sel:recipeArn:Solution' :: Maybe Text
recipeArn = Maybe Text
a} :: Solution)

-- | The ARN of the solution.
solution_solutionArn :: Lens.Lens' Solution (Prelude.Maybe Prelude.Text)
solution_solutionArn :: Lens' Solution (Maybe Text)
solution_solutionArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe Text
solutionArn :: Maybe Text
$sel:solutionArn:Solution' :: Solution -> Maybe Text
solutionArn} -> Maybe Text
solutionArn) (\s :: Solution
s@Solution' {} Maybe Text
a -> Solution
s {$sel:solutionArn:Solution' :: Maybe Text
solutionArn = Maybe Text
a} :: Solution)

-- | Describes the configuration properties for the solution.
solution_solutionConfig :: Lens.Lens' Solution (Prelude.Maybe SolutionConfig)
solution_solutionConfig :: Lens' Solution (Maybe SolutionConfig)
solution_solutionConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe SolutionConfig
solutionConfig :: Maybe SolutionConfig
$sel:solutionConfig:Solution' :: Solution -> Maybe SolutionConfig
solutionConfig} -> Maybe SolutionConfig
solutionConfig) (\s :: Solution
s@Solution' {} Maybe SolutionConfig
a -> Solution
s {$sel:solutionConfig:Solution' :: Maybe SolutionConfig
solutionConfig = Maybe SolutionConfig
a} :: Solution)

-- | The status of the solution.
--
-- A solution can be in one of the following states:
--
-- -   CREATE PENDING > CREATE IN_PROGRESS > ACTIVE -or- CREATE FAILED
--
-- -   DELETE PENDING > DELETE IN_PROGRESS
solution_status :: Lens.Lens' Solution (Prelude.Maybe Prelude.Text)
solution_status :: Lens' Solution (Maybe Text)
solution_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Solution' {Maybe Text
status :: Maybe Text
$sel:status:Solution' :: Solution -> Maybe Text
status} -> Maybe Text
status) (\s :: Solution
s@Solution' {} Maybe Text
a -> Solution
s {$sel:status:Solution' :: Maybe Text
status = Maybe Text
a} :: Solution)

instance Data.FromJSON Solution where
  parseJSON :: Value -> Parser Solution
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Solution"
      ( \Object
x ->
          Maybe AutoMLResult
-> Maybe POSIX
-> Maybe Text
-> Maybe Text
-> Maybe POSIX
-> Maybe SolutionVersionSummary
-> Maybe Text
-> Maybe Bool
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe SolutionConfig
-> Maybe Text
-> Solution
Solution'
            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
"autoMLResult")
            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
"creationDateTime")
            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
"datasetGroupArn")
            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
"eventType")
            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
"lastUpdatedDateTime")
            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
"latestSolutionVersion")
            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
"name")
            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
"performAutoML")
            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
"performHPO")
            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
"recipeArn")
            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
"solutionArn")
            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
"solutionConfig")
            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
"status")
      )

instance Prelude.Hashable Solution where
  hashWithSalt :: Int -> Solution -> Int
hashWithSalt Int
_salt Solution' {Maybe Bool
Maybe Text
Maybe POSIX
Maybe AutoMLResult
Maybe SolutionConfig
Maybe SolutionVersionSummary
status :: Maybe Text
solutionConfig :: Maybe SolutionConfig
solutionArn :: Maybe Text
recipeArn :: Maybe Text
performHPO :: Maybe Bool
performAutoML :: Maybe Bool
name :: Maybe Text
latestSolutionVersion :: Maybe SolutionVersionSummary
lastUpdatedDateTime :: Maybe POSIX
eventType :: Maybe Text
datasetGroupArn :: Maybe Text
creationDateTime :: Maybe POSIX
autoMLResult :: Maybe AutoMLResult
$sel:status:Solution' :: Solution -> Maybe Text
$sel:solutionConfig:Solution' :: Solution -> Maybe SolutionConfig
$sel:solutionArn:Solution' :: Solution -> Maybe Text
$sel:recipeArn:Solution' :: Solution -> Maybe Text
$sel:performHPO:Solution' :: Solution -> Maybe Bool
$sel:performAutoML:Solution' :: Solution -> Maybe Bool
$sel:name:Solution' :: Solution -> Maybe Text
$sel:latestSolutionVersion:Solution' :: Solution -> Maybe SolutionVersionSummary
$sel:lastUpdatedDateTime:Solution' :: Solution -> Maybe POSIX
$sel:eventType:Solution' :: Solution -> Maybe Text
$sel:datasetGroupArn:Solution' :: Solution -> Maybe Text
$sel:creationDateTime:Solution' :: Solution -> Maybe POSIX
$sel:autoMLResult:Solution' :: Solution -> Maybe AutoMLResult
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AutoMLResult
autoMLResult
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
creationDateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
datasetGroupArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
eventType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastUpdatedDateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SolutionVersionSummary
latestSolutionVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
performAutoML
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
performHPO
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
recipeArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
solutionArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SolutionConfig
solutionConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
status

instance Prelude.NFData Solution where
  rnf :: Solution -> ()
rnf Solution' {Maybe Bool
Maybe Text
Maybe POSIX
Maybe AutoMLResult
Maybe SolutionConfig
Maybe SolutionVersionSummary
status :: Maybe Text
solutionConfig :: Maybe SolutionConfig
solutionArn :: Maybe Text
recipeArn :: Maybe Text
performHPO :: Maybe Bool
performAutoML :: Maybe Bool
name :: Maybe Text
latestSolutionVersion :: Maybe SolutionVersionSummary
lastUpdatedDateTime :: Maybe POSIX
eventType :: Maybe Text
datasetGroupArn :: Maybe Text
creationDateTime :: Maybe POSIX
autoMLResult :: Maybe AutoMLResult
$sel:status:Solution' :: Solution -> Maybe Text
$sel:solutionConfig:Solution' :: Solution -> Maybe SolutionConfig
$sel:solutionArn:Solution' :: Solution -> Maybe Text
$sel:recipeArn:Solution' :: Solution -> Maybe Text
$sel:performHPO:Solution' :: Solution -> Maybe Bool
$sel:performAutoML:Solution' :: Solution -> Maybe Bool
$sel:name:Solution' :: Solution -> Maybe Text
$sel:latestSolutionVersion:Solution' :: Solution -> Maybe SolutionVersionSummary
$sel:lastUpdatedDateTime:Solution' :: Solution -> Maybe POSIX
$sel:eventType:Solution' :: Solution -> Maybe Text
$sel:datasetGroupArn:Solution' :: Solution -> Maybe Text
$sel:creationDateTime:Solution' :: Solution -> Maybe POSIX
$sel:autoMLResult:Solution' :: Solution -> Maybe AutoMLResult
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AutoMLResult
autoMLResult
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationDateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
datasetGroupArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
eventType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastUpdatedDateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SolutionVersionSummary
latestSolutionVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
performAutoML
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
performHPO
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
recipeArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
solutionArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SolutionConfig
solutionConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
status