{-# 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.SearchRecord
-- 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.SearchRecord where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SageMaker.Types.Endpoint
import Amazonka.SageMaker.Types.Experiment
import Amazonka.SageMaker.Types.FeatureGroup
import Amazonka.SageMaker.Types.ModelPackage
import Amazonka.SageMaker.Types.ModelPackageGroup
import Amazonka.SageMaker.Types.Pipeline
import Amazonka.SageMaker.Types.PipelineExecution
import Amazonka.SageMaker.Types.Project
import Amazonka.SageMaker.Types.TrainingJob
import Amazonka.SageMaker.Types.Trial
import Amazonka.SageMaker.Types.TrialComponent

-- | A single resource returned as part of the Search API response.
--
-- /See:/ 'newSearchRecord' smart constructor.
data SearchRecord = SearchRecord'
  { -- | The properties of a training job.
    SearchRecord -> Maybe TrainingJob
trainingJob :: Prelude.Maybe TrainingJob,
    -- | The properties of a trial.
    SearchRecord -> Maybe Trial
trial :: Prelude.Maybe Trial,
    SearchRecord -> Maybe ModelPackageGroup
modelPackageGroup :: Prelude.Maybe ModelPackageGroup,
    -- | The properties of a trial component.
    SearchRecord -> Maybe TrialComponent
trialComponent :: Prelude.Maybe TrialComponent,
    -- | The properties of a project.
    SearchRecord -> Maybe Project
project :: Prelude.Maybe Project,
    SearchRecord -> Maybe PipelineExecution
pipelineExecution :: Prelude.Maybe PipelineExecution,
    SearchRecord -> Maybe FeatureGroup
featureGroup :: Prelude.Maybe FeatureGroup,
    -- | The properties of an experiment.
    SearchRecord -> Maybe Experiment
experiment :: Prelude.Maybe Experiment,
    SearchRecord -> Maybe Pipeline
pipeline :: Prelude.Maybe Pipeline,
    SearchRecord -> Maybe ModelPackage
modelPackage :: Prelude.Maybe ModelPackage,
    SearchRecord -> Maybe Endpoint
endpoint :: Prelude.Maybe Endpoint
  }
  deriving (SearchRecord -> SearchRecord -> Bool
(SearchRecord -> SearchRecord -> Bool)
-> (SearchRecord -> SearchRecord -> Bool) -> Eq SearchRecord
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SearchRecord -> SearchRecord -> Bool
$c/= :: SearchRecord -> SearchRecord -> Bool
== :: SearchRecord -> SearchRecord -> Bool
$c== :: SearchRecord -> SearchRecord -> Bool
Prelude.Eq, ReadPrec [SearchRecord]
ReadPrec SearchRecord
Int -> ReadS SearchRecord
ReadS [SearchRecord]
(Int -> ReadS SearchRecord)
-> ReadS [SearchRecord]
-> ReadPrec SearchRecord
-> ReadPrec [SearchRecord]
-> Read SearchRecord
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [SearchRecord]
$creadListPrec :: ReadPrec [SearchRecord]
readPrec :: ReadPrec SearchRecord
$creadPrec :: ReadPrec SearchRecord
readList :: ReadS [SearchRecord]
$creadList :: ReadS [SearchRecord]
readsPrec :: Int -> ReadS SearchRecord
$creadsPrec :: Int -> ReadS SearchRecord
Prelude.Read, Int -> SearchRecord -> ShowS
[SearchRecord] -> ShowS
SearchRecord -> String
(Int -> SearchRecord -> ShowS)
-> (SearchRecord -> String)
-> ([SearchRecord] -> ShowS)
-> Show SearchRecord
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SearchRecord] -> ShowS
$cshowList :: [SearchRecord] -> ShowS
show :: SearchRecord -> String
$cshow :: SearchRecord -> String
showsPrec :: Int -> SearchRecord -> ShowS
$cshowsPrec :: Int -> SearchRecord -> ShowS
Prelude.Show, (forall x. SearchRecord -> Rep SearchRecord x)
-> (forall x. Rep SearchRecord x -> SearchRecord)
-> Generic SearchRecord
forall x. Rep SearchRecord x -> SearchRecord
forall x. SearchRecord -> Rep SearchRecord x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SearchRecord x -> SearchRecord
$cfrom :: forall x. SearchRecord -> Rep SearchRecord x
Prelude.Generic)

-- |
-- Create a value of 'SearchRecord' 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:
--
-- 'trainingJob', 'searchRecord_trainingJob' - The properties of a training job.
--
-- 'trial', 'searchRecord_trial' - The properties of a trial.
--
-- 'modelPackageGroup', 'searchRecord_modelPackageGroup' - Undocumented member.
--
-- 'trialComponent', 'searchRecord_trialComponent' - The properties of a trial component.
--
-- 'project', 'searchRecord_project' - The properties of a project.
--
-- 'pipelineExecution', 'searchRecord_pipelineExecution' - Undocumented member.
--
-- 'featureGroup', 'searchRecord_featureGroup' - Undocumented member.
--
-- 'experiment', 'searchRecord_experiment' - The properties of an experiment.
--
-- 'pipeline', 'searchRecord_pipeline' - Undocumented member.
--
-- 'modelPackage', 'searchRecord_modelPackage' - Undocumented member.
--
-- 'endpoint', 'searchRecord_endpoint' - Undocumented member.
newSearchRecord ::
  SearchRecord
newSearchRecord :: SearchRecord
newSearchRecord =
  SearchRecord' :: Maybe TrainingJob
-> Maybe Trial
-> Maybe ModelPackageGroup
-> Maybe TrialComponent
-> Maybe Project
-> Maybe PipelineExecution
-> Maybe FeatureGroup
-> Maybe Experiment
-> Maybe Pipeline
-> Maybe ModelPackage
-> Maybe Endpoint
-> SearchRecord
SearchRecord'
    { $sel:trainingJob:SearchRecord' :: Maybe TrainingJob
trainingJob = Maybe TrainingJob
forall a. Maybe a
Prelude.Nothing,
      $sel:trial:SearchRecord' :: Maybe Trial
trial = Maybe Trial
forall a. Maybe a
Prelude.Nothing,
      $sel:modelPackageGroup:SearchRecord' :: Maybe ModelPackageGroup
modelPackageGroup = Maybe ModelPackageGroup
forall a. Maybe a
Prelude.Nothing,
      $sel:trialComponent:SearchRecord' :: Maybe TrialComponent
trialComponent = Maybe TrialComponent
forall a. Maybe a
Prelude.Nothing,
      $sel:project:SearchRecord' :: Maybe Project
project = Maybe Project
forall a. Maybe a
Prelude.Nothing,
      $sel:pipelineExecution:SearchRecord' :: Maybe PipelineExecution
pipelineExecution = Maybe PipelineExecution
forall a. Maybe a
Prelude.Nothing,
      $sel:featureGroup:SearchRecord' :: Maybe FeatureGroup
featureGroup = Maybe FeatureGroup
forall a. Maybe a
Prelude.Nothing,
      $sel:experiment:SearchRecord' :: Maybe Experiment
experiment = Maybe Experiment
forall a. Maybe a
Prelude.Nothing,
      $sel:pipeline:SearchRecord' :: Maybe Pipeline
pipeline = Maybe Pipeline
forall a. Maybe a
Prelude.Nothing,
      $sel:modelPackage:SearchRecord' :: Maybe ModelPackage
modelPackage = Maybe ModelPackage
forall a. Maybe a
Prelude.Nothing,
      $sel:endpoint:SearchRecord' :: Maybe Endpoint
endpoint = Maybe Endpoint
forall a. Maybe a
Prelude.Nothing
    }

-- | The properties of a training job.
searchRecord_trainingJob :: Lens.Lens' SearchRecord (Prelude.Maybe TrainingJob)
searchRecord_trainingJob :: (Maybe TrainingJob -> f (Maybe TrainingJob))
-> SearchRecord -> f SearchRecord
searchRecord_trainingJob = (SearchRecord -> Maybe TrainingJob)
-> (SearchRecord -> Maybe TrainingJob -> SearchRecord)
-> Lens
     SearchRecord SearchRecord (Maybe TrainingJob) (Maybe TrainingJob)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchRecord' {Maybe TrainingJob
trainingJob :: Maybe TrainingJob
$sel:trainingJob:SearchRecord' :: SearchRecord -> Maybe TrainingJob
trainingJob} -> Maybe TrainingJob
trainingJob) (\s :: SearchRecord
s@SearchRecord' {} Maybe TrainingJob
a -> SearchRecord
s {$sel:trainingJob:SearchRecord' :: Maybe TrainingJob
trainingJob = Maybe TrainingJob
a} :: SearchRecord)

-- | The properties of a trial.
searchRecord_trial :: Lens.Lens' SearchRecord (Prelude.Maybe Trial)
searchRecord_trial :: (Maybe Trial -> f (Maybe Trial)) -> SearchRecord -> f SearchRecord
searchRecord_trial = (SearchRecord -> Maybe Trial)
-> (SearchRecord -> Maybe Trial -> SearchRecord)
-> Lens SearchRecord SearchRecord (Maybe Trial) (Maybe Trial)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchRecord' {Maybe Trial
trial :: Maybe Trial
$sel:trial:SearchRecord' :: SearchRecord -> Maybe Trial
trial} -> Maybe Trial
trial) (\s :: SearchRecord
s@SearchRecord' {} Maybe Trial
a -> SearchRecord
s {$sel:trial:SearchRecord' :: Maybe Trial
trial = Maybe Trial
a} :: SearchRecord)

-- | Undocumented member.
searchRecord_modelPackageGroup :: Lens.Lens' SearchRecord (Prelude.Maybe ModelPackageGroup)
searchRecord_modelPackageGroup :: (Maybe ModelPackageGroup -> f (Maybe ModelPackageGroup))
-> SearchRecord -> f SearchRecord
searchRecord_modelPackageGroup = (SearchRecord -> Maybe ModelPackageGroup)
-> (SearchRecord -> Maybe ModelPackageGroup -> SearchRecord)
-> Lens
     SearchRecord
     SearchRecord
     (Maybe ModelPackageGroup)
     (Maybe ModelPackageGroup)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchRecord' {Maybe ModelPackageGroup
modelPackageGroup :: Maybe ModelPackageGroup
$sel:modelPackageGroup:SearchRecord' :: SearchRecord -> Maybe ModelPackageGroup
modelPackageGroup} -> Maybe ModelPackageGroup
modelPackageGroup) (\s :: SearchRecord
s@SearchRecord' {} Maybe ModelPackageGroup
a -> SearchRecord
s {$sel:modelPackageGroup:SearchRecord' :: Maybe ModelPackageGroup
modelPackageGroup = Maybe ModelPackageGroup
a} :: SearchRecord)

-- | The properties of a trial component.
searchRecord_trialComponent :: Lens.Lens' SearchRecord (Prelude.Maybe TrialComponent)
searchRecord_trialComponent :: (Maybe TrialComponent -> f (Maybe TrialComponent))
-> SearchRecord -> f SearchRecord
searchRecord_trialComponent = (SearchRecord -> Maybe TrialComponent)
-> (SearchRecord -> Maybe TrialComponent -> SearchRecord)
-> Lens
     SearchRecord
     SearchRecord
     (Maybe TrialComponent)
     (Maybe TrialComponent)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchRecord' {Maybe TrialComponent
trialComponent :: Maybe TrialComponent
$sel:trialComponent:SearchRecord' :: SearchRecord -> Maybe TrialComponent
trialComponent} -> Maybe TrialComponent
trialComponent) (\s :: SearchRecord
s@SearchRecord' {} Maybe TrialComponent
a -> SearchRecord
s {$sel:trialComponent:SearchRecord' :: Maybe TrialComponent
trialComponent = Maybe TrialComponent
a} :: SearchRecord)

-- | The properties of a project.
searchRecord_project :: Lens.Lens' SearchRecord (Prelude.Maybe Project)
searchRecord_project :: (Maybe Project -> f (Maybe Project))
-> SearchRecord -> f SearchRecord
searchRecord_project = (SearchRecord -> Maybe Project)
-> (SearchRecord -> Maybe Project -> SearchRecord)
-> Lens SearchRecord SearchRecord (Maybe Project) (Maybe Project)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchRecord' {Maybe Project
project :: Maybe Project
$sel:project:SearchRecord' :: SearchRecord -> Maybe Project
project} -> Maybe Project
project) (\s :: SearchRecord
s@SearchRecord' {} Maybe Project
a -> SearchRecord
s {$sel:project:SearchRecord' :: Maybe Project
project = Maybe Project
a} :: SearchRecord)

-- | Undocumented member.
searchRecord_pipelineExecution :: Lens.Lens' SearchRecord (Prelude.Maybe PipelineExecution)
searchRecord_pipelineExecution :: (Maybe PipelineExecution -> f (Maybe PipelineExecution))
-> SearchRecord -> f SearchRecord
searchRecord_pipelineExecution = (SearchRecord -> Maybe PipelineExecution)
-> (SearchRecord -> Maybe PipelineExecution -> SearchRecord)
-> Lens
     SearchRecord
     SearchRecord
     (Maybe PipelineExecution)
     (Maybe PipelineExecution)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchRecord' {Maybe PipelineExecution
pipelineExecution :: Maybe PipelineExecution
$sel:pipelineExecution:SearchRecord' :: SearchRecord -> Maybe PipelineExecution
pipelineExecution} -> Maybe PipelineExecution
pipelineExecution) (\s :: SearchRecord
s@SearchRecord' {} Maybe PipelineExecution
a -> SearchRecord
s {$sel:pipelineExecution:SearchRecord' :: Maybe PipelineExecution
pipelineExecution = Maybe PipelineExecution
a} :: SearchRecord)

-- | Undocumented member.
searchRecord_featureGroup :: Lens.Lens' SearchRecord (Prelude.Maybe FeatureGroup)
searchRecord_featureGroup :: (Maybe FeatureGroup -> f (Maybe FeatureGroup))
-> SearchRecord -> f SearchRecord
searchRecord_featureGroup = (SearchRecord -> Maybe FeatureGroup)
-> (SearchRecord -> Maybe FeatureGroup -> SearchRecord)
-> Lens
     SearchRecord SearchRecord (Maybe FeatureGroup) (Maybe FeatureGroup)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchRecord' {Maybe FeatureGroup
featureGroup :: Maybe FeatureGroup
$sel:featureGroup:SearchRecord' :: SearchRecord -> Maybe FeatureGroup
featureGroup} -> Maybe FeatureGroup
featureGroup) (\s :: SearchRecord
s@SearchRecord' {} Maybe FeatureGroup
a -> SearchRecord
s {$sel:featureGroup:SearchRecord' :: Maybe FeatureGroup
featureGroup = Maybe FeatureGroup
a} :: SearchRecord)

-- | The properties of an experiment.
searchRecord_experiment :: Lens.Lens' SearchRecord (Prelude.Maybe Experiment)
searchRecord_experiment :: (Maybe Experiment -> f (Maybe Experiment))
-> SearchRecord -> f SearchRecord
searchRecord_experiment = (SearchRecord -> Maybe Experiment)
-> (SearchRecord -> Maybe Experiment -> SearchRecord)
-> Lens
     SearchRecord SearchRecord (Maybe Experiment) (Maybe Experiment)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchRecord' {Maybe Experiment
experiment :: Maybe Experiment
$sel:experiment:SearchRecord' :: SearchRecord -> Maybe Experiment
experiment} -> Maybe Experiment
experiment) (\s :: SearchRecord
s@SearchRecord' {} Maybe Experiment
a -> SearchRecord
s {$sel:experiment:SearchRecord' :: Maybe Experiment
experiment = Maybe Experiment
a} :: SearchRecord)

-- | Undocumented member.
searchRecord_pipeline :: Lens.Lens' SearchRecord (Prelude.Maybe Pipeline)
searchRecord_pipeline :: (Maybe Pipeline -> f (Maybe Pipeline))
-> SearchRecord -> f SearchRecord
searchRecord_pipeline = (SearchRecord -> Maybe Pipeline)
-> (SearchRecord -> Maybe Pipeline -> SearchRecord)
-> Lens SearchRecord SearchRecord (Maybe Pipeline) (Maybe Pipeline)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchRecord' {Maybe Pipeline
pipeline :: Maybe Pipeline
$sel:pipeline:SearchRecord' :: SearchRecord -> Maybe Pipeline
pipeline} -> Maybe Pipeline
pipeline) (\s :: SearchRecord
s@SearchRecord' {} Maybe Pipeline
a -> SearchRecord
s {$sel:pipeline:SearchRecord' :: Maybe Pipeline
pipeline = Maybe Pipeline
a} :: SearchRecord)

-- | Undocumented member.
searchRecord_modelPackage :: Lens.Lens' SearchRecord (Prelude.Maybe ModelPackage)
searchRecord_modelPackage :: (Maybe ModelPackage -> f (Maybe ModelPackage))
-> SearchRecord -> f SearchRecord
searchRecord_modelPackage = (SearchRecord -> Maybe ModelPackage)
-> (SearchRecord -> Maybe ModelPackage -> SearchRecord)
-> Lens
     SearchRecord SearchRecord (Maybe ModelPackage) (Maybe ModelPackage)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchRecord' {Maybe ModelPackage
modelPackage :: Maybe ModelPackage
$sel:modelPackage:SearchRecord' :: SearchRecord -> Maybe ModelPackage
modelPackage} -> Maybe ModelPackage
modelPackage) (\s :: SearchRecord
s@SearchRecord' {} Maybe ModelPackage
a -> SearchRecord
s {$sel:modelPackage:SearchRecord' :: Maybe ModelPackage
modelPackage = Maybe ModelPackage
a} :: SearchRecord)

-- | Undocumented member.
searchRecord_endpoint :: Lens.Lens' SearchRecord (Prelude.Maybe Endpoint)
searchRecord_endpoint :: (Maybe Endpoint -> f (Maybe Endpoint))
-> SearchRecord -> f SearchRecord
searchRecord_endpoint = (SearchRecord -> Maybe Endpoint)
-> (SearchRecord -> Maybe Endpoint -> SearchRecord)
-> Lens SearchRecord SearchRecord (Maybe Endpoint) (Maybe Endpoint)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SearchRecord' {Maybe Endpoint
endpoint :: Maybe Endpoint
$sel:endpoint:SearchRecord' :: SearchRecord -> Maybe Endpoint
endpoint} -> Maybe Endpoint
endpoint) (\s :: SearchRecord
s@SearchRecord' {} Maybe Endpoint
a -> SearchRecord
s {$sel:endpoint:SearchRecord' :: Maybe Endpoint
endpoint = Maybe Endpoint
a} :: SearchRecord)

instance Core.FromJSON SearchRecord where
  parseJSON :: Value -> Parser SearchRecord
parseJSON =
    String
-> (Object -> Parser SearchRecord) -> Value -> Parser SearchRecord
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"SearchRecord"
      ( \Object
x ->
          Maybe TrainingJob
-> Maybe Trial
-> Maybe ModelPackageGroup
-> Maybe TrialComponent
-> Maybe Project
-> Maybe PipelineExecution
-> Maybe FeatureGroup
-> Maybe Experiment
-> Maybe Pipeline
-> Maybe ModelPackage
-> Maybe Endpoint
-> SearchRecord
SearchRecord'
            (Maybe TrainingJob
 -> Maybe Trial
 -> Maybe ModelPackageGroup
 -> Maybe TrialComponent
 -> Maybe Project
 -> Maybe PipelineExecution
 -> Maybe FeatureGroup
 -> Maybe Experiment
 -> Maybe Pipeline
 -> Maybe ModelPackage
 -> Maybe Endpoint
 -> SearchRecord)
-> Parser (Maybe TrainingJob)
-> Parser
     (Maybe Trial
      -> Maybe ModelPackageGroup
      -> Maybe TrialComponent
      -> Maybe Project
      -> Maybe PipelineExecution
      -> Maybe FeatureGroup
      -> Maybe Experiment
      -> Maybe Pipeline
      -> Maybe ModelPackage
      -> Maybe Endpoint
      -> SearchRecord)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe TrainingJob)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrainingJob")
            Parser
  (Maybe Trial
   -> Maybe ModelPackageGroup
   -> Maybe TrialComponent
   -> Maybe Project
   -> Maybe PipelineExecution
   -> Maybe FeatureGroup
   -> Maybe Experiment
   -> Maybe Pipeline
   -> Maybe ModelPackage
   -> Maybe Endpoint
   -> SearchRecord)
-> Parser (Maybe Trial)
-> Parser
     (Maybe ModelPackageGroup
      -> Maybe TrialComponent
      -> Maybe Project
      -> Maybe PipelineExecution
      -> Maybe FeatureGroup
      -> Maybe Experiment
      -> Maybe Pipeline
      -> Maybe ModelPackage
      -> Maybe Endpoint
      -> SearchRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Trial)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Trial")
            Parser
  (Maybe ModelPackageGroup
   -> Maybe TrialComponent
   -> Maybe Project
   -> Maybe PipelineExecution
   -> Maybe FeatureGroup
   -> Maybe Experiment
   -> Maybe Pipeline
   -> Maybe ModelPackage
   -> Maybe Endpoint
   -> SearchRecord)
-> Parser (Maybe ModelPackageGroup)
-> Parser
     (Maybe TrialComponent
      -> Maybe Project
      -> Maybe PipelineExecution
      -> Maybe FeatureGroup
      -> Maybe Experiment
      -> Maybe Pipeline
      -> Maybe ModelPackage
      -> Maybe Endpoint
      -> SearchRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ModelPackageGroup)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ModelPackageGroup")
            Parser
  (Maybe TrialComponent
   -> Maybe Project
   -> Maybe PipelineExecution
   -> Maybe FeatureGroup
   -> Maybe Experiment
   -> Maybe Pipeline
   -> Maybe ModelPackage
   -> Maybe Endpoint
   -> SearchRecord)
-> Parser (Maybe TrialComponent)
-> Parser
     (Maybe Project
      -> Maybe PipelineExecution
      -> Maybe FeatureGroup
      -> Maybe Experiment
      -> Maybe Pipeline
      -> Maybe ModelPackage
      -> Maybe Endpoint
      -> SearchRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TrialComponent)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TrialComponent")
            Parser
  (Maybe Project
   -> Maybe PipelineExecution
   -> Maybe FeatureGroup
   -> Maybe Experiment
   -> Maybe Pipeline
   -> Maybe ModelPackage
   -> Maybe Endpoint
   -> SearchRecord)
-> Parser (Maybe Project)
-> Parser
     (Maybe PipelineExecution
      -> Maybe FeatureGroup
      -> Maybe Experiment
      -> Maybe Pipeline
      -> Maybe ModelPackage
      -> Maybe Endpoint
      -> SearchRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Project)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Project")
            Parser
  (Maybe PipelineExecution
   -> Maybe FeatureGroup
   -> Maybe Experiment
   -> Maybe Pipeline
   -> Maybe ModelPackage
   -> Maybe Endpoint
   -> SearchRecord)
-> Parser (Maybe PipelineExecution)
-> Parser
     (Maybe FeatureGroup
      -> Maybe Experiment
      -> Maybe Pipeline
      -> Maybe ModelPackage
      -> Maybe Endpoint
      -> SearchRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe PipelineExecution)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"PipelineExecution")
            Parser
  (Maybe FeatureGroup
   -> Maybe Experiment
   -> Maybe Pipeline
   -> Maybe ModelPackage
   -> Maybe Endpoint
   -> SearchRecord)
-> Parser (Maybe FeatureGroup)
-> Parser
     (Maybe Experiment
      -> Maybe Pipeline
      -> Maybe ModelPackage
      -> Maybe Endpoint
      -> SearchRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe FeatureGroup)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FeatureGroup")
            Parser
  (Maybe Experiment
   -> Maybe Pipeline
   -> Maybe ModelPackage
   -> Maybe Endpoint
   -> SearchRecord)
-> Parser (Maybe Experiment)
-> Parser
     (Maybe Pipeline
      -> Maybe ModelPackage -> Maybe Endpoint -> SearchRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Experiment)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Experiment")
            Parser
  (Maybe Pipeline
   -> Maybe ModelPackage -> Maybe Endpoint -> SearchRecord)
-> Parser (Maybe Pipeline)
-> Parser (Maybe ModelPackage -> Maybe Endpoint -> SearchRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Pipeline)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Pipeline")
            Parser (Maybe ModelPackage -> Maybe Endpoint -> SearchRecord)
-> Parser (Maybe ModelPackage)
-> Parser (Maybe Endpoint -> SearchRecord)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ModelPackage)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ModelPackage")
            Parser (Maybe Endpoint -> SearchRecord)
-> Parser (Maybe Endpoint) -> Parser SearchRecord
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Endpoint)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Endpoint")
      )

instance Prelude.Hashable SearchRecord

instance Prelude.NFData SearchRecord