packages feed

amazonka-glue-2.0: gen/Amazonka/Glue/StartDataQualityRuleRecommendationRun.hs

{-# 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.StartDataQualityRuleRecommendationRun
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Starts a recommendation run that is used to generate rules when you
-- don\'t know what rules to write. Glue Data Quality analyzes the data and
-- comes up with recommendations for a potential ruleset. You can then
-- triage the ruleset and modify the generated ruleset to your liking.
module Amazonka.Glue.StartDataQualityRuleRecommendationRun
  ( -- * Creating a Request
    StartDataQualityRuleRecommendationRun (..),
    newStartDataQualityRuleRecommendationRun,

    -- * Request Lenses
    startDataQualityRuleRecommendationRun_clientToken,
    startDataQualityRuleRecommendationRun_createdRulesetName,
    startDataQualityRuleRecommendationRun_numberOfWorkers,
    startDataQualityRuleRecommendationRun_timeout,
    startDataQualityRuleRecommendationRun_dataSource,
    startDataQualityRuleRecommendationRun_role,

    -- * Destructuring the Response
    StartDataQualityRuleRecommendationRunResponse (..),
    newStartDataQualityRuleRecommendationRunResponse,

    -- * Response Lenses
    startDataQualityRuleRecommendationRunResponse_runId,
    startDataQualityRuleRecommendationRunResponse_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:/ 'newStartDataQualityRuleRecommendationRun' smart constructor.
data StartDataQualityRuleRecommendationRun = StartDataQualityRuleRecommendationRun'
  { -- | Used for idempotency and is recommended to be set to a random ID (such
    -- as a UUID) to avoid creating or starting multiple instances of the same
    -- resource.
    clientToken :: Prelude.Maybe Prelude.Text,
    -- | A name for the ruleset.
    createdRulesetName :: Prelude.Maybe Prelude.Text,
    -- | The number of @G.1X@ workers to be used in the run. The default is 5.
    numberOfWorkers :: Prelude.Maybe Prelude.Int,
    -- | The timeout for a run in minutes. This is the maximum time that a run
    -- can consume resources before it is terminated and enters @TIMEOUT@
    -- status. The default is 2,880 minutes (48 hours).
    timeout :: Prelude.Maybe Prelude.Natural,
    -- | The data source (Glue table) associated with this run.
    dataSource :: DataSource,
    -- | An IAM role supplied to encrypt the results of the run.
    role' :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'StartDataQualityRuleRecommendationRun' 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:
--
-- 'clientToken', 'startDataQualityRuleRecommendationRun_clientToken' - Used for idempotency and is recommended to be set to a random ID (such
-- as a UUID) to avoid creating or starting multiple instances of the same
-- resource.
--
-- 'createdRulesetName', 'startDataQualityRuleRecommendationRun_createdRulesetName' - A name for the ruleset.
--
-- 'numberOfWorkers', 'startDataQualityRuleRecommendationRun_numberOfWorkers' - The number of @G.1X@ workers to be used in the run. The default is 5.
--
-- 'timeout', 'startDataQualityRuleRecommendationRun_timeout' - The timeout for a run in minutes. This is the maximum time that a run
-- can consume resources before it is terminated and enters @TIMEOUT@
-- status. The default is 2,880 minutes (48 hours).
--
-- 'dataSource', 'startDataQualityRuleRecommendationRun_dataSource' - The data source (Glue table) associated with this run.
--
-- 'role'', 'startDataQualityRuleRecommendationRun_role' - An IAM role supplied to encrypt the results of the run.
newStartDataQualityRuleRecommendationRun ::
  -- | 'dataSource'
  DataSource ->
  -- | 'role''
  Prelude.Text ->
  StartDataQualityRuleRecommendationRun
newStartDataQualityRuleRecommendationRun
  pDataSource_
  pRole_ =
    StartDataQualityRuleRecommendationRun'
      { clientToken =
          Prelude.Nothing,
        createdRulesetName = Prelude.Nothing,
        numberOfWorkers = Prelude.Nothing,
        timeout = Prelude.Nothing,
        dataSource = pDataSource_,
        role' = pRole_
      }

-- | Used for idempotency and is recommended to be set to a random ID (such
-- as a UUID) to avoid creating or starting multiple instances of the same
-- resource.
startDataQualityRuleRecommendationRun_clientToken :: Lens.Lens' StartDataQualityRuleRecommendationRun (Prelude.Maybe Prelude.Text)
startDataQualityRuleRecommendationRun_clientToken = Lens.lens (\StartDataQualityRuleRecommendationRun' {clientToken} -> clientToken) (\s@StartDataQualityRuleRecommendationRun' {} a -> s {clientToken = a} :: StartDataQualityRuleRecommendationRun)

-- | A name for the ruleset.
startDataQualityRuleRecommendationRun_createdRulesetName :: Lens.Lens' StartDataQualityRuleRecommendationRun (Prelude.Maybe Prelude.Text)
startDataQualityRuleRecommendationRun_createdRulesetName = Lens.lens (\StartDataQualityRuleRecommendationRun' {createdRulesetName} -> createdRulesetName) (\s@StartDataQualityRuleRecommendationRun' {} a -> s {createdRulesetName = a} :: StartDataQualityRuleRecommendationRun)

-- | The number of @G.1X@ workers to be used in the run. The default is 5.
startDataQualityRuleRecommendationRun_numberOfWorkers :: Lens.Lens' StartDataQualityRuleRecommendationRun (Prelude.Maybe Prelude.Int)
startDataQualityRuleRecommendationRun_numberOfWorkers = Lens.lens (\StartDataQualityRuleRecommendationRun' {numberOfWorkers} -> numberOfWorkers) (\s@StartDataQualityRuleRecommendationRun' {} a -> s {numberOfWorkers = a} :: StartDataQualityRuleRecommendationRun)

-- | The timeout for a run in minutes. This is the maximum time that a run
-- can consume resources before it is terminated and enters @TIMEOUT@
-- status. The default is 2,880 minutes (48 hours).
startDataQualityRuleRecommendationRun_timeout :: Lens.Lens' StartDataQualityRuleRecommendationRun (Prelude.Maybe Prelude.Natural)
startDataQualityRuleRecommendationRun_timeout = Lens.lens (\StartDataQualityRuleRecommendationRun' {timeout} -> timeout) (\s@StartDataQualityRuleRecommendationRun' {} a -> s {timeout = a} :: StartDataQualityRuleRecommendationRun)

-- | The data source (Glue table) associated with this run.
startDataQualityRuleRecommendationRun_dataSource :: Lens.Lens' StartDataQualityRuleRecommendationRun DataSource
startDataQualityRuleRecommendationRun_dataSource = Lens.lens (\StartDataQualityRuleRecommendationRun' {dataSource} -> dataSource) (\s@StartDataQualityRuleRecommendationRun' {} a -> s {dataSource = a} :: StartDataQualityRuleRecommendationRun)

-- | An IAM role supplied to encrypt the results of the run.
startDataQualityRuleRecommendationRun_role :: Lens.Lens' StartDataQualityRuleRecommendationRun Prelude.Text
startDataQualityRuleRecommendationRun_role = Lens.lens (\StartDataQualityRuleRecommendationRun' {role'} -> role') (\s@StartDataQualityRuleRecommendationRun' {} a -> s {role' = a} :: StartDataQualityRuleRecommendationRun)

instance
  Core.AWSRequest
    StartDataQualityRuleRecommendationRun
  where
  type
    AWSResponse
      StartDataQualityRuleRecommendationRun =
      StartDataQualityRuleRecommendationRunResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          StartDataQualityRuleRecommendationRunResponse'
            Prelude.<$> (x Data..?> "RunId")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
      )

instance
  Prelude.Hashable
    StartDataQualityRuleRecommendationRun
  where
  hashWithSalt
    _salt
    StartDataQualityRuleRecommendationRun' {..} =
      _salt
        `Prelude.hashWithSalt` clientToken
        `Prelude.hashWithSalt` createdRulesetName
        `Prelude.hashWithSalt` numberOfWorkers
        `Prelude.hashWithSalt` timeout
        `Prelude.hashWithSalt` dataSource
        `Prelude.hashWithSalt` role'

instance
  Prelude.NFData
    StartDataQualityRuleRecommendationRun
  where
  rnf StartDataQualityRuleRecommendationRun' {..} =
    Prelude.rnf clientToken
      `Prelude.seq` Prelude.rnf createdRulesetName
      `Prelude.seq` Prelude.rnf numberOfWorkers
      `Prelude.seq` Prelude.rnf timeout
      `Prelude.seq` Prelude.rnf dataSource
      `Prelude.seq` Prelude.rnf role'

instance
  Data.ToHeaders
    StartDataQualityRuleRecommendationRun
  where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "AWSGlue.StartDataQualityRuleRecommendationRun" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance
  Data.ToJSON
    StartDataQualityRuleRecommendationRun
  where
  toJSON StartDataQualityRuleRecommendationRun' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("ClientToken" Data..=) Prelude.<$> clientToken,
            ("CreatedRulesetName" Data..=)
              Prelude.<$> createdRulesetName,
            ("NumberOfWorkers" Data..=)
              Prelude.<$> numberOfWorkers,
            ("Timeout" Data..=) Prelude.<$> timeout,
            Prelude.Just ("DataSource" Data..= dataSource),
            Prelude.Just ("Role" Data..= role')
          ]
      )

instance
  Data.ToPath
    StartDataQualityRuleRecommendationRun
  where
  toPath = Prelude.const "/"

instance
  Data.ToQuery
    StartDataQualityRuleRecommendationRun
  where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newStartDataQualityRuleRecommendationRunResponse' smart constructor.
data StartDataQualityRuleRecommendationRunResponse = StartDataQualityRuleRecommendationRunResponse'
  { -- | The unique run identifier associated with this run.
    runId :: 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 'StartDataQualityRuleRecommendationRunResponse' 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:
--
-- 'runId', 'startDataQualityRuleRecommendationRunResponse_runId' - The unique run identifier associated with this run.
--
-- 'httpStatus', 'startDataQualityRuleRecommendationRunResponse_httpStatus' - The response's http status code.
newStartDataQualityRuleRecommendationRunResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  StartDataQualityRuleRecommendationRunResponse
newStartDataQualityRuleRecommendationRunResponse
  pHttpStatus_ =
    StartDataQualityRuleRecommendationRunResponse'
      { runId =
          Prelude.Nothing,
        httpStatus = pHttpStatus_
      }

-- | The unique run identifier associated with this run.
startDataQualityRuleRecommendationRunResponse_runId :: Lens.Lens' StartDataQualityRuleRecommendationRunResponse (Prelude.Maybe Prelude.Text)
startDataQualityRuleRecommendationRunResponse_runId = Lens.lens (\StartDataQualityRuleRecommendationRunResponse' {runId} -> runId) (\s@StartDataQualityRuleRecommendationRunResponse' {} a -> s {runId = a} :: StartDataQualityRuleRecommendationRunResponse)

-- | The response's http status code.
startDataQualityRuleRecommendationRunResponse_httpStatus :: Lens.Lens' StartDataQualityRuleRecommendationRunResponse Prelude.Int
startDataQualityRuleRecommendationRunResponse_httpStatus = Lens.lens (\StartDataQualityRuleRecommendationRunResponse' {httpStatus} -> httpStatus) (\s@StartDataQualityRuleRecommendationRunResponse' {} a -> s {httpStatus = a} :: StartDataQualityRuleRecommendationRunResponse)

instance
  Prelude.NFData
    StartDataQualityRuleRecommendationRunResponse
  where
  rnf
    StartDataQualityRuleRecommendationRunResponse' {..} =
      Prelude.rnf runId
        `Prelude.seq` Prelude.rnf httpStatus