packages feed

amazonka-customer-profiles-2.0: gen/Amazonka/CustomerProfiles/Types/ScheduledTriggerProperties.hs

{-# 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.CustomerProfiles.Types.ScheduledTriggerProperties
-- 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.CustomerProfiles.Types.ScheduledTriggerProperties where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import Amazonka.CustomerProfiles.Types.DataPullMode
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Specifies the configuration details of a scheduled-trigger flow that you
-- define. Currently, these settings only apply to the scheduled-trigger
-- type.
--
-- /See:/ 'newScheduledTriggerProperties' smart constructor.
data ScheduledTriggerProperties = ScheduledTriggerProperties'
  { -- | Specifies whether a scheduled flow has an incremental data transfer or a
    -- complete data transfer for each flow run.
    dataPullMode :: Prelude.Maybe DataPullMode,
    -- | Specifies the date range for the records to import from the connector in
    -- the first flow run.
    firstExecutionFrom :: Prelude.Maybe Data.POSIX,
    -- | Specifies the scheduled end time for a scheduled-trigger flow.
    scheduleEndTime :: Prelude.Maybe Data.POSIX,
    -- | Specifies the optional offset that is added to the time interval for a
    -- schedule-triggered flow.
    scheduleOffset :: Prelude.Maybe Prelude.Natural,
    -- | Specifies the scheduled start time for a scheduled-trigger flow.
    scheduleStartTime :: Prelude.Maybe Data.POSIX,
    -- | Specifies the time zone used when referring to the date and time of a
    -- scheduled-triggered flow, such as America\/New_York.
    timezone :: Prelude.Maybe Prelude.Text,
    -- | The scheduling expression that determines the rate at which the schedule
    -- will run, for example rate (5 minutes).
    scheduleExpression :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ScheduledTriggerProperties' 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:
--
-- 'dataPullMode', 'scheduledTriggerProperties_dataPullMode' - Specifies whether a scheduled flow has an incremental data transfer or a
-- complete data transfer for each flow run.
--
-- 'firstExecutionFrom', 'scheduledTriggerProperties_firstExecutionFrom' - Specifies the date range for the records to import from the connector in
-- the first flow run.
--
-- 'scheduleEndTime', 'scheduledTriggerProperties_scheduleEndTime' - Specifies the scheduled end time for a scheduled-trigger flow.
--
-- 'scheduleOffset', 'scheduledTriggerProperties_scheduleOffset' - Specifies the optional offset that is added to the time interval for a
-- schedule-triggered flow.
--
-- 'scheduleStartTime', 'scheduledTriggerProperties_scheduleStartTime' - Specifies the scheduled start time for a scheduled-trigger flow.
--
-- 'timezone', 'scheduledTriggerProperties_timezone' - Specifies the time zone used when referring to the date and time of a
-- scheduled-triggered flow, such as America\/New_York.
--
-- 'scheduleExpression', 'scheduledTriggerProperties_scheduleExpression' - The scheduling expression that determines the rate at which the schedule
-- will run, for example rate (5 minutes).
newScheduledTriggerProperties ::
  -- | 'scheduleExpression'
  Prelude.Text ->
  ScheduledTriggerProperties
newScheduledTriggerProperties pScheduleExpression_ =
  ScheduledTriggerProperties'
    { dataPullMode =
        Prelude.Nothing,
      firstExecutionFrom = Prelude.Nothing,
      scheduleEndTime = Prelude.Nothing,
      scheduleOffset = Prelude.Nothing,
      scheduleStartTime = Prelude.Nothing,
      timezone = Prelude.Nothing,
      scheduleExpression = pScheduleExpression_
    }

-- | Specifies whether a scheduled flow has an incremental data transfer or a
-- complete data transfer for each flow run.
scheduledTriggerProperties_dataPullMode :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe DataPullMode)
scheduledTriggerProperties_dataPullMode = Lens.lens (\ScheduledTriggerProperties' {dataPullMode} -> dataPullMode) (\s@ScheduledTriggerProperties' {} a -> s {dataPullMode = a} :: ScheduledTriggerProperties)

-- | Specifies the date range for the records to import from the connector in
-- the first flow run.
scheduledTriggerProperties_firstExecutionFrom :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.UTCTime)
scheduledTriggerProperties_firstExecutionFrom = Lens.lens (\ScheduledTriggerProperties' {firstExecutionFrom} -> firstExecutionFrom) (\s@ScheduledTriggerProperties' {} a -> s {firstExecutionFrom = a} :: ScheduledTriggerProperties) Prelude.. Lens.mapping Data._Time

-- | Specifies the scheduled end time for a scheduled-trigger flow.
scheduledTriggerProperties_scheduleEndTime :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.UTCTime)
scheduledTriggerProperties_scheduleEndTime = Lens.lens (\ScheduledTriggerProperties' {scheduleEndTime} -> scheduleEndTime) (\s@ScheduledTriggerProperties' {} a -> s {scheduleEndTime = a} :: ScheduledTriggerProperties) Prelude.. Lens.mapping Data._Time

-- | Specifies the optional offset that is added to the time interval for a
-- schedule-triggered flow.
scheduledTriggerProperties_scheduleOffset :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.Natural)
scheduledTriggerProperties_scheduleOffset = Lens.lens (\ScheduledTriggerProperties' {scheduleOffset} -> scheduleOffset) (\s@ScheduledTriggerProperties' {} a -> s {scheduleOffset = a} :: ScheduledTriggerProperties)

-- | Specifies the scheduled start time for a scheduled-trigger flow.
scheduledTriggerProperties_scheduleStartTime :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.UTCTime)
scheduledTriggerProperties_scheduleStartTime = Lens.lens (\ScheduledTriggerProperties' {scheduleStartTime} -> scheduleStartTime) (\s@ScheduledTriggerProperties' {} a -> s {scheduleStartTime = a} :: ScheduledTriggerProperties) Prelude.. Lens.mapping Data._Time

-- | Specifies the time zone used when referring to the date and time of a
-- scheduled-triggered flow, such as America\/New_York.
scheduledTriggerProperties_timezone :: Lens.Lens' ScheduledTriggerProperties (Prelude.Maybe Prelude.Text)
scheduledTriggerProperties_timezone = Lens.lens (\ScheduledTriggerProperties' {timezone} -> timezone) (\s@ScheduledTriggerProperties' {} a -> s {timezone = a} :: ScheduledTriggerProperties)

-- | The scheduling expression that determines the rate at which the schedule
-- will run, for example rate (5 minutes).
scheduledTriggerProperties_scheduleExpression :: Lens.Lens' ScheduledTriggerProperties Prelude.Text
scheduledTriggerProperties_scheduleExpression = Lens.lens (\ScheduledTriggerProperties' {scheduleExpression} -> scheduleExpression) (\s@ScheduledTriggerProperties' {} a -> s {scheduleExpression = a} :: ScheduledTriggerProperties)

instance Prelude.Hashable ScheduledTriggerProperties where
  hashWithSalt _salt ScheduledTriggerProperties' {..} =
    _salt
      `Prelude.hashWithSalt` dataPullMode
      `Prelude.hashWithSalt` firstExecutionFrom
      `Prelude.hashWithSalt` scheduleEndTime
      `Prelude.hashWithSalt` scheduleOffset
      `Prelude.hashWithSalt` scheduleStartTime
      `Prelude.hashWithSalt` timezone
      `Prelude.hashWithSalt` scheduleExpression

instance Prelude.NFData ScheduledTriggerProperties where
  rnf ScheduledTriggerProperties' {..} =
    Prelude.rnf dataPullMode
      `Prelude.seq` Prelude.rnf firstExecutionFrom
      `Prelude.seq` Prelude.rnf scheduleEndTime
      `Prelude.seq` Prelude.rnf scheduleOffset
      `Prelude.seq` Prelude.rnf scheduleStartTime
      `Prelude.seq` Prelude.rnf timezone
      `Prelude.seq` Prelude.rnf scheduleExpression

instance Data.ToJSON ScheduledTriggerProperties where
  toJSON ScheduledTriggerProperties' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("DataPullMode" Data..=) Prelude.<$> dataPullMode,
            ("FirstExecutionFrom" Data..=)
              Prelude.<$> firstExecutionFrom,
            ("ScheduleEndTime" Data..=)
              Prelude.<$> scheduleEndTime,
            ("ScheduleOffset" Data..=)
              Prelude.<$> scheduleOffset,
            ("ScheduleStartTime" Data..=)
              Prelude.<$> scheduleStartTime,
            ("Timezone" Data..=) Prelude.<$> timezone,
            Prelude.Just
              ("ScheduleExpression" Data..= scheduleExpression)
          ]
      )