{-# 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. 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. eventBatchingCondition :: Prelude.Maybe EventBatchingCondition, -- | A predicate to specify when the new trigger should fire. -- -- This field is required when the trigger type is @CONDITIONAL@. predicate :: Prelude.Maybe Predicate, -- | A @cron@ expression used to specify the schedule (see -- . -- 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. schedule :: Prelude.Maybe Prelude.Text, -- | Set to @true@ to start @SCHEDULED@ and @CONDITIONAL@ triggers when -- created. True is not supported for @ON_DEMAND@ triggers. 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 -- -- in the developer guide. tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text), -- | The name of the workflow associated with the trigger. workflowName :: Prelude.Maybe Prelude.Text, -- | The name of the trigger. name :: Prelude.Text, -- | The type of the new trigger. type' :: TriggerType, -- | The actions initiated by this trigger when it fires. actions :: [Action] } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateTrigger' with all optional fields omitted. -- -- Use or 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 -- . -- 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 -- -- 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 pName_ pType_ = CreateTrigger' { description = Prelude.Nothing, eventBatchingCondition = Prelude.Nothing, predicate = Prelude.Nothing, schedule = Prelude.Nothing, startOnCreation = Prelude.Nothing, tags = Prelude.Nothing, workflowName = Prelude.Nothing, name = pName_, type' = pType_, actions = Prelude.mempty } -- | A description of the new trigger. createTrigger_description :: Lens.Lens' CreateTrigger (Prelude.Maybe Prelude.Text) createTrigger_description = Lens.lens (\CreateTrigger' {description} -> description) (\s@CreateTrigger' {} a -> s {description = 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.lens (\CreateTrigger' {eventBatchingCondition} -> eventBatchingCondition) (\s@CreateTrigger' {} a -> s {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.lens (\CreateTrigger' {predicate} -> predicate) (\s@CreateTrigger' {} a -> s {predicate = a} :: CreateTrigger) -- | A @cron@ expression used to specify the schedule (see -- . -- 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.lens (\CreateTrigger' {schedule} -> schedule) (\s@CreateTrigger' {} a -> s {schedule = 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.lens (\CreateTrigger' {startOnCreation} -> startOnCreation) (\s@CreateTrigger' {} a -> s {startOnCreation = 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 -- -- in the developer guide. createTrigger_tags :: Lens.Lens' CreateTrigger (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)) createTrigger_tags = Lens.lens (\CreateTrigger' {tags} -> tags) (\s@CreateTrigger' {} a -> s {tags = a} :: CreateTrigger) Prelude.. Lens.mapping Lens.coerced -- | The name of the workflow associated with the trigger. createTrigger_workflowName :: Lens.Lens' CreateTrigger (Prelude.Maybe Prelude.Text) createTrigger_workflowName = Lens.lens (\CreateTrigger' {workflowName} -> workflowName) (\s@CreateTrigger' {} a -> s {workflowName = a} :: CreateTrigger) -- | The name of the trigger. createTrigger_name :: Lens.Lens' CreateTrigger Prelude.Text createTrigger_name = Lens.lens (\CreateTrigger' {name} -> name) (\s@CreateTrigger' {} a -> s {name = a} :: CreateTrigger) -- | The type of the new trigger. createTrigger_type :: Lens.Lens' CreateTrigger TriggerType createTrigger_type = Lens.lens (\CreateTrigger' {type'} -> type') (\s@CreateTrigger' {} a -> s {type' = a} :: CreateTrigger) -- | The actions initiated by this trigger when it fires. createTrigger_actions :: Lens.Lens' CreateTrigger [Action] createTrigger_actions = Lens.lens (\CreateTrigger' {actions} -> actions) (\s@CreateTrigger' {} a -> s {actions = a} :: CreateTrigger) Prelude.. Lens.coerced instance Core.AWSRequest CreateTrigger where type AWSResponse CreateTrigger = CreateTriggerResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> CreateTriggerResponse' Prelude.<$> (x Data..?> "Name") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable CreateTrigger where hashWithSalt _salt CreateTrigger' {..} = _salt `Prelude.hashWithSalt` description `Prelude.hashWithSalt` eventBatchingCondition `Prelude.hashWithSalt` predicate `Prelude.hashWithSalt` schedule `Prelude.hashWithSalt` startOnCreation `Prelude.hashWithSalt` tags `Prelude.hashWithSalt` workflowName `Prelude.hashWithSalt` name `Prelude.hashWithSalt` type' `Prelude.hashWithSalt` actions instance Prelude.NFData CreateTrigger where rnf CreateTrigger' {..} = Prelude.rnf description `Prelude.seq` Prelude.rnf eventBatchingCondition `Prelude.seq` Prelude.rnf predicate `Prelude.seq` Prelude.rnf schedule `Prelude.seq` Prelude.rnf startOnCreation `Prelude.seq` Prelude.rnf tags `Prelude.seq` Prelude.rnf workflowName `Prelude.seq` Prelude.rnf name `Prelude.seq` Prelude.rnf type' `Prelude.seq` Prelude.rnf actions instance Data.ToHeaders CreateTrigger where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ("AWSGlue.CreateTrigger" :: Prelude.ByteString), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON CreateTrigger where toJSON CreateTrigger' {..} = Data.object ( Prelude.catMaybes [ ("Description" Data..=) Prelude.<$> description, ("EventBatchingCondition" Data..=) Prelude.<$> eventBatchingCondition, ("Predicate" Data..=) Prelude.<$> predicate, ("Schedule" Data..=) Prelude.<$> schedule, ("StartOnCreation" Data..=) Prelude.<$> startOnCreation, ("Tags" Data..=) Prelude.<$> tags, ("WorkflowName" Data..=) Prelude.<$> workflowName, Prelude.Just ("Name" Data..= name), Prelude.Just ("Type" Data..= type'), Prelude.Just ("Actions" Data..= actions) ] ) instance Data.ToPath CreateTrigger where toPath = Prelude.const "/" instance Data.ToQuery CreateTrigger where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newCreateTriggerResponse' smart constructor. data CreateTriggerResponse = CreateTriggerResponse' { -- | The name of the trigger. name :: Prelude.Maybe Prelude.Text, -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'CreateTriggerResponse' with all optional fields omitted. -- -- Use or 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 pHttpStatus_ = CreateTriggerResponse' { name = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | The name of the trigger. createTriggerResponse_name :: Lens.Lens' CreateTriggerResponse (Prelude.Maybe Prelude.Text) createTriggerResponse_name = Lens.lens (\CreateTriggerResponse' {name} -> name) (\s@CreateTriggerResponse' {} a -> s {name = a} :: CreateTriggerResponse) -- | The response's http status code. createTriggerResponse_httpStatus :: Lens.Lens' CreateTriggerResponse Prelude.Int createTriggerResponse_httpStatus = Lens.lens (\CreateTriggerResponse' {httpStatus} -> httpStatus) (\s@CreateTriggerResponse' {} a -> s {httpStatus = a} :: CreateTriggerResponse) instance Prelude.NFData CreateTriggerResponse where rnf CreateTriggerResponse' {..} = Prelude.rnf name `Prelude.seq` Prelude.rnf httpStatus