module Stratosphere.Personalize.Solution.HpoConfigProperty (
        module Exports, HpoConfigProperty(..), mkHpoConfigProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.Personalize.Solution.AlgorithmHyperParameterRangesProperty as Exports
import {-# SOURCE #-} Stratosphere.Personalize.Solution.HpoObjectiveProperty as Exports
import {-# SOURCE #-} Stratosphere.Personalize.Solution.HpoResourceConfigProperty as Exports
import Stratosphere.ResourceProperties
data HpoConfigProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-personalize-solution-hpoconfig.html>
    HpoConfigProperty {HpoConfigProperty -> ()
haddock_workaround_ :: (),
                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-personalize-solution-hpoconfig.html#cfn-personalize-solution-hpoconfig-algorithmhyperparameterranges>
                       HpoConfigProperty -> Maybe AlgorithmHyperParameterRangesProperty
algorithmHyperParameterRanges :: (Prelude.Maybe AlgorithmHyperParameterRangesProperty),
                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-personalize-solution-hpoconfig.html#cfn-personalize-solution-hpoconfig-hpoobjective>
                       HpoConfigProperty -> Maybe HpoObjectiveProperty
hpoObjective :: (Prelude.Maybe HpoObjectiveProperty),
                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-personalize-solution-hpoconfig.html#cfn-personalize-solution-hpoconfig-hporesourceconfig>
                       HpoConfigProperty -> Maybe HpoResourceConfigProperty
hpoResourceConfig :: (Prelude.Maybe HpoResourceConfigProperty)}
  deriving stock (HpoConfigProperty -> HpoConfigProperty -> Bool
(HpoConfigProperty -> HpoConfigProperty -> Bool)
-> (HpoConfigProperty -> HpoConfigProperty -> Bool)
-> Eq HpoConfigProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: HpoConfigProperty -> HpoConfigProperty -> Bool
== :: HpoConfigProperty -> HpoConfigProperty -> Bool
$c/= :: HpoConfigProperty -> HpoConfigProperty -> Bool
/= :: HpoConfigProperty -> HpoConfigProperty -> Bool
Prelude.Eq, Int -> HpoConfigProperty -> ShowS
[HpoConfigProperty] -> ShowS
HpoConfigProperty -> String
(Int -> HpoConfigProperty -> ShowS)
-> (HpoConfigProperty -> String)
-> ([HpoConfigProperty] -> ShowS)
-> Show HpoConfigProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> HpoConfigProperty -> ShowS
showsPrec :: Int -> HpoConfigProperty -> ShowS
$cshow :: HpoConfigProperty -> String
show :: HpoConfigProperty -> String
$cshowList :: [HpoConfigProperty] -> ShowS
showList :: [HpoConfigProperty] -> ShowS
Prelude.Show)
mkHpoConfigProperty :: HpoConfigProperty
mkHpoConfigProperty :: HpoConfigProperty
mkHpoConfigProperty
  = HpoConfigProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (),
       algorithmHyperParameterRanges :: Maybe AlgorithmHyperParameterRangesProperty
algorithmHyperParameterRanges = Maybe AlgorithmHyperParameterRangesProperty
forall a. Maybe a
Prelude.Nothing,
       hpoObjective :: Maybe HpoObjectiveProperty
hpoObjective = Maybe HpoObjectiveProperty
forall a. Maybe a
Prelude.Nothing,
       hpoResourceConfig :: Maybe HpoResourceConfigProperty
hpoResourceConfig = Maybe HpoResourceConfigProperty
forall a. Maybe a
Prelude.Nothing}
instance ToResourceProperties HpoConfigProperty where
  toResourceProperties :: HpoConfigProperty -> ResourceProperties
toResourceProperties HpoConfigProperty {Maybe HpoObjectiveProperty
Maybe HpoResourceConfigProperty
Maybe AlgorithmHyperParameterRangesProperty
()
haddock_workaround_ :: HpoConfigProperty -> ()
algorithmHyperParameterRanges :: HpoConfigProperty -> Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: HpoConfigProperty -> Maybe HpoObjectiveProperty
hpoResourceConfig :: HpoConfigProperty -> Maybe HpoResourceConfigProperty
haddock_workaround_ :: ()
algorithmHyperParameterRanges :: Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: Maybe HpoObjectiveProperty
hpoResourceConfig :: Maybe HpoResourceConfigProperty
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::Personalize::Solution.HpoConfig",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Item Object] -> Object
forall l. IsList l => [Item l] -> l
Prelude.fromList
                        ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
                           [Key -> AlgorithmHyperParameterRangesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"AlgorithmHyperParameterRanges"
                              (AlgorithmHyperParameterRangesProperty -> (Key, Value))
-> Maybe AlgorithmHyperParameterRangesProperty
-> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AlgorithmHyperParameterRangesProperty
algorithmHyperParameterRanges,
                            Key -> HpoObjectiveProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"HpoObjective" (HpoObjectiveProperty -> (Key, Value))
-> Maybe HpoObjectiveProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HpoObjectiveProperty
hpoObjective,
                            Key -> HpoResourceConfigProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"HpoResourceConfig" (HpoResourceConfigProperty -> (Key, Value))
-> Maybe HpoResourceConfigProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HpoResourceConfigProperty
hpoResourceConfig])}
instance JSON.ToJSON HpoConfigProperty where
  toJSON :: HpoConfigProperty -> Value
toJSON HpoConfigProperty {Maybe HpoObjectiveProperty
Maybe HpoResourceConfigProperty
Maybe AlgorithmHyperParameterRangesProperty
()
haddock_workaround_ :: HpoConfigProperty -> ()
algorithmHyperParameterRanges :: HpoConfigProperty -> Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: HpoConfigProperty -> Maybe HpoObjectiveProperty
hpoResourceConfig :: HpoConfigProperty -> Maybe HpoResourceConfigProperty
haddock_workaround_ :: ()
algorithmHyperParameterRanges :: Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: Maybe HpoObjectiveProperty
hpoResourceConfig :: Maybe HpoResourceConfigProperty
..}
    = [(Key, Value)] -> Value
JSON.object
        ([Item [(Key, Value)]] -> [(Key, Value)]
forall l. IsList l => [Item l] -> l
Prelude.fromList
           ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
              [Key -> AlgorithmHyperParameterRangesProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"AlgorithmHyperParameterRanges"
                 (AlgorithmHyperParameterRangesProperty -> (Key, Value))
-> Maybe AlgorithmHyperParameterRangesProperty
-> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AlgorithmHyperParameterRangesProperty
algorithmHyperParameterRanges,
               Key -> HpoObjectiveProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"HpoObjective" (HpoObjectiveProperty -> (Key, Value))
-> Maybe HpoObjectiveProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HpoObjectiveProperty
hpoObjective,
               Key -> HpoResourceConfigProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"HpoResourceConfig" (HpoResourceConfigProperty -> (Key, Value))
-> Maybe HpoResourceConfigProperty -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe HpoResourceConfigProperty
hpoResourceConfig]))
instance Property "AlgorithmHyperParameterRanges" HpoConfigProperty where
  type PropertyType "AlgorithmHyperParameterRanges" HpoConfigProperty = AlgorithmHyperParameterRangesProperty
  set :: PropertyType "AlgorithmHyperParameterRanges" HpoConfigProperty
-> HpoConfigProperty -> HpoConfigProperty
set PropertyType "AlgorithmHyperParameterRanges" HpoConfigProperty
newValue HpoConfigProperty {Maybe HpoObjectiveProperty
Maybe HpoResourceConfigProperty
Maybe AlgorithmHyperParameterRangesProperty
()
haddock_workaround_ :: HpoConfigProperty -> ()
algorithmHyperParameterRanges :: HpoConfigProperty -> Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: HpoConfigProperty -> Maybe HpoObjectiveProperty
hpoResourceConfig :: HpoConfigProperty -> Maybe HpoResourceConfigProperty
haddock_workaround_ :: ()
algorithmHyperParameterRanges :: Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: Maybe HpoObjectiveProperty
hpoResourceConfig :: Maybe HpoResourceConfigProperty
..}
    = HpoConfigProperty
        {algorithmHyperParameterRanges :: Maybe AlgorithmHyperParameterRangesProperty
algorithmHyperParameterRanges = AlgorithmHyperParameterRangesProperty
-> Maybe AlgorithmHyperParameterRangesProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "AlgorithmHyperParameterRanges" HpoConfigProperty
AlgorithmHyperParameterRangesProperty
newValue, Maybe HpoObjectiveProperty
Maybe HpoResourceConfigProperty
()
haddock_workaround_ :: ()
hpoObjective :: Maybe HpoObjectiveProperty
hpoResourceConfig :: Maybe HpoResourceConfigProperty
haddock_workaround_ :: ()
hpoObjective :: Maybe HpoObjectiveProperty
hpoResourceConfig :: Maybe HpoResourceConfigProperty
..}
instance Property "HpoObjective" HpoConfigProperty where
  type PropertyType "HpoObjective" HpoConfigProperty = HpoObjectiveProperty
  set :: PropertyType "HpoObjective" HpoConfigProperty
-> HpoConfigProperty -> HpoConfigProperty
set PropertyType "HpoObjective" HpoConfigProperty
newValue HpoConfigProperty {Maybe HpoObjectiveProperty
Maybe HpoResourceConfigProperty
Maybe AlgorithmHyperParameterRangesProperty
()
haddock_workaround_ :: HpoConfigProperty -> ()
algorithmHyperParameterRanges :: HpoConfigProperty -> Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: HpoConfigProperty -> Maybe HpoObjectiveProperty
hpoResourceConfig :: HpoConfigProperty -> Maybe HpoResourceConfigProperty
haddock_workaround_ :: ()
algorithmHyperParameterRanges :: Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: Maybe HpoObjectiveProperty
hpoResourceConfig :: Maybe HpoResourceConfigProperty
..}
    = HpoConfigProperty {hpoObjective :: Maybe HpoObjectiveProperty
hpoObjective = HpoObjectiveProperty -> Maybe HpoObjectiveProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "HpoObjective" HpoConfigProperty
HpoObjectiveProperty
newValue, Maybe HpoResourceConfigProperty
Maybe AlgorithmHyperParameterRangesProperty
()
haddock_workaround_ :: ()
algorithmHyperParameterRanges :: Maybe AlgorithmHyperParameterRangesProperty
hpoResourceConfig :: Maybe HpoResourceConfigProperty
haddock_workaround_ :: ()
algorithmHyperParameterRanges :: Maybe AlgorithmHyperParameterRangesProperty
hpoResourceConfig :: Maybe HpoResourceConfigProperty
..}
instance Property "HpoResourceConfig" HpoConfigProperty where
  type PropertyType "HpoResourceConfig" HpoConfigProperty = HpoResourceConfigProperty
  set :: PropertyType "HpoResourceConfig" HpoConfigProperty
-> HpoConfigProperty -> HpoConfigProperty
set PropertyType "HpoResourceConfig" HpoConfigProperty
newValue HpoConfigProperty {Maybe HpoObjectiveProperty
Maybe HpoResourceConfigProperty
Maybe AlgorithmHyperParameterRangesProperty
()
haddock_workaround_ :: HpoConfigProperty -> ()
algorithmHyperParameterRanges :: HpoConfigProperty -> Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: HpoConfigProperty -> Maybe HpoObjectiveProperty
hpoResourceConfig :: HpoConfigProperty -> Maybe HpoResourceConfigProperty
haddock_workaround_ :: ()
algorithmHyperParameterRanges :: Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: Maybe HpoObjectiveProperty
hpoResourceConfig :: Maybe HpoResourceConfigProperty
..}
    = HpoConfigProperty {hpoResourceConfig :: Maybe HpoResourceConfigProperty
hpoResourceConfig = HpoResourceConfigProperty -> Maybe HpoResourceConfigProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "HpoResourceConfig" HpoConfigProperty
HpoResourceConfigProperty
newValue, Maybe HpoObjectiveProperty
Maybe AlgorithmHyperParameterRangesProperty
()
haddock_workaround_ :: ()
algorithmHyperParameterRanges :: Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: Maybe HpoObjectiveProperty
haddock_workaround_ :: ()
algorithmHyperParameterRanges :: Maybe AlgorithmHyperParameterRangesProperty
hpoObjective :: Maybe HpoObjectiveProperty
..}