{-# 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.Glue.Types.TaskRunProperties
-- 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.Glue.Types.TaskRunProperties where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Glue.Types.ExportLabelsTaskRunProperties
import Amazonka.Glue.Types.FindMatchesTaskRunProperties
import Amazonka.Glue.Types.ImportLabelsTaskRunProperties
import Amazonka.Glue.Types.LabelingSetGenerationTaskRunProperties
import Amazonka.Glue.Types.TaskType
import qualified Amazonka.Prelude as Prelude

-- | The configuration properties for the task run.
--
-- /See:/ 'newTaskRunProperties' smart constructor.
data TaskRunProperties = TaskRunProperties'
  { -- | The configuration properties for an exporting labels task run.
    TaskRunProperties -> Maybe ExportLabelsTaskRunProperties
exportLabelsTaskRunProperties :: Prelude.Maybe ExportLabelsTaskRunProperties,
    -- | The configuration properties for a find matches task run.
    TaskRunProperties -> Maybe FindMatchesTaskRunProperties
findMatchesTaskRunProperties :: Prelude.Maybe FindMatchesTaskRunProperties,
    -- | The configuration properties for an importing labels task run.
    TaskRunProperties -> Maybe ImportLabelsTaskRunProperties
importLabelsTaskRunProperties :: Prelude.Maybe ImportLabelsTaskRunProperties,
    -- | The configuration properties for a labeling set generation task run.
    TaskRunProperties -> Maybe LabelingSetGenerationTaskRunProperties
labelingSetGenerationTaskRunProperties :: Prelude.Maybe LabelingSetGenerationTaskRunProperties,
    -- | The type of task run.
    TaskRunProperties -> Maybe TaskType
taskType :: Prelude.Maybe TaskType
  }
  deriving (TaskRunProperties -> TaskRunProperties -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TaskRunProperties -> TaskRunProperties -> Bool
$c/= :: TaskRunProperties -> TaskRunProperties -> Bool
== :: TaskRunProperties -> TaskRunProperties -> Bool
$c== :: TaskRunProperties -> TaskRunProperties -> Bool
Prelude.Eq, ReadPrec [TaskRunProperties]
ReadPrec TaskRunProperties
Int -> ReadS TaskRunProperties
ReadS [TaskRunProperties]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TaskRunProperties]
$creadListPrec :: ReadPrec [TaskRunProperties]
readPrec :: ReadPrec TaskRunProperties
$creadPrec :: ReadPrec TaskRunProperties
readList :: ReadS [TaskRunProperties]
$creadList :: ReadS [TaskRunProperties]
readsPrec :: Int -> ReadS TaskRunProperties
$creadsPrec :: Int -> ReadS TaskRunProperties
Prelude.Read, Int -> TaskRunProperties -> ShowS
[TaskRunProperties] -> ShowS
TaskRunProperties -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TaskRunProperties] -> ShowS
$cshowList :: [TaskRunProperties] -> ShowS
show :: TaskRunProperties -> String
$cshow :: TaskRunProperties -> String
showsPrec :: Int -> TaskRunProperties -> ShowS
$cshowsPrec :: Int -> TaskRunProperties -> ShowS
Prelude.Show, forall x. Rep TaskRunProperties x -> TaskRunProperties
forall x. TaskRunProperties -> Rep TaskRunProperties x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TaskRunProperties x -> TaskRunProperties
$cfrom :: forall x. TaskRunProperties -> Rep TaskRunProperties x
Prelude.Generic)

-- |
-- Create a value of 'TaskRunProperties' 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:
--
-- 'exportLabelsTaskRunProperties', 'taskRunProperties_exportLabelsTaskRunProperties' - The configuration properties for an exporting labels task run.
--
-- 'findMatchesTaskRunProperties', 'taskRunProperties_findMatchesTaskRunProperties' - The configuration properties for a find matches task run.
--
-- 'importLabelsTaskRunProperties', 'taskRunProperties_importLabelsTaskRunProperties' - The configuration properties for an importing labels task run.
--
-- 'labelingSetGenerationTaskRunProperties', 'taskRunProperties_labelingSetGenerationTaskRunProperties' - The configuration properties for a labeling set generation task run.
--
-- 'taskType', 'taskRunProperties_taskType' - The type of task run.
newTaskRunProperties ::
  TaskRunProperties
newTaskRunProperties :: TaskRunProperties
newTaskRunProperties =
  TaskRunProperties'
    { $sel:exportLabelsTaskRunProperties:TaskRunProperties' :: Maybe ExportLabelsTaskRunProperties
exportLabelsTaskRunProperties =
        forall a. Maybe a
Prelude.Nothing,
      $sel:findMatchesTaskRunProperties:TaskRunProperties' :: Maybe FindMatchesTaskRunProperties
findMatchesTaskRunProperties = forall a. Maybe a
Prelude.Nothing,
      $sel:importLabelsTaskRunProperties:TaskRunProperties' :: Maybe ImportLabelsTaskRunProperties
importLabelsTaskRunProperties = forall a. Maybe a
Prelude.Nothing,
      $sel:labelingSetGenerationTaskRunProperties:TaskRunProperties' :: Maybe LabelingSetGenerationTaskRunProperties
labelingSetGenerationTaskRunProperties =
        forall a. Maybe a
Prelude.Nothing,
      $sel:taskType:TaskRunProperties' :: Maybe TaskType
taskType = forall a. Maybe a
Prelude.Nothing
    }

-- | The configuration properties for an exporting labels task run.
taskRunProperties_exportLabelsTaskRunProperties :: Lens.Lens' TaskRunProperties (Prelude.Maybe ExportLabelsTaskRunProperties)
taskRunProperties_exportLabelsTaskRunProperties :: Lens' TaskRunProperties (Maybe ExportLabelsTaskRunProperties)
taskRunProperties_exportLabelsTaskRunProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TaskRunProperties' {Maybe ExportLabelsTaskRunProperties
exportLabelsTaskRunProperties :: Maybe ExportLabelsTaskRunProperties
$sel:exportLabelsTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe ExportLabelsTaskRunProperties
exportLabelsTaskRunProperties} -> Maybe ExportLabelsTaskRunProperties
exportLabelsTaskRunProperties) (\s :: TaskRunProperties
s@TaskRunProperties' {} Maybe ExportLabelsTaskRunProperties
a -> TaskRunProperties
s {$sel:exportLabelsTaskRunProperties:TaskRunProperties' :: Maybe ExportLabelsTaskRunProperties
exportLabelsTaskRunProperties = Maybe ExportLabelsTaskRunProperties
a} :: TaskRunProperties)

-- | The configuration properties for a find matches task run.
taskRunProperties_findMatchesTaskRunProperties :: Lens.Lens' TaskRunProperties (Prelude.Maybe FindMatchesTaskRunProperties)
taskRunProperties_findMatchesTaskRunProperties :: Lens' TaskRunProperties (Maybe FindMatchesTaskRunProperties)
taskRunProperties_findMatchesTaskRunProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TaskRunProperties' {Maybe FindMatchesTaskRunProperties
findMatchesTaskRunProperties :: Maybe FindMatchesTaskRunProperties
$sel:findMatchesTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe FindMatchesTaskRunProperties
findMatchesTaskRunProperties} -> Maybe FindMatchesTaskRunProperties
findMatchesTaskRunProperties) (\s :: TaskRunProperties
s@TaskRunProperties' {} Maybe FindMatchesTaskRunProperties
a -> TaskRunProperties
s {$sel:findMatchesTaskRunProperties:TaskRunProperties' :: Maybe FindMatchesTaskRunProperties
findMatchesTaskRunProperties = Maybe FindMatchesTaskRunProperties
a} :: TaskRunProperties)

-- | The configuration properties for an importing labels task run.
taskRunProperties_importLabelsTaskRunProperties :: Lens.Lens' TaskRunProperties (Prelude.Maybe ImportLabelsTaskRunProperties)
taskRunProperties_importLabelsTaskRunProperties :: Lens' TaskRunProperties (Maybe ImportLabelsTaskRunProperties)
taskRunProperties_importLabelsTaskRunProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TaskRunProperties' {Maybe ImportLabelsTaskRunProperties
importLabelsTaskRunProperties :: Maybe ImportLabelsTaskRunProperties
$sel:importLabelsTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe ImportLabelsTaskRunProperties
importLabelsTaskRunProperties} -> Maybe ImportLabelsTaskRunProperties
importLabelsTaskRunProperties) (\s :: TaskRunProperties
s@TaskRunProperties' {} Maybe ImportLabelsTaskRunProperties
a -> TaskRunProperties
s {$sel:importLabelsTaskRunProperties:TaskRunProperties' :: Maybe ImportLabelsTaskRunProperties
importLabelsTaskRunProperties = Maybe ImportLabelsTaskRunProperties
a} :: TaskRunProperties)

-- | The configuration properties for a labeling set generation task run.
taskRunProperties_labelingSetGenerationTaskRunProperties :: Lens.Lens' TaskRunProperties (Prelude.Maybe LabelingSetGenerationTaskRunProperties)
taskRunProperties_labelingSetGenerationTaskRunProperties :: Lens'
  TaskRunProperties (Maybe LabelingSetGenerationTaskRunProperties)
taskRunProperties_labelingSetGenerationTaskRunProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TaskRunProperties' {Maybe LabelingSetGenerationTaskRunProperties
labelingSetGenerationTaskRunProperties :: Maybe LabelingSetGenerationTaskRunProperties
$sel:labelingSetGenerationTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe LabelingSetGenerationTaskRunProperties
labelingSetGenerationTaskRunProperties} -> Maybe LabelingSetGenerationTaskRunProperties
labelingSetGenerationTaskRunProperties) (\s :: TaskRunProperties
s@TaskRunProperties' {} Maybe LabelingSetGenerationTaskRunProperties
a -> TaskRunProperties
s {$sel:labelingSetGenerationTaskRunProperties:TaskRunProperties' :: Maybe LabelingSetGenerationTaskRunProperties
labelingSetGenerationTaskRunProperties = Maybe LabelingSetGenerationTaskRunProperties
a} :: TaskRunProperties)

-- | The type of task run.
taskRunProperties_taskType :: Lens.Lens' TaskRunProperties (Prelude.Maybe TaskType)
taskRunProperties_taskType :: Lens' TaskRunProperties (Maybe TaskType)
taskRunProperties_taskType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TaskRunProperties' {Maybe TaskType
taskType :: Maybe TaskType
$sel:taskType:TaskRunProperties' :: TaskRunProperties -> Maybe TaskType
taskType} -> Maybe TaskType
taskType) (\s :: TaskRunProperties
s@TaskRunProperties' {} Maybe TaskType
a -> TaskRunProperties
s {$sel:taskType:TaskRunProperties' :: Maybe TaskType
taskType = Maybe TaskType
a} :: TaskRunProperties)

instance Data.FromJSON TaskRunProperties where
  parseJSON :: Value -> Parser TaskRunProperties
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"TaskRunProperties"
      ( \Object
x ->
          Maybe ExportLabelsTaskRunProperties
-> Maybe FindMatchesTaskRunProperties
-> Maybe ImportLabelsTaskRunProperties
-> Maybe LabelingSetGenerationTaskRunProperties
-> Maybe TaskType
-> TaskRunProperties
TaskRunProperties'
            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
"ExportLabelsTaskRunProperties")
            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
"FindMatchesTaskRunProperties")
            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
"ImportLabelsTaskRunProperties")
            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
"LabelingSetGenerationTaskRunProperties")
            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
"TaskType")
      )

instance Prelude.Hashable TaskRunProperties where
  hashWithSalt :: Int -> TaskRunProperties -> Int
hashWithSalt Int
_salt TaskRunProperties' {Maybe ExportLabelsTaskRunProperties
Maybe FindMatchesTaskRunProperties
Maybe ImportLabelsTaskRunProperties
Maybe LabelingSetGenerationTaskRunProperties
Maybe TaskType
taskType :: Maybe TaskType
labelingSetGenerationTaskRunProperties :: Maybe LabelingSetGenerationTaskRunProperties
importLabelsTaskRunProperties :: Maybe ImportLabelsTaskRunProperties
findMatchesTaskRunProperties :: Maybe FindMatchesTaskRunProperties
exportLabelsTaskRunProperties :: Maybe ExportLabelsTaskRunProperties
$sel:taskType:TaskRunProperties' :: TaskRunProperties -> Maybe TaskType
$sel:labelingSetGenerationTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe LabelingSetGenerationTaskRunProperties
$sel:importLabelsTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe ImportLabelsTaskRunProperties
$sel:findMatchesTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe FindMatchesTaskRunProperties
$sel:exportLabelsTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe ExportLabelsTaskRunProperties
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ExportLabelsTaskRunProperties
exportLabelsTaskRunProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FindMatchesTaskRunProperties
findMatchesTaskRunProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ImportLabelsTaskRunProperties
importLabelsTaskRunProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LabelingSetGenerationTaskRunProperties
labelingSetGenerationTaskRunProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TaskType
taskType

instance Prelude.NFData TaskRunProperties where
  rnf :: TaskRunProperties -> ()
rnf TaskRunProperties' {Maybe ExportLabelsTaskRunProperties
Maybe FindMatchesTaskRunProperties
Maybe ImportLabelsTaskRunProperties
Maybe LabelingSetGenerationTaskRunProperties
Maybe TaskType
taskType :: Maybe TaskType
labelingSetGenerationTaskRunProperties :: Maybe LabelingSetGenerationTaskRunProperties
importLabelsTaskRunProperties :: Maybe ImportLabelsTaskRunProperties
findMatchesTaskRunProperties :: Maybe FindMatchesTaskRunProperties
exportLabelsTaskRunProperties :: Maybe ExportLabelsTaskRunProperties
$sel:taskType:TaskRunProperties' :: TaskRunProperties -> Maybe TaskType
$sel:labelingSetGenerationTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe LabelingSetGenerationTaskRunProperties
$sel:importLabelsTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe ImportLabelsTaskRunProperties
$sel:findMatchesTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe FindMatchesTaskRunProperties
$sel:exportLabelsTaskRunProperties:TaskRunProperties' :: TaskRunProperties -> Maybe ExportLabelsTaskRunProperties
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ExportLabelsTaskRunProperties
exportLabelsTaskRunProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FindMatchesTaskRunProperties
findMatchesTaskRunProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ImportLabelsTaskRunProperties
importLabelsTaskRunProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LabelingSetGenerationTaskRunProperties
labelingSetGenerationTaskRunProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TaskType
taskType