{-# 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.QuickSight.UpdateDataSet
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates a dataset.
module Amazonka.QuickSight.UpdateDataSet
  ( -- * Creating a Request
    UpdateDataSet (..),
    newUpdateDataSet,

    -- * Request Lenses
    updateDataSet_fieldFolders,
    updateDataSet_columnGroups,
    updateDataSet_dataSetUsageConfiguration,
    updateDataSet_rowLevelPermissionTagConfiguration,
    updateDataSet_rowLevelPermissionDataSet,
    updateDataSet_columnLevelPermissionRules,
    updateDataSet_logicalTableMap,
    updateDataSet_awsAccountId,
    updateDataSet_dataSetId,
    updateDataSet_name,
    updateDataSet_physicalTableMap,
    updateDataSet_importMode,

    -- * Destructuring the Response
    UpdateDataSetResponse (..),
    newUpdateDataSetResponse,

    -- * Response Lenses
    updateDataSetResponse_requestId,
    updateDataSetResponse_ingestionArn,
    updateDataSetResponse_arn,
    updateDataSetResponse_ingestionId,
    updateDataSetResponse_dataSetId,
    updateDataSetResponse_status,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.QuickSight.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newUpdateDataSet' smart constructor.
data UpdateDataSet = UpdateDataSet'
  { -- | The folder that contains fields and nested subfolders for your dataset.
    UpdateDataSet -> Maybe (HashMap Text FieldFolder)
fieldFolders :: Prelude.Maybe (Prelude.HashMap Prelude.Text FieldFolder),
    -- | Groupings of columns that work together in certain Amazon QuickSight
    -- features. Currently, only geospatial hierarchy is supported.
    UpdateDataSet -> Maybe (NonEmpty ColumnGroup)
columnGroups :: Prelude.Maybe (Prelude.NonEmpty ColumnGroup),
    UpdateDataSet -> Maybe DataSetUsageConfiguration
dataSetUsageConfiguration :: Prelude.Maybe DataSetUsageConfiguration,
    -- | The configuration of tags on a dataset to set row-level security.
    -- Row-level security tags are currently supported for anonymous embedding
    -- only.
    UpdateDataSet -> Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionTagConfiguration :: Prelude.Maybe RowLevelPermissionTagConfiguration,
    -- | The row-level security configuration for the data you want to create.
    UpdateDataSet -> Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet :: Prelude.Maybe RowLevelPermissionDataSet,
    -- | A set of one or more definitions of a @ ColumnLevelPermissionRule @.
    UpdateDataSet -> Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules :: Prelude.Maybe (Prelude.NonEmpty ColumnLevelPermissionRule),
    -- | Configures the combination and transformation of the data from the
    -- physical tables.
    UpdateDataSet -> Maybe (HashMap Text LogicalTable)
logicalTableMap :: Prelude.Maybe (Prelude.HashMap Prelude.Text LogicalTable),
    -- | The Amazon Web Services account ID.
    UpdateDataSet -> Text
awsAccountId :: Prelude.Text,
    -- | The ID for the dataset that you want to update. This ID is unique per
    -- Amazon Web Services Region for each Amazon Web Services account.
    UpdateDataSet -> Text
dataSetId :: Prelude.Text,
    -- | The display name for the dataset.
    UpdateDataSet -> Text
name :: Prelude.Text,
    -- | Declares the physical tables that are available in the underlying data
    -- sources.
    UpdateDataSet -> HashMap Text PhysicalTable
physicalTableMap :: Prelude.HashMap Prelude.Text PhysicalTable,
    -- | Indicates whether you want to import the data into SPICE.
    UpdateDataSet -> DataSetImportMode
importMode :: DataSetImportMode
  }
  deriving (UpdateDataSet -> UpdateDataSet -> Bool
(UpdateDataSet -> UpdateDataSet -> Bool)
-> (UpdateDataSet -> UpdateDataSet -> Bool) -> Eq UpdateDataSet
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateDataSet -> UpdateDataSet -> Bool
$c/= :: UpdateDataSet -> UpdateDataSet -> Bool
== :: UpdateDataSet -> UpdateDataSet -> Bool
$c== :: UpdateDataSet -> UpdateDataSet -> Bool
Prelude.Eq, Int -> UpdateDataSet -> ShowS
[UpdateDataSet] -> ShowS
UpdateDataSet -> String
(Int -> UpdateDataSet -> ShowS)
-> (UpdateDataSet -> String)
-> ([UpdateDataSet] -> ShowS)
-> Show UpdateDataSet
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateDataSet] -> ShowS
$cshowList :: [UpdateDataSet] -> ShowS
show :: UpdateDataSet -> String
$cshow :: UpdateDataSet -> String
showsPrec :: Int -> UpdateDataSet -> ShowS
$cshowsPrec :: Int -> UpdateDataSet -> ShowS
Prelude.Show, (forall x. UpdateDataSet -> Rep UpdateDataSet x)
-> (forall x. Rep UpdateDataSet x -> UpdateDataSet)
-> Generic UpdateDataSet
forall x. Rep UpdateDataSet x -> UpdateDataSet
forall x. UpdateDataSet -> Rep UpdateDataSet x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateDataSet x -> UpdateDataSet
$cfrom :: forall x. UpdateDataSet -> Rep UpdateDataSet x
Prelude.Generic)

-- |
-- Create a value of 'UpdateDataSet' 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:
--
-- 'fieldFolders', 'updateDataSet_fieldFolders' - The folder that contains fields and nested subfolders for your dataset.
--
-- 'columnGroups', 'updateDataSet_columnGroups' - Groupings of columns that work together in certain Amazon QuickSight
-- features. Currently, only geospatial hierarchy is supported.
--
-- 'dataSetUsageConfiguration', 'updateDataSet_dataSetUsageConfiguration' - Undocumented member.
--
-- 'rowLevelPermissionTagConfiguration', 'updateDataSet_rowLevelPermissionTagConfiguration' - The configuration of tags on a dataset to set row-level security.
-- Row-level security tags are currently supported for anonymous embedding
-- only.
--
-- 'rowLevelPermissionDataSet', 'updateDataSet_rowLevelPermissionDataSet' - The row-level security configuration for the data you want to create.
--
-- 'columnLevelPermissionRules', 'updateDataSet_columnLevelPermissionRules' - A set of one or more definitions of a @ ColumnLevelPermissionRule @.
--
-- 'logicalTableMap', 'updateDataSet_logicalTableMap' - Configures the combination and transformation of the data from the
-- physical tables.
--
-- 'awsAccountId', 'updateDataSet_awsAccountId' - The Amazon Web Services account ID.
--
-- 'dataSetId', 'updateDataSet_dataSetId' - The ID for the dataset that you want to update. This ID is unique per
-- Amazon Web Services Region for each Amazon Web Services account.
--
-- 'name', 'updateDataSet_name' - The display name for the dataset.
--
-- 'physicalTableMap', 'updateDataSet_physicalTableMap' - Declares the physical tables that are available in the underlying data
-- sources.
--
-- 'importMode', 'updateDataSet_importMode' - Indicates whether you want to import the data into SPICE.
newUpdateDataSet ::
  -- | 'awsAccountId'
  Prelude.Text ->
  -- | 'dataSetId'
  Prelude.Text ->
  -- | 'name'
  Prelude.Text ->
  -- | 'importMode'
  DataSetImportMode ->
  UpdateDataSet
newUpdateDataSet :: Text -> Text -> Text -> DataSetImportMode -> UpdateDataSet
newUpdateDataSet
  Text
pAwsAccountId_
  Text
pDataSetId_
  Text
pName_
  DataSetImportMode
pImportMode_ =
    UpdateDataSet' :: Maybe (HashMap Text FieldFolder)
-> Maybe (NonEmpty ColumnGroup)
-> Maybe DataSetUsageConfiguration
-> Maybe RowLevelPermissionTagConfiguration
-> Maybe RowLevelPermissionDataSet
-> Maybe (NonEmpty ColumnLevelPermissionRule)
-> Maybe (HashMap Text LogicalTable)
-> Text
-> Text
-> Text
-> HashMap Text PhysicalTable
-> DataSetImportMode
-> UpdateDataSet
UpdateDataSet'
      { $sel:fieldFolders:UpdateDataSet' :: Maybe (HashMap Text FieldFolder)
fieldFolders = Maybe (HashMap Text FieldFolder)
forall a. Maybe a
Prelude.Nothing,
        $sel:columnGroups:UpdateDataSet' :: Maybe (NonEmpty ColumnGroup)
columnGroups = Maybe (NonEmpty ColumnGroup)
forall a. Maybe a
Prelude.Nothing,
        $sel:dataSetUsageConfiguration:UpdateDataSet' :: Maybe DataSetUsageConfiguration
dataSetUsageConfiguration = Maybe DataSetUsageConfiguration
forall a. Maybe a
Prelude.Nothing,
        $sel:rowLevelPermissionTagConfiguration:UpdateDataSet' :: Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionTagConfiguration = Maybe RowLevelPermissionTagConfiguration
forall a. Maybe a
Prelude.Nothing,
        $sel:rowLevelPermissionDataSet:UpdateDataSet' :: Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet = Maybe RowLevelPermissionDataSet
forall a. Maybe a
Prelude.Nothing,
        $sel:columnLevelPermissionRules:UpdateDataSet' :: Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules = Maybe (NonEmpty ColumnLevelPermissionRule)
forall a. Maybe a
Prelude.Nothing,
        $sel:logicalTableMap:UpdateDataSet' :: Maybe (HashMap Text LogicalTable)
logicalTableMap = Maybe (HashMap Text LogicalTable)
forall a. Maybe a
Prelude.Nothing,
        $sel:awsAccountId:UpdateDataSet' :: Text
awsAccountId = Text
pAwsAccountId_,
        $sel:dataSetId:UpdateDataSet' :: Text
dataSetId = Text
pDataSetId_,
        $sel:name:UpdateDataSet' :: Text
name = Text
pName_,
        $sel:physicalTableMap:UpdateDataSet' :: HashMap Text PhysicalTable
physicalTableMap = HashMap Text PhysicalTable
forall a. Monoid a => a
Prelude.mempty,
        $sel:importMode:UpdateDataSet' :: DataSetImportMode
importMode = DataSetImportMode
pImportMode_
      }

-- | The folder that contains fields and nested subfolders for your dataset.
updateDataSet_fieldFolders :: Lens.Lens' UpdateDataSet (Prelude.Maybe (Prelude.HashMap Prelude.Text FieldFolder))
updateDataSet_fieldFolders :: (Maybe (HashMap Text FieldFolder)
 -> f (Maybe (HashMap Text FieldFolder)))
-> UpdateDataSet -> f UpdateDataSet
updateDataSet_fieldFolders = (UpdateDataSet -> Maybe (HashMap Text FieldFolder))
-> (UpdateDataSet
    -> Maybe (HashMap Text FieldFolder) -> UpdateDataSet)
-> Lens
     UpdateDataSet
     UpdateDataSet
     (Maybe (HashMap Text FieldFolder))
     (Maybe (HashMap Text FieldFolder))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {Maybe (HashMap Text FieldFolder)
fieldFolders :: Maybe (HashMap Text FieldFolder)
$sel:fieldFolders:UpdateDataSet' :: UpdateDataSet -> Maybe (HashMap Text FieldFolder)
fieldFolders} -> Maybe (HashMap Text FieldFolder)
fieldFolders) (\s :: UpdateDataSet
s@UpdateDataSet' {} Maybe (HashMap Text FieldFolder)
a -> UpdateDataSet
s {$sel:fieldFolders:UpdateDataSet' :: Maybe (HashMap Text FieldFolder)
fieldFolders = Maybe (HashMap Text FieldFolder)
a} :: UpdateDataSet) ((Maybe (HashMap Text FieldFolder)
  -> f (Maybe (HashMap Text FieldFolder)))
 -> UpdateDataSet -> f UpdateDataSet)
-> ((Maybe (HashMap Text FieldFolder)
     -> f (Maybe (HashMap Text FieldFolder)))
    -> Maybe (HashMap Text FieldFolder)
    -> f (Maybe (HashMap Text FieldFolder)))
-> (Maybe (HashMap Text FieldFolder)
    -> f (Maybe (HashMap Text FieldFolder)))
-> UpdateDataSet
-> f UpdateDataSet
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text FieldFolder)
  (HashMap Text FieldFolder)
  (HashMap Text FieldFolder)
  (HashMap Text FieldFolder)
-> Iso
     (Maybe (HashMap Text FieldFolder))
     (Maybe (HashMap Text FieldFolder))
     (Maybe (HashMap Text FieldFolder))
     (Maybe (HashMap Text FieldFolder))
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 AnIso
  (HashMap Text FieldFolder)
  (HashMap Text FieldFolder)
  (HashMap Text FieldFolder)
  (HashMap Text FieldFolder)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Groupings of columns that work together in certain Amazon QuickSight
-- features. Currently, only geospatial hierarchy is supported.
updateDataSet_columnGroups :: Lens.Lens' UpdateDataSet (Prelude.Maybe (Prelude.NonEmpty ColumnGroup))
updateDataSet_columnGroups :: (Maybe (NonEmpty ColumnGroup) -> f (Maybe (NonEmpty ColumnGroup)))
-> UpdateDataSet -> f UpdateDataSet
updateDataSet_columnGroups = (UpdateDataSet -> Maybe (NonEmpty ColumnGroup))
-> (UpdateDataSet -> Maybe (NonEmpty ColumnGroup) -> UpdateDataSet)
-> Lens
     UpdateDataSet
     UpdateDataSet
     (Maybe (NonEmpty ColumnGroup))
     (Maybe (NonEmpty ColumnGroup))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {Maybe (NonEmpty ColumnGroup)
columnGroups :: Maybe (NonEmpty ColumnGroup)
$sel:columnGroups:UpdateDataSet' :: UpdateDataSet -> Maybe (NonEmpty ColumnGroup)
columnGroups} -> Maybe (NonEmpty ColumnGroup)
columnGroups) (\s :: UpdateDataSet
s@UpdateDataSet' {} Maybe (NonEmpty ColumnGroup)
a -> UpdateDataSet
s {$sel:columnGroups:UpdateDataSet' :: Maybe (NonEmpty ColumnGroup)
columnGroups = Maybe (NonEmpty ColumnGroup)
a} :: UpdateDataSet) ((Maybe (NonEmpty ColumnGroup) -> f (Maybe (NonEmpty ColumnGroup)))
 -> UpdateDataSet -> f UpdateDataSet)
-> ((Maybe (NonEmpty ColumnGroup)
     -> f (Maybe (NonEmpty ColumnGroup)))
    -> Maybe (NonEmpty ColumnGroup)
    -> f (Maybe (NonEmpty ColumnGroup)))
-> (Maybe (NonEmpty ColumnGroup)
    -> f (Maybe (NonEmpty ColumnGroup)))
-> UpdateDataSet
-> f UpdateDataSet
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty ColumnGroup)
  (NonEmpty ColumnGroup)
  (NonEmpty ColumnGroup)
  (NonEmpty ColumnGroup)
-> Iso
     (Maybe (NonEmpty ColumnGroup))
     (Maybe (NonEmpty ColumnGroup))
     (Maybe (NonEmpty ColumnGroup))
     (Maybe (NonEmpty ColumnGroup))
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 AnIso
  (NonEmpty ColumnGroup)
  (NonEmpty ColumnGroup)
  (NonEmpty ColumnGroup)
  (NonEmpty ColumnGroup)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Undocumented member.
updateDataSet_dataSetUsageConfiguration :: Lens.Lens' UpdateDataSet (Prelude.Maybe DataSetUsageConfiguration)
updateDataSet_dataSetUsageConfiguration :: (Maybe DataSetUsageConfiguration
 -> f (Maybe DataSetUsageConfiguration))
-> UpdateDataSet -> f UpdateDataSet
updateDataSet_dataSetUsageConfiguration = (UpdateDataSet -> Maybe DataSetUsageConfiguration)
-> (UpdateDataSet
    -> Maybe DataSetUsageConfiguration -> UpdateDataSet)
-> Lens
     UpdateDataSet
     UpdateDataSet
     (Maybe DataSetUsageConfiguration)
     (Maybe DataSetUsageConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {Maybe DataSetUsageConfiguration
dataSetUsageConfiguration :: Maybe DataSetUsageConfiguration
$sel:dataSetUsageConfiguration:UpdateDataSet' :: UpdateDataSet -> Maybe DataSetUsageConfiguration
dataSetUsageConfiguration} -> Maybe DataSetUsageConfiguration
dataSetUsageConfiguration) (\s :: UpdateDataSet
s@UpdateDataSet' {} Maybe DataSetUsageConfiguration
a -> UpdateDataSet
s {$sel:dataSetUsageConfiguration:UpdateDataSet' :: Maybe DataSetUsageConfiguration
dataSetUsageConfiguration = Maybe DataSetUsageConfiguration
a} :: UpdateDataSet)

-- | The configuration of tags on a dataset to set row-level security.
-- Row-level security tags are currently supported for anonymous embedding
-- only.
updateDataSet_rowLevelPermissionTagConfiguration :: Lens.Lens' UpdateDataSet (Prelude.Maybe RowLevelPermissionTagConfiguration)
updateDataSet_rowLevelPermissionTagConfiguration :: (Maybe RowLevelPermissionTagConfiguration
 -> f (Maybe RowLevelPermissionTagConfiguration))
-> UpdateDataSet -> f UpdateDataSet
updateDataSet_rowLevelPermissionTagConfiguration = (UpdateDataSet -> Maybe RowLevelPermissionTagConfiguration)
-> (UpdateDataSet
    -> Maybe RowLevelPermissionTagConfiguration -> UpdateDataSet)
-> Lens
     UpdateDataSet
     UpdateDataSet
     (Maybe RowLevelPermissionTagConfiguration)
     (Maybe RowLevelPermissionTagConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionTagConfiguration :: Maybe RowLevelPermissionTagConfiguration
$sel:rowLevelPermissionTagConfiguration:UpdateDataSet' :: UpdateDataSet -> Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionTagConfiguration} -> Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionTagConfiguration) (\s :: UpdateDataSet
s@UpdateDataSet' {} Maybe RowLevelPermissionTagConfiguration
a -> UpdateDataSet
s {$sel:rowLevelPermissionTagConfiguration:UpdateDataSet' :: Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionTagConfiguration = Maybe RowLevelPermissionTagConfiguration
a} :: UpdateDataSet)

-- | The row-level security configuration for the data you want to create.
updateDataSet_rowLevelPermissionDataSet :: Lens.Lens' UpdateDataSet (Prelude.Maybe RowLevelPermissionDataSet)
updateDataSet_rowLevelPermissionDataSet :: (Maybe RowLevelPermissionDataSet
 -> f (Maybe RowLevelPermissionDataSet))
-> UpdateDataSet -> f UpdateDataSet
updateDataSet_rowLevelPermissionDataSet = (UpdateDataSet -> Maybe RowLevelPermissionDataSet)
-> (UpdateDataSet
    -> Maybe RowLevelPermissionDataSet -> UpdateDataSet)
-> Lens
     UpdateDataSet
     UpdateDataSet
     (Maybe RowLevelPermissionDataSet)
     (Maybe RowLevelPermissionDataSet)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet :: Maybe RowLevelPermissionDataSet
$sel:rowLevelPermissionDataSet:UpdateDataSet' :: UpdateDataSet -> Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet} -> Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet) (\s :: UpdateDataSet
s@UpdateDataSet' {} Maybe RowLevelPermissionDataSet
a -> UpdateDataSet
s {$sel:rowLevelPermissionDataSet:UpdateDataSet' :: Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet = Maybe RowLevelPermissionDataSet
a} :: UpdateDataSet)

-- | A set of one or more definitions of a @ ColumnLevelPermissionRule @.
updateDataSet_columnLevelPermissionRules :: Lens.Lens' UpdateDataSet (Prelude.Maybe (Prelude.NonEmpty ColumnLevelPermissionRule))
updateDataSet_columnLevelPermissionRules :: (Maybe (NonEmpty ColumnLevelPermissionRule)
 -> f (Maybe (NonEmpty ColumnLevelPermissionRule)))
-> UpdateDataSet -> f UpdateDataSet
updateDataSet_columnLevelPermissionRules = (UpdateDataSet -> Maybe (NonEmpty ColumnLevelPermissionRule))
-> (UpdateDataSet
    -> Maybe (NonEmpty ColumnLevelPermissionRule) -> UpdateDataSet)
-> Lens
     UpdateDataSet
     UpdateDataSet
     (Maybe (NonEmpty ColumnLevelPermissionRule))
     (Maybe (NonEmpty ColumnLevelPermissionRule))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules :: Maybe (NonEmpty ColumnLevelPermissionRule)
$sel:columnLevelPermissionRules:UpdateDataSet' :: UpdateDataSet -> Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules} -> Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules) (\s :: UpdateDataSet
s@UpdateDataSet' {} Maybe (NonEmpty ColumnLevelPermissionRule)
a -> UpdateDataSet
s {$sel:columnLevelPermissionRules:UpdateDataSet' :: Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules = Maybe (NonEmpty ColumnLevelPermissionRule)
a} :: UpdateDataSet) ((Maybe (NonEmpty ColumnLevelPermissionRule)
  -> f (Maybe (NonEmpty ColumnLevelPermissionRule)))
 -> UpdateDataSet -> f UpdateDataSet)
-> ((Maybe (NonEmpty ColumnLevelPermissionRule)
     -> f (Maybe (NonEmpty ColumnLevelPermissionRule)))
    -> Maybe (NonEmpty ColumnLevelPermissionRule)
    -> f (Maybe (NonEmpty ColumnLevelPermissionRule)))
-> (Maybe (NonEmpty ColumnLevelPermissionRule)
    -> f (Maybe (NonEmpty ColumnLevelPermissionRule)))
-> UpdateDataSet
-> f UpdateDataSet
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty ColumnLevelPermissionRule)
  (NonEmpty ColumnLevelPermissionRule)
  (NonEmpty ColumnLevelPermissionRule)
  (NonEmpty ColumnLevelPermissionRule)
-> Iso
     (Maybe (NonEmpty ColumnLevelPermissionRule))
     (Maybe (NonEmpty ColumnLevelPermissionRule))
     (Maybe (NonEmpty ColumnLevelPermissionRule))
     (Maybe (NonEmpty ColumnLevelPermissionRule))
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 AnIso
  (NonEmpty ColumnLevelPermissionRule)
  (NonEmpty ColumnLevelPermissionRule)
  (NonEmpty ColumnLevelPermissionRule)
  (NonEmpty ColumnLevelPermissionRule)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Configures the combination and transformation of the data from the
-- physical tables.
updateDataSet_logicalTableMap :: Lens.Lens' UpdateDataSet (Prelude.Maybe (Prelude.HashMap Prelude.Text LogicalTable))
updateDataSet_logicalTableMap :: (Maybe (HashMap Text LogicalTable)
 -> f (Maybe (HashMap Text LogicalTable)))
-> UpdateDataSet -> f UpdateDataSet
updateDataSet_logicalTableMap = (UpdateDataSet -> Maybe (HashMap Text LogicalTable))
-> (UpdateDataSet
    -> Maybe (HashMap Text LogicalTable) -> UpdateDataSet)
-> Lens
     UpdateDataSet
     UpdateDataSet
     (Maybe (HashMap Text LogicalTable))
     (Maybe (HashMap Text LogicalTable))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {Maybe (HashMap Text LogicalTable)
logicalTableMap :: Maybe (HashMap Text LogicalTable)
$sel:logicalTableMap:UpdateDataSet' :: UpdateDataSet -> Maybe (HashMap Text LogicalTable)
logicalTableMap} -> Maybe (HashMap Text LogicalTable)
logicalTableMap) (\s :: UpdateDataSet
s@UpdateDataSet' {} Maybe (HashMap Text LogicalTable)
a -> UpdateDataSet
s {$sel:logicalTableMap:UpdateDataSet' :: Maybe (HashMap Text LogicalTable)
logicalTableMap = Maybe (HashMap Text LogicalTable)
a} :: UpdateDataSet) ((Maybe (HashMap Text LogicalTable)
  -> f (Maybe (HashMap Text LogicalTable)))
 -> UpdateDataSet -> f UpdateDataSet)
-> ((Maybe (HashMap Text LogicalTable)
     -> f (Maybe (HashMap Text LogicalTable)))
    -> Maybe (HashMap Text LogicalTable)
    -> f (Maybe (HashMap Text LogicalTable)))
-> (Maybe (HashMap Text LogicalTable)
    -> f (Maybe (HashMap Text LogicalTable)))
-> UpdateDataSet
-> f UpdateDataSet
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text LogicalTable)
  (HashMap Text LogicalTable)
  (HashMap Text LogicalTable)
  (HashMap Text LogicalTable)
-> Iso
     (Maybe (HashMap Text LogicalTable))
     (Maybe (HashMap Text LogicalTable))
     (Maybe (HashMap Text LogicalTable))
     (Maybe (HashMap Text LogicalTable))
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 AnIso
  (HashMap Text LogicalTable)
  (HashMap Text LogicalTable)
  (HashMap Text LogicalTable)
  (HashMap Text LogicalTable)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon Web Services account ID.
updateDataSet_awsAccountId :: Lens.Lens' UpdateDataSet Prelude.Text
updateDataSet_awsAccountId :: (Text -> f Text) -> UpdateDataSet -> f UpdateDataSet
updateDataSet_awsAccountId = (UpdateDataSet -> Text)
-> (UpdateDataSet -> Text -> UpdateDataSet)
-> Lens UpdateDataSet UpdateDataSet Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {Text
awsAccountId :: Text
$sel:awsAccountId:UpdateDataSet' :: UpdateDataSet -> Text
awsAccountId} -> Text
awsAccountId) (\s :: UpdateDataSet
s@UpdateDataSet' {} Text
a -> UpdateDataSet
s {$sel:awsAccountId:UpdateDataSet' :: Text
awsAccountId = Text
a} :: UpdateDataSet)

-- | The ID for the dataset that you want to update. This ID is unique per
-- Amazon Web Services Region for each Amazon Web Services account.
updateDataSet_dataSetId :: Lens.Lens' UpdateDataSet Prelude.Text
updateDataSet_dataSetId :: (Text -> f Text) -> UpdateDataSet -> f UpdateDataSet
updateDataSet_dataSetId = (UpdateDataSet -> Text)
-> (UpdateDataSet -> Text -> UpdateDataSet)
-> Lens UpdateDataSet UpdateDataSet Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {Text
dataSetId :: Text
$sel:dataSetId:UpdateDataSet' :: UpdateDataSet -> Text
dataSetId} -> Text
dataSetId) (\s :: UpdateDataSet
s@UpdateDataSet' {} Text
a -> UpdateDataSet
s {$sel:dataSetId:UpdateDataSet' :: Text
dataSetId = Text
a} :: UpdateDataSet)

-- | The display name for the dataset.
updateDataSet_name :: Lens.Lens' UpdateDataSet Prelude.Text
updateDataSet_name :: (Text -> f Text) -> UpdateDataSet -> f UpdateDataSet
updateDataSet_name = (UpdateDataSet -> Text)
-> (UpdateDataSet -> Text -> UpdateDataSet)
-> Lens UpdateDataSet UpdateDataSet Text Text
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {Text
name :: Text
$sel:name:UpdateDataSet' :: UpdateDataSet -> Text
name} -> Text
name) (\s :: UpdateDataSet
s@UpdateDataSet' {} Text
a -> UpdateDataSet
s {$sel:name:UpdateDataSet' :: Text
name = Text
a} :: UpdateDataSet)

-- | Declares the physical tables that are available in the underlying data
-- sources.
updateDataSet_physicalTableMap :: Lens.Lens' UpdateDataSet (Prelude.HashMap Prelude.Text PhysicalTable)
updateDataSet_physicalTableMap :: (HashMap Text PhysicalTable -> f (HashMap Text PhysicalTable))
-> UpdateDataSet -> f UpdateDataSet
updateDataSet_physicalTableMap = (UpdateDataSet -> HashMap Text PhysicalTable)
-> (UpdateDataSet -> HashMap Text PhysicalTable -> UpdateDataSet)
-> Lens
     UpdateDataSet
     UpdateDataSet
     (HashMap Text PhysicalTable)
     (HashMap Text PhysicalTable)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {HashMap Text PhysicalTable
physicalTableMap :: HashMap Text PhysicalTable
$sel:physicalTableMap:UpdateDataSet' :: UpdateDataSet -> HashMap Text PhysicalTable
physicalTableMap} -> HashMap Text PhysicalTable
physicalTableMap) (\s :: UpdateDataSet
s@UpdateDataSet' {} HashMap Text PhysicalTable
a -> UpdateDataSet
s {$sel:physicalTableMap:UpdateDataSet' :: HashMap Text PhysicalTable
physicalTableMap = HashMap Text PhysicalTable
a} :: UpdateDataSet) ((HashMap Text PhysicalTable -> f (HashMap Text PhysicalTable))
 -> UpdateDataSet -> f UpdateDataSet)
-> ((HashMap Text PhysicalTable -> f (HashMap Text PhysicalTable))
    -> HashMap Text PhysicalTable -> f (HashMap Text PhysicalTable))
-> (HashMap Text PhysicalTable -> f (HashMap Text PhysicalTable))
-> UpdateDataSet
-> f UpdateDataSet
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. (HashMap Text PhysicalTable -> f (HashMap Text PhysicalTable))
-> HashMap Text PhysicalTable -> f (HashMap Text PhysicalTable)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Indicates whether you want to import the data into SPICE.
updateDataSet_importMode :: Lens.Lens' UpdateDataSet DataSetImportMode
updateDataSet_importMode :: (DataSetImportMode -> f DataSetImportMode)
-> UpdateDataSet -> f UpdateDataSet
updateDataSet_importMode = (UpdateDataSet -> DataSetImportMode)
-> (UpdateDataSet -> DataSetImportMode -> UpdateDataSet)
-> Lens
     UpdateDataSet UpdateDataSet DataSetImportMode DataSetImportMode
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSet' {DataSetImportMode
importMode :: DataSetImportMode
$sel:importMode:UpdateDataSet' :: UpdateDataSet -> DataSetImportMode
importMode} -> DataSetImportMode
importMode) (\s :: UpdateDataSet
s@UpdateDataSet' {} DataSetImportMode
a -> UpdateDataSet
s {$sel:importMode:UpdateDataSet' :: DataSetImportMode
importMode = DataSetImportMode
a} :: UpdateDataSet)

instance Core.AWSRequest UpdateDataSet where
  type
    AWSResponse UpdateDataSet =
      UpdateDataSetResponse
  request :: UpdateDataSet -> Request UpdateDataSet
request = Service -> UpdateDataSet -> Request UpdateDataSet
forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.putJSON Service
defaultService
  response :: Logger
-> Service
-> Proxy UpdateDataSet
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse UpdateDataSet)))
response =
    (Int
 -> ResponseHeaders
 -> Object
 -> Either String (AWSResponse UpdateDataSet))
-> Logger
-> Service
-> Proxy UpdateDataSet
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse UpdateDataSet)))
forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> Logger
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Int
-> UpdateDataSetResponse
UpdateDataSetResponse'
            (Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Int
 -> UpdateDataSetResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Int
      -> UpdateDataSetResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"RequestId")
            Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Int
   -> UpdateDataSetResponse)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text -> Maybe Text -> Int -> UpdateDataSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"IngestionArn")
            Either
  String
  (Maybe Text
   -> Maybe Text -> Maybe Text -> Int -> UpdateDataSetResponse)
-> Either String (Maybe Text)
-> Either
     String (Maybe Text -> Maybe Text -> Int -> UpdateDataSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"Arn")
            Either
  String (Maybe Text -> Maybe Text -> Int -> UpdateDataSetResponse)
-> Either String (Maybe Text)
-> Either String (Maybe Text -> Int -> UpdateDataSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"IngestionId")
            Either String (Maybe Text -> Int -> UpdateDataSetResponse)
-> Either String (Maybe Text)
-> Either String (Int -> UpdateDataSetResponse)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Either String (Maybe Text)
forall a. FromJSON a => Object -> Text -> Either String (Maybe a)
Core..?> Text
"DataSetId")
            Either String (Int -> UpdateDataSetResponse)
-> Either String Int -> Either String UpdateDataSetResponse
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Int -> Either String Int
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (Int -> Int
forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable UpdateDataSet

instance Prelude.NFData UpdateDataSet

instance Core.ToHeaders UpdateDataSet where
  toHeaders :: UpdateDataSet -> ResponseHeaders
toHeaders =
    ResponseHeaders -> UpdateDataSet -> ResponseHeaders
forall a b. a -> b -> a
Prelude.const
      ( [ResponseHeaders] -> ResponseHeaders
forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"Content-Type"
              HeaderName -> ByteString -> ResponseHeaders
forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Core.=# ( ByteString
"application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Core.ToJSON UpdateDataSet where
  toJSON :: UpdateDataSet -> Value
toJSON UpdateDataSet' {Maybe (NonEmpty ColumnLevelPermissionRule)
Maybe (NonEmpty ColumnGroup)
Maybe (HashMap Text FieldFolder)
Maybe (HashMap Text LogicalTable)
Maybe DataSetUsageConfiguration
Maybe RowLevelPermissionTagConfiguration
Maybe RowLevelPermissionDataSet
Text
HashMap Text PhysicalTable
DataSetImportMode
importMode :: DataSetImportMode
physicalTableMap :: HashMap Text PhysicalTable
name :: Text
dataSetId :: Text
awsAccountId :: Text
logicalTableMap :: Maybe (HashMap Text LogicalTable)
columnLevelPermissionRules :: Maybe (NonEmpty ColumnLevelPermissionRule)
rowLevelPermissionDataSet :: Maybe RowLevelPermissionDataSet
rowLevelPermissionTagConfiguration :: Maybe RowLevelPermissionTagConfiguration
dataSetUsageConfiguration :: Maybe DataSetUsageConfiguration
columnGroups :: Maybe (NonEmpty ColumnGroup)
fieldFolders :: Maybe (HashMap Text FieldFolder)
$sel:importMode:UpdateDataSet' :: UpdateDataSet -> DataSetImportMode
$sel:physicalTableMap:UpdateDataSet' :: UpdateDataSet -> HashMap Text PhysicalTable
$sel:name:UpdateDataSet' :: UpdateDataSet -> Text
$sel:dataSetId:UpdateDataSet' :: UpdateDataSet -> Text
$sel:awsAccountId:UpdateDataSet' :: UpdateDataSet -> Text
$sel:logicalTableMap:UpdateDataSet' :: UpdateDataSet -> Maybe (HashMap Text LogicalTable)
$sel:columnLevelPermissionRules:UpdateDataSet' :: UpdateDataSet -> Maybe (NonEmpty ColumnLevelPermissionRule)
$sel:rowLevelPermissionDataSet:UpdateDataSet' :: UpdateDataSet -> Maybe RowLevelPermissionDataSet
$sel:rowLevelPermissionTagConfiguration:UpdateDataSet' :: UpdateDataSet -> Maybe RowLevelPermissionTagConfiguration
$sel:dataSetUsageConfiguration:UpdateDataSet' :: UpdateDataSet -> Maybe DataSetUsageConfiguration
$sel:columnGroups:UpdateDataSet' :: UpdateDataSet -> Maybe (NonEmpty ColumnGroup)
$sel:fieldFolders:UpdateDataSet' :: UpdateDataSet -> Maybe (HashMap Text FieldFolder)
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"FieldFolders" Text -> HashMap Text FieldFolder -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (HashMap Text FieldFolder -> Pair)
-> Maybe (HashMap Text FieldFolder) -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text FieldFolder)
fieldFolders,
            (Text
"ColumnGroups" Text -> NonEmpty ColumnGroup -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (NonEmpty ColumnGroup -> Pair)
-> Maybe (NonEmpty ColumnGroup) -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty ColumnGroup)
columnGroups,
            (Text
"DataSetUsageConfiguration" Text -> DataSetUsageConfiguration -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (DataSetUsageConfiguration -> Pair)
-> Maybe DataSetUsageConfiguration -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe DataSetUsageConfiguration
dataSetUsageConfiguration,
            (Text
"RowLevelPermissionTagConfiguration" Text -> RowLevelPermissionTagConfiguration -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (RowLevelPermissionTagConfiguration -> Pair)
-> Maybe RowLevelPermissionTagConfiguration -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionTagConfiguration,
            (Text
"RowLevelPermissionDataSet" Text -> RowLevelPermissionDataSet -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (RowLevelPermissionDataSet -> Pair)
-> Maybe RowLevelPermissionDataSet -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet,
            (Text
"ColumnLevelPermissionRules" Text -> NonEmpty ColumnLevelPermissionRule -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (NonEmpty ColumnLevelPermissionRule -> Pair)
-> Maybe (NonEmpty ColumnLevelPermissionRule) -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules,
            (Text
"LogicalTableMap" Text -> HashMap Text LogicalTable -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (HashMap Text LogicalTable -> Pair)
-> Maybe (HashMap Text LogicalTable) -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (HashMap Text LogicalTable)
logicalTableMap,
            Pair -> Maybe Pair
forall a. a -> Maybe a
Prelude.Just (Text
"Name" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..= Text
name),
            Pair -> Maybe Pair
forall a. a -> Maybe a
Prelude.Just
              (Text
"PhysicalTableMap" Text -> HashMap Text PhysicalTable -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..= HashMap Text PhysicalTable
physicalTableMap),
            Pair -> Maybe Pair
forall a. a -> Maybe a
Prelude.Just (Text
"ImportMode" Text -> DataSetImportMode -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..= DataSetImportMode
importMode)
          ]
      )

instance Core.ToPath UpdateDataSet where
  toPath :: UpdateDataSet -> ByteString
toPath UpdateDataSet' {Maybe (NonEmpty ColumnLevelPermissionRule)
Maybe (NonEmpty ColumnGroup)
Maybe (HashMap Text FieldFolder)
Maybe (HashMap Text LogicalTable)
Maybe DataSetUsageConfiguration
Maybe RowLevelPermissionTagConfiguration
Maybe RowLevelPermissionDataSet
Text
HashMap Text PhysicalTable
DataSetImportMode
importMode :: DataSetImportMode
physicalTableMap :: HashMap Text PhysicalTable
name :: Text
dataSetId :: Text
awsAccountId :: Text
logicalTableMap :: Maybe (HashMap Text LogicalTable)
columnLevelPermissionRules :: Maybe (NonEmpty ColumnLevelPermissionRule)
rowLevelPermissionDataSet :: Maybe RowLevelPermissionDataSet
rowLevelPermissionTagConfiguration :: Maybe RowLevelPermissionTagConfiguration
dataSetUsageConfiguration :: Maybe DataSetUsageConfiguration
columnGroups :: Maybe (NonEmpty ColumnGroup)
fieldFolders :: Maybe (HashMap Text FieldFolder)
$sel:importMode:UpdateDataSet' :: UpdateDataSet -> DataSetImportMode
$sel:physicalTableMap:UpdateDataSet' :: UpdateDataSet -> HashMap Text PhysicalTable
$sel:name:UpdateDataSet' :: UpdateDataSet -> Text
$sel:dataSetId:UpdateDataSet' :: UpdateDataSet -> Text
$sel:awsAccountId:UpdateDataSet' :: UpdateDataSet -> Text
$sel:logicalTableMap:UpdateDataSet' :: UpdateDataSet -> Maybe (HashMap Text LogicalTable)
$sel:columnLevelPermissionRules:UpdateDataSet' :: UpdateDataSet -> Maybe (NonEmpty ColumnLevelPermissionRule)
$sel:rowLevelPermissionDataSet:UpdateDataSet' :: UpdateDataSet -> Maybe RowLevelPermissionDataSet
$sel:rowLevelPermissionTagConfiguration:UpdateDataSet' :: UpdateDataSet -> Maybe RowLevelPermissionTagConfiguration
$sel:dataSetUsageConfiguration:UpdateDataSet' :: UpdateDataSet -> Maybe DataSetUsageConfiguration
$sel:columnGroups:UpdateDataSet' :: UpdateDataSet -> Maybe (NonEmpty ColumnGroup)
$sel:fieldFolders:UpdateDataSet' :: UpdateDataSet -> Maybe (HashMap Text FieldFolder)
..} =
    [ByteString] -> ByteString
forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/accounts/",
        Text -> ByteString
forall a. ToByteString a => a -> ByteString
Core.toBS Text
awsAccountId,
        ByteString
"/data-sets/",
        Text -> ByteString
forall a. ToByteString a => a -> ByteString
Core.toBS Text
dataSetId
      ]

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

-- | /See:/ 'newUpdateDataSetResponse' smart constructor.
data UpdateDataSetResponse = UpdateDataSetResponse'
  { -- | The Amazon Web Services request ID for this operation.
    UpdateDataSetResponse -> Maybe Text
requestId :: Prelude.Maybe Prelude.Text,
    -- | The ARN for the ingestion, which is triggered as a result of dataset
    -- creation if the import mode is SPICE.
    UpdateDataSetResponse -> Maybe Text
ingestionArn :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the dataset.
    UpdateDataSetResponse -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The ID of the ingestion, which is triggered as a result of dataset
    -- creation if the import mode is SPICE.
    UpdateDataSetResponse -> Maybe Text
ingestionId :: Prelude.Maybe Prelude.Text,
    -- | The ID for the dataset that you want to create. This ID is unique per
    -- Amazon Web Services Region for each Amazon Web Services account.
    UpdateDataSetResponse -> Maybe Text
dataSetId :: Prelude.Maybe Prelude.Text,
    -- | The HTTP status of the request.
    UpdateDataSetResponse -> Int
status :: Prelude.Int
  }
  deriving (UpdateDataSetResponse -> UpdateDataSetResponse -> Bool
(UpdateDataSetResponse -> UpdateDataSetResponse -> Bool)
-> (UpdateDataSetResponse -> UpdateDataSetResponse -> Bool)
-> Eq UpdateDataSetResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateDataSetResponse -> UpdateDataSetResponse -> Bool
$c/= :: UpdateDataSetResponse -> UpdateDataSetResponse -> Bool
== :: UpdateDataSetResponse -> UpdateDataSetResponse -> Bool
$c== :: UpdateDataSetResponse -> UpdateDataSetResponse -> Bool
Prelude.Eq, ReadPrec [UpdateDataSetResponse]
ReadPrec UpdateDataSetResponse
Int -> ReadS UpdateDataSetResponse
ReadS [UpdateDataSetResponse]
(Int -> ReadS UpdateDataSetResponse)
-> ReadS [UpdateDataSetResponse]
-> ReadPrec UpdateDataSetResponse
-> ReadPrec [UpdateDataSetResponse]
-> Read UpdateDataSetResponse
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateDataSetResponse]
$creadListPrec :: ReadPrec [UpdateDataSetResponse]
readPrec :: ReadPrec UpdateDataSetResponse
$creadPrec :: ReadPrec UpdateDataSetResponse
readList :: ReadS [UpdateDataSetResponse]
$creadList :: ReadS [UpdateDataSetResponse]
readsPrec :: Int -> ReadS UpdateDataSetResponse
$creadsPrec :: Int -> ReadS UpdateDataSetResponse
Prelude.Read, Int -> UpdateDataSetResponse -> ShowS
[UpdateDataSetResponse] -> ShowS
UpdateDataSetResponse -> String
(Int -> UpdateDataSetResponse -> ShowS)
-> (UpdateDataSetResponse -> String)
-> ([UpdateDataSetResponse] -> ShowS)
-> Show UpdateDataSetResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateDataSetResponse] -> ShowS
$cshowList :: [UpdateDataSetResponse] -> ShowS
show :: UpdateDataSetResponse -> String
$cshow :: UpdateDataSetResponse -> String
showsPrec :: Int -> UpdateDataSetResponse -> ShowS
$cshowsPrec :: Int -> UpdateDataSetResponse -> ShowS
Prelude.Show, (forall x. UpdateDataSetResponse -> Rep UpdateDataSetResponse x)
-> (forall x. Rep UpdateDataSetResponse x -> UpdateDataSetResponse)
-> Generic UpdateDataSetResponse
forall x. Rep UpdateDataSetResponse x -> UpdateDataSetResponse
forall x. UpdateDataSetResponse -> Rep UpdateDataSetResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep UpdateDataSetResponse x -> UpdateDataSetResponse
$cfrom :: forall x. UpdateDataSetResponse -> Rep UpdateDataSetResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateDataSetResponse' 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:
--
-- 'requestId', 'updateDataSetResponse_requestId' - The Amazon Web Services request ID for this operation.
--
-- 'ingestionArn', 'updateDataSetResponse_ingestionArn' - The ARN for the ingestion, which is triggered as a result of dataset
-- creation if the import mode is SPICE.
--
-- 'arn', 'updateDataSetResponse_arn' - The Amazon Resource Name (ARN) of the dataset.
--
-- 'ingestionId', 'updateDataSetResponse_ingestionId' - The ID of the ingestion, which is triggered as a result of dataset
-- creation if the import mode is SPICE.
--
-- 'dataSetId', 'updateDataSetResponse_dataSetId' - The ID for the dataset that you want to create. This ID is unique per
-- Amazon Web Services Region for each Amazon Web Services account.
--
-- 'status', 'updateDataSetResponse_status' - The HTTP status of the request.
newUpdateDataSetResponse ::
  -- | 'status'
  Prelude.Int ->
  UpdateDataSetResponse
newUpdateDataSetResponse :: Int -> UpdateDataSetResponse
newUpdateDataSetResponse Int
pStatus_ =
  UpdateDataSetResponse' :: Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Int
-> UpdateDataSetResponse
UpdateDataSetResponse'
    { $sel:requestId:UpdateDataSetResponse' :: Maybe Text
requestId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:ingestionArn:UpdateDataSetResponse' :: Maybe Text
ingestionArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:arn:UpdateDataSetResponse' :: Maybe Text
arn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:ingestionId:UpdateDataSetResponse' :: Maybe Text
ingestionId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:dataSetId:UpdateDataSetResponse' :: Maybe Text
dataSetId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:status:UpdateDataSetResponse' :: Int
status = Int
pStatus_
    }

-- | The Amazon Web Services request ID for this operation.
updateDataSetResponse_requestId :: Lens.Lens' UpdateDataSetResponse (Prelude.Maybe Prelude.Text)
updateDataSetResponse_requestId :: (Maybe Text -> f (Maybe Text))
-> UpdateDataSetResponse -> f UpdateDataSetResponse
updateDataSetResponse_requestId = (UpdateDataSetResponse -> Maybe Text)
-> (UpdateDataSetResponse -> Maybe Text -> UpdateDataSetResponse)
-> Lens
     UpdateDataSetResponse
     UpdateDataSetResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSetResponse' {Maybe Text
requestId :: Maybe Text
$sel:requestId:UpdateDataSetResponse' :: UpdateDataSetResponse -> Maybe Text
requestId} -> Maybe Text
requestId) (\s :: UpdateDataSetResponse
s@UpdateDataSetResponse' {} Maybe Text
a -> UpdateDataSetResponse
s {$sel:requestId:UpdateDataSetResponse' :: Maybe Text
requestId = Maybe Text
a} :: UpdateDataSetResponse)

-- | The ARN for the ingestion, which is triggered as a result of dataset
-- creation if the import mode is SPICE.
updateDataSetResponse_ingestionArn :: Lens.Lens' UpdateDataSetResponse (Prelude.Maybe Prelude.Text)
updateDataSetResponse_ingestionArn :: (Maybe Text -> f (Maybe Text))
-> UpdateDataSetResponse -> f UpdateDataSetResponse
updateDataSetResponse_ingestionArn = (UpdateDataSetResponse -> Maybe Text)
-> (UpdateDataSetResponse -> Maybe Text -> UpdateDataSetResponse)
-> Lens
     UpdateDataSetResponse
     UpdateDataSetResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSetResponse' {Maybe Text
ingestionArn :: Maybe Text
$sel:ingestionArn:UpdateDataSetResponse' :: UpdateDataSetResponse -> Maybe Text
ingestionArn} -> Maybe Text
ingestionArn) (\s :: UpdateDataSetResponse
s@UpdateDataSetResponse' {} Maybe Text
a -> UpdateDataSetResponse
s {$sel:ingestionArn:UpdateDataSetResponse' :: Maybe Text
ingestionArn = Maybe Text
a} :: UpdateDataSetResponse)

-- | The Amazon Resource Name (ARN) of the dataset.
updateDataSetResponse_arn :: Lens.Lens' UpdateDataSetResponse (Prelude.Maybe Prelude.Text)
updateDataSetResponse_arn :: (Maybe Text -> f (Maybe Text))
-> UpdateDataSetResponse -> f UpdateDataSetResponse
updateDataSetResponse_arn = (UpdateDataSetResponse -> Maybe Text)
-> (UpdateDataSetResponse -> Maybe Text -> UpdateDataSetResponse)
-> Lens
     UpdateDataSetResponse
     UpdateDataSetResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSetResponse' {Maybe Text
arn :: Maybe Text
$sel:arn:UpdateDataSetResponse' :: UpdateDataSetResponse -> Maybe Text
arn} -> Maybe Text
arn) (\s :: UpdateDataSetResponse
s@UpdateDataSetResponse' {} Maybe Text
a -> UpdateDataSetResponse
s {$sel:arn:UpdateDataSetResponse' :: Maybe Text
arn = Maybe Text
a} :: UpdateDataSetResponse)

-- | The ID of the ingestion, which is triggered as a result of dataset
-- creation if the import mode is SPICE.
updateDataSetResponse_ingestionId :: Lens.Lens' UpdateDataSetResponse (Prelude.Maybe Prelude.Text)
updateDataSetResponse_ingestionId :: (Maybe Text -> f (Maybe Text))
-> UpdateDataSetResponse -> f UpdateDataSetResponse
updateDataSetResponse_ingestionId = (UpdateDataSetResponse -> Maybe Text)
-> (UpdateDataSetResponse -> Maybe Text -> UpdateDataSetResponse)
-> Lens
     UpdateDataSetResponse
     UpdateDataSetResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSetResponse' {Maybe Text
ingestionId :: Maybe Text
$sel:ingestionId:UpdateDataSetResponse' :: UpdateDataSetResponse -> Maybe Text
ingestionId} -> Maybe Text
ingestionId) (\s :: UpdateDataSetResponse
s@UpdateDataSetResponse' {} Maybe Text
a -> UpdateDataSetResponse
s {$sel:ingestionId:UpdateDataSetResponse' :: Maybe Text
ingestionId = Maybe Text
a} :: UpdateDataSetResponse)

-- | The ID for the dataset that you want to create. This ID is unique per
-- Amazon Web Services Region for each Amazon Web Services account.
updateDataSetResponse_dataSetId :: Lens.Lens' UpdateDataSetResponse (Prelude.Maybe Prelude.Text)
updateDataSetResponse_dataSetId :: (Maybe Text -> f (Maybe Text))
-> UpdateDataSetResponse -> f UpdateDataSetResponse
updateDataSetResponse_dataSetId = (UpdateDataSetResponse -> Maybe Text)
-> (UpdateDataSetResponse -> Maybe Text -> UpdateDataSetResponse)
-> Lens
     UpdateDataSetResponse
     UpdateDataSetResponse
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSetResponse' {Maybe Text
dataSetId :: Maybe Text
$sel:dataSetId:UpdateDataSetResponse' :: UpdateDataSetResponse -> Maybe Text
dataSetId} -> Maybe Text
dataSetId) (\s :: UpdateDataSetResponse
s@UpdateDataSetResponse' {} Maybe Text
a -> UpdateDataSetResponse
s {$sel:dataSetId:UpdateDataSetResponse' :: Maybe Text
dataSetId = Maybe Text
a} :: UpdateDataSetResponse)

-- | The HTTP status of the request.
updateDataSetResponse_status :: Lens.Lens' UpdateDataSetResponse Prelude.Int
updateDataSetResponse_status :: (Int -> f Int) -> UpdateDataSetResponse -> f UpdateDataSetResponse
updateDataSetResponse_status = (UpdateDataSetResponse -> Int)
-> (UpdateDataSetResponse -> Int -> UpdateDataSetResponse)
-> Lens UpdateDataSetResponse UpdateDataSetResponse Int Int
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateDataSetResponse' {Int
status :: Int
$sel:status:UpdateDataSetResponse' :: UpdateDataSetResponse -> Int
status} -> Int
status) (\s :: UpdateDataSetResponse
s@UpdateDataSetResponse' {} Int
a -> UpdateDataSetResponse
s {$sel:status:UpdateDataSetResponse' :: Int
status = Int
a} :: UpdateDataSetResponse)

instance Prelude.NFData UpdateDataSetResponse