{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# 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.CreateTrigger
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a new trigger.
module Amazonka.Glue.CreateTrigger
  ( -- * Creating a Request
    CreateTrigger (..),
    newCreateTrigger,

    -- * Request Lenses
    createTrigger_description,
    createTrigger_eventBatchingCondition,
    createTrigger_predicate,
    createTrigger_schedule,
    createTrigger_startOnCreation,
    createTrigger_tags,
    createTrigger_workflowName,
    createTrigger_name,
    createTrigger_type,
    createTrigger_actions,

    -- * Destructuring the Response
    CreateTriggerResponse (..),
    newCreateTriggerResponse,

    -- * Response Lenses
    createTriggerResponse_name,
    createTriggerResponse_httpStatus,
  )
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
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newCreateTrigger' smart constructor.
data CreateTrigger = CreateTrigger'
  { -- | A description of the new trigger.
    CreateTrigger -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Batch condition that must be met (specified number of events received or
    -- batch time window expired) before EventBridge event trigger fires.
    CreateTrigger -> Maybe EventBatchingCondition
eventBatchingCondition :: Prelude.Maybe EventBatchingCondition,
    -- | A predicate to specify when the new trigger should fire.
    --
    -- This field is required when the trigger type is @CONDITIONAL@.
    CreateTrigger -> Maybe Predicate
predicate :: Prelude.Maybe Predicate,
    -- | A @cron@ expression used to specify the schedule (see
    -- <https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html Time-Based Schedules for Jobs and Crawlers>.
    -- For example, to run something every day at 12:15 UTC, you would specify:
    -- @cron(15 12 * * ? *)@.
    --
    -- This field is required when the trigger type is SCHEDULED.
    CreateTrigger -> Maybe Text
schedule :: Prelude.Maybe Prelude.Text,
    -- | Set to @true@ to start @SCHEDULED@ and @CONDITIONAL@ triggers when
    -- created. True is not supported for @ON_DEMAND@ triggers.
    CreateTrigger -> Maybe Bool
startOnCreation :: Prelude.Maybe Prelude.Bool,
    -- | The tags to use with this trigger. You may use tags to limit access to
    -- the trigger. For more information about tags in Glue, see
    -- <https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html Amazon Web Services Tags in Glue>
    -- in the developer guide.
    CreateTrigger -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The name of the workflow associated with the trigger.
    CreateTrigger -> Maybe Text
workflowName :: Prelude.Maybe Prelude.Text,
    -- | The name of the trigger.
    CreateTrigger -> Text
name :: Prelude.Text,
    -- | The type of the new trigger.
    CreateTrigger -> TriggerType
type' :: TriggerType,
    -- | The actions initiated by this trigger when it fires.
    CreateTrigger -> [Action]
actions :: [Action]
  }
  deriving (CreateTrigger -> CreateTrigger -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateTrigger -> CreateTrigger -> Bool
$c/= :: CreateTrigger -> CreateTrigger -> Bool
== :: CreateTrigger -> CreateTrigger -> Bool
$c== :: CreateTrigger -> CreateTrigger -> Bool
Prelude.Eq, ReadPrec [CreateTrigger]
ReadPrec CreateTrigger
Int -> ReadS CreateTrigger
ReadS [CreateTrigger]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateTrigger]
$creadListPrec :: ReadPrec [CreateTrigger]
readPrec :: ReadPrec CreateTrigger
$creadPrec :: ReadPrec CreateTrigger
readList :: ReadS [CreateTrigger]
$creadList :: ReadS [CreateTrigger]
readsPrec :: Int -> ReadS CreateTrigger
$creadsPrec :: Int -> ReadS CreateTrigger
Prelude.Read, Int -> CreateTrigger -> ShowS
[CreateTrigger] -> ShowS
CreateTrigger -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateTrigger] -> ShowS
$cshowList :: [CreateTrigger] -> ShowS
show :: CreateTrigger -> String
$cshow :: CreateTrigger -> String
showsPrec :: Int -> CreateTrigger -> ShowS
$cshowsPrec :: Int -> CreateTrigger -> ShowS
Prelude.Show, forall x. Rep CreateTrigger x -> CreateTrigger
forall x. CreateTrigger -> Rep CreateTrigger x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateTrigger x -> CreateTrigger
$cfrom :: forall x. CreateTrigger -> Rep CreateTrigger x
Prelude.Generic)

-- |
-- Create a value of 'CreateTrigger' 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:
--
-- 'description', 'createTrigger_description' - A description of the new trigger.
--
-- 'eventBatchingCondition', 'createTrigger_eventBatchingCondition' - Batch condition that must be met (specified number of events received or
-- batch time window expired) before EventBridge event trigger fires.
--
-- 'predicate', 'createTrigger_predicate' - A predicate to specify when the new trigger should fire.
--
-- This field is required when the trigger type is @CONDITIONAL@.
--
-- 'schedule', 'createTrigger_schedule' - A @cron@ expression used to specify the schedule (see
-- <https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html Time-Based Schedules for Jobs and Crawlers>.
-- For example, to run something every day at 12:15 UTC, you would specify:
-- @cron(15 12 * * ? *)@.
--
-- This field is required when the trigger type is SCHEDULED.
--
-- 'startOnCreation', 'createTrigger_startOnCreation' - Set to @true@ to start @SCHEDULED@ and @CONDITIONAL@ triggers when
-- created. True is not supported for @ON_DEMAND@ triggers.
--
-- 'tags', 'createTrigger_tags' - The tags to use with this trigger. You may use tags to limit access to
-- the trigger. For more information about tags in Glue, see
-- <https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html Amazon Web Services Tags in Glue>
-- in the developer guide.
--
-- 'workflowName', 'createTrigger_workflowName' - The name of the workflow associated with the trigger.
--
-- 'name', 'createTrigger_name' - The name of the trigger.
--
-- 'type'', 'createTrigger_type' - The type of the new trigger.
--
-- 'actions', 'createTrigger_actions' - The actions initiated by this trigger when it fires.
newCreateTrigger ::
  -- | 'name'
  Prelude.Text ->
  -- | 'type''
  TriggerType ->
  CreateTrigger
newCreateTrigger :: Text -> TriggerType -> CreateTrigger
newCreateTrigger Text
pName_ TriggerType
pType_ =
  CreateTrigger'
    { $sel:description:CreateTrigger' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:eventBatchingCondition:CreateTrigger' :: Maybe EventBatchingCondition
eventBatchingCondition = forall a. Maybe a
Prelude.Nothing,
      $sel:predicate:CreateTrigger' :: Maybe Predicate
predicate = forall a. Maybe a
Prelude.Nothing,
      $sel:schedule:CreateTrigger' :: Maybe Text
schedule = forall a. Maybe a
Prelude.Nothing,
      $sel:startOnCreation:CreateTrigger' :: Maybe Bool
startOnCreation = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:CreateTrigger' :: Maybe (HashMap Text Text)
tags = forall a. Maybe a
Prelude.Nothing,
      $sel:workflowName:CreateTrigger' :: Maybe Text
workflowName = forall a. Maybe a
Prelude.Nothing,
      $sel:name:CreateTrigger' :: Text
name = Text
pName_,
      $sel:type':CreateTrigger' :: TriggerType
type' = TriggerType
pType_,
      $sel:actions:CreateTrigger' :: [Action]
actions = forall a. Monoid a => a
Prelude.mempty
    }

-- | A description of the new trigger.
createTrigger_description :: Lens.Lens' CreateTrigger (Prelude.Maybe Prelude.Text)
createTrigger_description :: Lens' CreateTrigger (Maybe Text)
createTrigger_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrigger' {Maybe Text
description :: Maybe Text
$sel:description:CreateTrigger' :: CreateTrigger -> Maybe Text
description} -> Maybe Text
description) (\s :: CreateTrigger
s@CreateTrigger' {} Maybe Text
a -> CreateTrigger
s {$sel:description:CreateTrigger' :: Maybe Text
description = Maybe Text
a} :: CreateTrigger)

-- | Batch condition that must be met (specified number of events received or
-- batch time window expired) before EventBridge event trigger fires.
createTrigger_eventBatchingCondition :: Lens.Lens' CreateTrigger (Prelude.Maybe EventBatchingCondition)
createTrigger_eventBatchingCondition :: Lens' CreateTrigger (Maybe EventBatchingCondition)
createTrigger_eventBatchingCondition = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrigger' {Maybe EventBatchingCondition
eventBatchingCondition :: Maybe EventBatchingCondition
$sel:eventBatchingCondition:CreateTrigger' :: CreateTrigger -> Maybe EventBatchingCondition
eventBatchingCondition} -> Maybe EventBatchingCondition
eventBatchingCondition) (\s :: CreateTrigger
s@CreateTrigger' {} Maybe EventBatchingCondition
a -> CreateTrigger
s {$sel:eventBatchingCondition:CreateTrigger' :: Maybe EventBatchingCondition
eventBatchingCondition = Maybe EventBatchingCondition
a} :: CreateTrigger)

-- | A predicate to specify when the new trigger should fire.
--
-- This field is required when the trigger type is @CONDITIONAL@.
createTrigger_predicate :: Lens.Lens' CreateTrigger (Prelude.Maybe Predicate)
createTrigger_predicate :: Lens' CreateTrigger (Maybe Predicate)
createTrigger_predicate = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrigger' {Maybe Predicate
predicate :: Maybe Predicate
$sel:predicate:CreateTrigger' :: CreateTrigger -> Maybe Predicate
predicate} -> Maybe Predicate
predicate) (\s :: CreateTrigger
s@CreateTrigger' {} Maybe Predicate
a -> CreateTrigger
s {$sel:predicate:CreateTrigger' :: Maybe Predicate
predicate = Maybe Predicate
a} :: CreateTrigger)

-- | A @cron@ expression used to specify the schedule (see
-- <https://docs.aws.amazon.com/glue/latest/dg/monitor-data-warehouse-schedule.html Time-Based Schedules for Jobs and Crawlers>.
-- For example, to run something every day at 12:15 UTC, you would specify:
-- @cron(15 12 * * ? *)@.
--
-- This field is required when the trigger type is SCHEDULED.
createTrigger_schedule :: Lens.Lens' CreateTrigger (Prelude.Maybe Prelude.Text)
createTrigger_schedule :: Lens' CreateTrigger (Maybe Text)
createTrigger_schedule = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrigger' {Maybe Text
schedule :: Maybe Text
$sel:schedule:CreateTrigger' :: CreateTrigger -> Maybe Text
schedule} -> Maybe Text
schedule) (\s :: CreateTrigger
s@CreateTrigger' {} Maybe Text
a -> CreateTrigger
s {$sel:schedule:CreateTrigger' :: Maybe Text
schedule = Maybe Text
a} :: CreateTrigger)

-- | Set to @true@ to start @SCHEDULED@ and @CONDITIONAL@ triggers when
-- created. True is not supported for @ON_DEMAND@ triggers.
createTrigger_startOnCreation :: Lens.Lens' CreateTrigger (Prelude.Maybe Prelude.Bool)
createTrigger_startOnCreation :: Lens' CreateTrigger (Maybe Bool)
createTrigger_startOnCreation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrigger' {Maybe Bool
startOnCreation :: Maybe Bool
$sel:startOnCreation:CreateTrigger' :: CreateTrigger -> Maybe Bool
startOnCreation} -> Maybe Bool
startOnCreation) (\s :: CreateTrigger
s@CreateTrigger' {} Maybe Bool
a -> CreateTrigger
s {$sel:startOnCreation:CreateTrigger' :: Maybe Bool
startOnCreation = Maybe Bool
a} :: CreateTrigger)

-- | The tags to use with this trigger. You may use tags to limit access to
-- the trigger. For more information about tags in Glue, see
-- <https://docs.aws.amazon.com/glue/latest/dg/monitor-tags.html Amazon Web Services Tags in Glue>
-- in the developer guide.
createTrigger_tags :: Lens.Lens' CreateTrigger (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
createTrigger_tags :: Lens' CreateTrigger (Maybe (HashMap Text Text))
createTrigger_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrigger' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:CreateTrigger' :: CreateTrigger -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: CreateTrigger
s@CreateTrigger' {} Maybe (HashMap Text Text)
a -> CreateTrigger
s {$sel:tags:CreateTrigger' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: CreateTrigger) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the workflow associated with the trigger.
createTrigger_workflowName :: Lens.Lens' CreateTrigger (Prelude.Maybe Prelude.Text)
createTrigger_workflowName :: Lens' CreateTrigger (Maybe Text)
createTrigger_workflowName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrigger' {Maybe Text
workflowName :: Maybe Text
$sel:workflowName:CreateTrigger' :: CreateTrigger -> Maybe Text
workflowName} -> Maybe Text
workflowName) (\s :: CreateTrigger
s@CreateTrigger' {} Maybe Text
a -> CreateTrigger
s {$sel:workflowName:CreateTrigger' :: Maybe Text
workflowName = Maybe Text
a} :: CreateTrigger)

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

-- | The type of the new trigger.
createTrigger_type :: Lens.Lens' CreateTrigger TriggerType
createTrigger_type :: Lens' CreateTrigger TriggerType
createTrigger_type = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrigger' {TriggerType
type' :: TriggerType
$sel:type':CreateTrigger' :: CreateTrigger -> TriggerType
type'} -> TriggerType
type') (\s :: CreateTrigger
s@CreateTrigger' {} TriggerType
a -> CreateTrigger
s {$sel:type':CreateTrigger' :: TriggerType
type' = TriggerType
a} :: CreateTrigger)

-- | The actions initiated by this trigger when it fires.
createTrigger_actions :: Lens.Lens' CreateTrigger [Action]
createTrigger_actions :: Lens' CreateTrigger [Action]
createTrigger_actions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTrigger' {[Action]
actions :: [Action]
$sel:actions:CreateTrigger' :: CreateTrigger -> [Action]
actions} -> [Action]
actions) (\s :: CreateTrigger
s@CreateTrigger' {} [Action]
a -> CreateTrigger
s {$sel:actions:CreateTrigger' :: [Action]
actions = [Action]
a} :: CreateTrigger) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.AWSRequest CreateTrigger where
  type
    AWSResponse CreateTrigger =
      CreateTriggerResponse
  request :: (Service -> Service) -> CreateTrigger -> Request CreateTrigger
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateTrigger
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateTrigger)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Int -> CreateTriggerResponse
CreateTriggerResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable CreateTrigger where
  hashWithSalt :: Int -> CreateTrigger -> Int
hashWithSalt Int
_salt CreateTrigger' {[Action]
Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe EventBatchingCondition
Maybe Predicate
Text
TriggerType
actions :: [Action]
type' :: TriggerType
name :: Text
workflowName :: Maybe Text
tags :: Maybe (HashMap Text Text)
startOnCreation :: Maybe Bool
schedule :: Maybe Text
predicate :: Maybe Predicate
eventBatchingCondition :: Maybe EventBatchingCondition
description :: Maybe Text
$sel:actions:CreateTrigger' :: CreateTrigger -> [Action]
$sel:type':CreateTrigger' :: CreateTrigger -> TriggerType
$sel:name:CreateTrigger' :: CreateTrigger -> Text
$sel:workflowName:CreateTrigger' :: CreateTrigger -> Maybe Text
$sel:tags:CreateTrigger' :: CreateTrigger -> Maybe (HashMap Text Text)
$sel:startOnCreation:CreateTrigger' :: CreateTrigger -> Maybe Bool
$sel:schedule:CreateTrigger' :: CreateTrigger -> Maybe Text
$sel:predicate:CreateTrigger' :: CreateTrigger -> Maybe Predicate
$sel:eventBatchingCondition:CreateTrigger' :: CreateTrigger -> Maybe EventBatchingCondition
$sel:description:CreateTrigger' :: CreateTrigger -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EventBatchingCondition
eventBatchingCondition
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Predicate
predicate
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
schedule
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
startOnCreation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
workflowName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` TriggerType
type'
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [Action]
actions

instance Prelude.NFData CreateTrigger where
  rnf :: CreateTrigger -> ()
rnf CreateTrigger' {[Action]
Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe EventBatchingCondition
Maybe Predicate
Text
TriggerType
actions :: [Action]
type' :: TriggerType
name :: Text
workflowName :: Maybe Text
tags :: Maybe (HashMap Text Text)
startOnCreation :: Maybe Bool
schedule :: Maybe Text
predicate :: Maybe Predicate
eventBatchingCondition :: Maybe EventBatchingCondition
description :: Maybe Text
$sel:actions:CreateTrigger' :: CreateTrigger -> [Action]
$sel:type':CreateTrigger' :: CreateTrigger -> TriggerType
$sel:name:CreateTrigger' :: CreateTrigger -> Text
$sel:workflowName:CreateTrigger' :: CreateTrigger -> Maybe Text
$sel:tags:CreateTrigger' :: CreateTrigger -> Maybe (HashMap Text Text)
$sel:startOnCreation:CreateTrigger' :: CreateTrigger -> Maybe Bool
$sel:schedule:CreateTrigger' :: CreateTrigger -> Maybe Text
$sel:predicate:CreateTrigger' :: CreateTrigger -> Maybe Predicate
$sel:eventBatchingCondition:CreateTrigger' :: CreateTrigger -> Maybe EventBatchingCondition
$sel:description:CreateTrigger' :: CreateTrigger -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EventBatchingCondition
eventBatchingCondition
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Predicate
predicate
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
schedule
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
startOnCreation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
workflowName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf TriggerType
type'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [Action]
actions

instance Data.ToHeaders CreateTrigger where
  toHeaders :: CreateTrigger -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# (ByteString
"AWSGlue.CreateTrigger" :: Prelude.ByteString),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON CreateTrigger where
  toJSON :: CreateTrigger -> Value
toJSON CreateTrigger' {[Action]
Maybe Bool
Maybe Text
Maybe (HashMap Text Text)
Maybe EventBatchingCondition
Maybe Predicate
Text
TriggerType
actions :: [Action]
type' :: TriggerType
name :: Text
workflowName :: Maybe Text
tags :: Maybe (HashMap Text Text)
startOnCreation :: Maybe Bool
schedule :: Maybe Text
predicate :: Maybe Predicate
eventBatchingCondition :: Maybe EventBatchingCondition
description :: Maybe Text
$sel:actions:CreateTrigger' :: CreateTrigger -> [Action]
$sel:type':CreateTrigger' :: CreateTrigger -> TriggerType
$sel:name:CreateTrigger' :: CreateTrigger -> Text
$sel:workflowName:CreateTrigger' :: CreateTrigger -> Maybe Text
$sel:tags:CreateTrigger' :: CreateTrigger -> Maybe (HashMap Text Text)
$sel:startOnCreation:CreateTrigger' :: CreateTrigger -> Maybe Bool
$sel:schedule:CreateTrigger' :: CreateTrigger -> Maybe Text
$sel:predicate:CreateTrigger' :: CreateTrigger -> Maybe Predicate
$sel:eventBatchingCondition:CreateTrigger' :: CreateTrigger -> Maybe EventBatchingCondition
$sel:description:CreateTrigger' :: CreateTrigger -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Description" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
description,
            (Key
"EventBatchingCondition" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EventBatchingCondition
eventBatchingCondition,
            (Key
"Predicate" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Predicate
predicate,
            (Key
"Schedule" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
schedule,
            (Key
"StartOnCreation" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
startOnCreation,
            (Key
"Tags" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text Text)
tags,
            (Key
"WorkflowName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
workflowName,
            forall a. a -> Maybe a
Prelude.Just (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name),
            forall a. a -> Maybe a
Prelude.Just (Key
"Type" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= TriggerType
type'),
            forall a. a -> Maybe a
Prelude.Just (Key
"Actions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= [Action]
actions)
          ]
      )

instance Data.ToPath CreateTrigger where
  toPath :: CreateTrigger -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery CreateTrigger where
  toQuery :: CreateTrigger -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newCreateTriggerResponse' smart constructor.
data CreateTriggerResponse = CreateTriggerResponse'
  { -- | The name of the trigger.
    CreateTriggerResponse -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateTriggerResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateTriggerResponse -> CreateTriggerResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateTriggerResponse -> CreateTriggerResponse -> Bool
$c/= :: CreateTriggerResponse -> CreateTriggerResponse -> Bool
== :: CreateTriggerResponse -> CreateTriggerResponse -> Bool
$c== :: CreateTriggerResponse -> CreateTriggerResponse -> Bool
Prelude.Eq, ReadPrec [CreateTriggerResponse]
ReadPrec CreateTriggerResponse
Int -> ReadS CreateTriggerResponse
ReadS [CreateTriggerResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateTriggerResponse]
$creadListPrec :: ReadPrec [CreateTriggerResponse]
readPrec :: ReadPrec CreateTriggerResponse
$creadPrec :: ReadPrec CreateTriggerResponse
readList :: ReadS [CreateTriggerResponse]
$creadList :: ReadS [CreateTriggerResponse]
readsPrec :: Int -> ReadS CreateTriggerResponse
$creadsPrec :: Int -> ReadS CreateTriggerResponse
Prelude.Read, Int -> CreateTriggerResponse -> ShowS
[CreateTriggerResponse] -> ShowS
CreateTriggerResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateTriggerResponse] -> ShowS
$cshowList :: [CreateTriggerResponse] -> ShowS
show :: CreateTriggerResponse -> String
$cshow :: CreateTriggerResponse -> String
showsPrec :: Int -> CreateTriggerResponse -> ShowS
$cshowsPrec :: Int -> CreateTriggerResponse -> ShowS
Prelude.Show, forall x. Rep CreateTriggerResponse x -> CreateTriggerResponse
forall x. CreateTriggerResponse -> Rep CreateTriggerResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateTriggerResponse x -> CreateTriggerResponse
$cfrom :: forall x. CreateTriggerResponse -> Rep CreateTriggerResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateTriggerResponse' 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:
--
-- 'name', 'createTriggerResponse_name' - The name of the trigger.
--
-- 'httpStatus', 'createTriggerResponse_httpStatus' - The response's http status code.
newCreateTriggerResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateTriggerResponse
newCreateTriggerResponse :: Int -> CreateTriggerResponse
newCreateTriggerResponse Int
pHttpStatus_ =
  CreateTriggerResponse'
    { $sel:name:CreateTriggerResponse' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateTriggerResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

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

-- | The response's http status code.
createTriggerResponse_httpStatus :: Lens.Lens' CreateTriggerResponse Prelude.Int
createTriggerResponse_httpStatus :: Lens' CreateTriggerResponse Int
createTriggerResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateTriggerResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateTriggerResponse' :: CreateTriggerResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateTriggerResponse
s@CreateTriggerResponse' {} Int
a -> CreateTriggerResponse
s {$sel:httpStatus:CreateTriggerResponse' :: Int
httpStatus = Int
a} :: CreateTriggerResponse)

instance Prelude.NFData CreateTriggerResponse where
  rnf :: CreateTriggerResponse -> ()
rnf CreateTriggerResponse' {Int
Maybe Text
httpStatus :: Int
name :: Maybe Text
$sel:httpStatus:CreateTriggerResponse' :: CreateTriggerResponse -> Int
$sel:name:CreateTriggerResponse' :: CreateTriggerResponse -> Maybe Text
..} =
    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 Int
httpStatus