{-# 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.SageMaker.Types.ResolvedAttributes
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.SageMaker.Types.ResolvedAttributes where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SageMaker.Types.AutoMLJobCompletionCriteria
import Amazonka.SageMaker.Types.AutoMLJobObjective
import Amazonka.SageMaker.Types.ProblemType

-- | The resolved attributes.
--
-- /See:/ 'newResolvedAttributes' smart constructor.
data ResolvedAttributes = ResolvedAttributes'
  { -- | The problem type.
    ResolvedAttributes -> Maybe ProblemType
problemType :: Prelude.Maybe ProblemType,
    ResolvedAttributes -> Maybe AutoMLJobObjective
autoMLJobObjective :: Prelude.Maybe AutoMLJobObjective,
    ResolvedAttributes -> Maybe AutoMLJobCompletionCriteria
completionCriteria :: Prelude.Maybe AutoMLJobCompletionCriteria
  }
  deriving (ResolvedAttributes -> ResolvedAttributes -> Bool
(ResolvedAttributes -> ResolvedAttributes -> Bool)
-> (ResolvedAttributes -> ResolvedAttributes -> Bool)
-> Eq ResolvedAttributes
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ResolvedAttributes -> ResolvedAttributes -> Bool
$c/= :: ResolvedAttributes -> ResolvedAttributes -> Bool
== :: ResolvedAttributes -> ResolvedAttributes -> Bool
$c== :: ResolvedAttributes -> ResolvedAttributes -> Bool
Prelude.Eq, ReadPrec [ResolvedAttributes]
ReadPrec ResolvedAttributes
Int -> ReadS ResolvedAttributes
ReadS [ResolvedAttributes]
(Int -> ReadS ResolvedAttributes)
-> ReadS [ResolvedAttributes]
-> ReadPrec ResolvedAttributes
-> ReadPrec [ResolvedAttributes]
-> Read ResolvedAttributes
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ResolvedAttributes]
$creadListPrec :: ReadPrec [ResolvedAttributes]
readPrec :: ReadPrec ResolvedAttributes
$creadPrec :: ReadPrec ResolvedAttributes
readList :: ReadS [ResolvedAttributes]
$creadList :: ReadS [ResolvedAttributes]
readsPrec :: Int -> ReadS ResolvedAttributes
$creadsPrec :: Int -> ReadS ResolvedAttributes
Prelude.Read, Int -> ResolvedAttributes -> ShowS
[ResolvedAttributes] -> ShowS
ResolvedAttributes -> String
(Int -> ResolvedAttributes -> ShowS)
-> (ResolvedAttributes -> String)
-> ([ResolvedAttributes] -> ShowS)
-> Show ResolvedAttributes
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ResolvedAttributes] -> ShowS
$cshowList :: [ResolvedAttributes] -> ShowS
show :: ResolvedAttributes -> String
$cshow :: ResolvedAttributes -> String
showsPrec :: Int -> ResolvedAttributes -> ShowS
$cshowsPrec :: Int -> ResolvedAttributes -> ShowS
Prelude.Show, (forall x. ResolvedAttributes -> Rep ResolvedAttributes x)
-> (forall x. Rep ResolvedAttributes x -> ResolvedAttributes)
-> Generic ResolvedAttributes
forall x. Rep ResolvedAttributes x -> ResolvedAttributes
forall x. ResolvedAttributes -> Rep ResolvedAttributes x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ResolvedAttributes x -> ResolvedAttributes
$cfrom :: forall x. ResolvedAttributes -> Rep ResolvedAttributes x
Prelude.Generic)

-- |
-- Create a value of 'ResolvedAttributes' 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:
--
-- 'problemType', 'resolvedAttributes_problemType' - The problem type.
--
-- 'autoMLJobObjective', 'resolvedAttributes_autoMLJobObjective' - Undocumented member.
--
-- 'completionCriteria', 'resolvedAttributes_completionCriteria' - Undocumented member.
newResolvedAttributes ::
  ResolvedAttributes
newResolvedAttributes :: ResolvedAttributes
newResolvedAttributes =
  ResolvedAttributes' :: Maybe ProblemType
-> Maybe AutoMLJobObjective
-> Maybe AutoMLJobCompletionCriteria
-> ResolvedAttributes
ResolvedAttributes'
    { $sel:problemType:ResolvedAttributes' :: Maybe ProblemType
problemType = Maybe ProblemType
forall a. Maybe a
Prelude.Nothing,
      $sel:autoMLJobObjective:ResolvedAttributes' :: Maybe AutoMLJobObjective
autoMLJobObjective = Maybe AutoMLJobObjective
forall a. Maybe a
Prelude.Nothing,
      $sel:completionCriteria:ResolvedAttributes' :: Maybe AutoMLJobCompletionCriteria
completionCriteria = Maybe AutoMLJobCompletionCriteria
forall a. Maybe a
Prelude.Nothing
    }

-- | The problem type.
resolvedAttributes_problemType :: Lens.Lens' ResolvedAttributes (Prelude.Maybe ProblemType)
resolvedAttributes_problemType :: (Maybe ProblemType -> f (Maybe ProblemType))
-> ResolvedAttributes -> f ResolvedAttributes
resolvedAttributes_problemType = (ResolvedAttributes -> Maybe ProblemType)
-> (ResolvedAttributes -> Maybe ProblemType -> ResolvedAttributes)
-> Lens
     ResolvedAttributes
     ResolvedAttributes
     (Maybe ProblemType)
     (Maybe ProblemType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResolvedAttributes' {Maybe ProblemType
problemType :: Maybe ProblemType
$sel:problemType:ResolvedAttributes' :: ResolvedAttributes -> Maybe ProblemType
problemType} -> Maybe ProblemType
problemType) (\s :: ResolvedAttributes
s@ResolvedAttributes' {} Maybe ProblemType
a -> ResolvedAttributes
s {$sel:problemType:ResolvedAttributes' :: Maybe ProblemType
problemType = Maybe ProblemType
a} :: ResolvedAttributes)

-- | Undocumented member.
resolvedAttributes_autoMLJobObjective :: Lens.Lens' ResolvedAttributes (Prelude.Maybe AutoMLJobObjective)
resolvedAttributes_autoMLJobObjective :: (Maybe AutoMLJobObjective -> f (Maybe AutoMLJobObjective))
-> ResolvedAttributes -> f ResolvedAttributes
resolvedAttributes_autoMLJobObjective = (ResolvedAttributes -> Maybe AutoMLJobObjective)
-> (ResolvedAttributes
    -> Maybe AutoMLJobObjective -> ResolvedAttributes)
-> Lens
     ResolvedAttributes
     ResolvedAttributes
     (Maybe AutoMLJobObjective)
     (Maybe AutoMLJobObjective)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResolvedAttributes' {Maybe AutoMLJobObjective
autoMLJobObjective :: Maybe AutoMLJobObjective
$sel:autoMLJobObjective:ResolvedAttributes' :: ResolvedAttributes -> Maybe AutoMLJobObjective
autoMLJobObjective} -> Maybe AutoMLJobObjective
autoMLJobObjective) (\s :: ResolvedAttributes
s@ResolvedAttributes' {} Maybe AutoMLJobObjective
a -> ResolvedAttributes
s {$sel:autoMLJobObjective:ResolvedAttributes' :: Maybe AutoMLJobObjective
autoMLJobObjective = Maybe AutoMLJobObjective
a} :: ResolvedAttributes)

-- | Undocumented member.
resolvedAttributes_completionCriteria :: Lens.Lens' ResolvedAttributes (Prelude.Maybe AutoMLJobCompletionCriteria)
resolvedAttributes_completionCriteria :: (Maybe AutoMLJobCompletionCriteria
 -> f (Maybe AutoMLJobCompletionCriteria))
-> ResolvedAttributes -> f ResolvedAttributes
resolvedAttributes_completionCriteria = (ResolvedAttributes -> Maybe AutoMLJobCompletionCriteria)
-> (ResolvedAttributes
    -> Maybe AutoMLJobCompletionCriteria -> ResolvedAttributes)
-> Lens
     ResolvedAttributes
     ResolvedAttributes
     (Maybe AutoMLJobCompletionCriteria)
     (Maybe AutoMLJobCompletionCriteria)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResolvedAttributes' {Maybe AutoMLJobCompletionCriteria
completionCriteria :: Maybe AutoMLJobCompletionCriteria
$sel:completionCriteria:ResolvedAttributes' :: ResolvedAttributes -> Maybe AutoMLJobCompletionCriteria
completionCriteria} -> Maybe AutoMLJobCompletionCriteria
completionCriteria) (\s :: ResolvedAttributes
s@ResolvedAttributes' {} Maybe AutoMLJobCompletionCriteria
a -> ResolvedAttributes
s {$sel:completionCriteria:ResolvedAttributes' :: Maybe AutoMLJobCompletionCriteria
completionCriteria = Maybe AutoMLJobCompletionCriteria
a} :: ResolvedAttributes)

instance Core.FromJSON ResolvedAttributes where
  parseJSON :: Value -> Parser ResolvedAttributes
parseJSON =
    String
-> (Object -> Parser ResolvedAttributes)
-> Value
-> Parser ResolvedAttributes
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"ResolvedAttributes"
      ( \Object
x ->
          Maybe ProblemType
-> Maybe AutoMLJobObjective
-> Maybe AutoMLJobCompletionCriteria
-> ResolvedAttributes
ResolvedAttributes'
            (Maybe ProblemType
 -> Maybe AutoMLJobObjective
 -> Maybe AutoMLJobCompletionCriteria
 -> ResolvedAttributes)
-> Parser (Maybe ProblemType)
-> Parser
     (Maybe AutoMLJobObjective
      -> Maybe AutoMLJobCompletionCriteria -> ResolvedAttributes)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe ProblemType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ProblemType")
            Parser
  (Maybe AutoMLJobObjective
   -> Maybe AutoMLJobCompletionCriteria -> ResolvedAttributes)
-> Parser (Maybe AutoMLJobObjective)
-> Parser (Maybe AutoMLJobCompletionCriteria -> ResolvedAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AutoMLJobObjective)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"AutoMLJobObjective")
            Parser (Maybe AutoMLJobCompletionCriteria -> ResolvedAttributes)
-> Parser (Maybe AutoMLJobCompletionCriteria)
-> Parser ResolvedAttributes
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe AutoMLJobCompletionCriteria)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CompletionCriteria")
      )

instance Prelude.Hashable ResolvedAttributes

instance Prelude.NFData ResolvedAttributes