{-# 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.CreateDataSet
-- 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 dataset. This operation doesn\'t support datasets that include
-- uploaded files as a source.
module Amazonka.QuickSight.CreateDataSet
  ( -- * Creating a Request
    CreateDataSet (..),
    newCreateDataSet,

    -- * Request Lenses
    createDataSet_columnGroups,
    createDataSet_columnLevelPermissionRules,
    createDataSet_dataSetUsageConfiguration,
    createDataSet_fieldFolders,
    createDataSet_logicalTableMap,
    createDataSet_permissions,
    createDataSet_rowLevelPermissionDataSet,
    createDataSet_rowLevelPermissionTagConfiguration,
    createDataSet_tags,
    createDataSet_awsAccountId,
    createDataSet_dataSetId,
    createDataSet_name,
    createDataSet_physicalTableMap,
    createDataSet_importMode,

    -- * Destructuring the Response
    CreateDataSetResponse (..),
    newCreateDataSetResponse,

    -- * Response Lenses
    createDataSetResponse_arn,
    createDataSetResponse_dataSetId,
    createDataSetResponse_ingestionArn,
    createDataSetResponse_ingestionId,
    createDataSetResponse_requestId,
    createDataSetResponse_status,
  )
where

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

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

-- |
-- Create a value of 'CreateDataSet' 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:
--
-- 'columnGroups', 'createDataSet_columnGroups' - Groupings of columns that work together in certain Amazon QuickSight
-- features. Currently, only geospatial hierarchy is supported.
--
-- 'columnLevelPermissionRules', 'createDataSet_columnLevelPermissionRules' - A set of one or more definitions of a
-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html ColumnLevelPermissionRule>@ @.
--
-- 'dataSetUsageConfiguration', 'createDataSet_dataSetUsageConfiguration' - Undocumented member.
--
-- 'fieldFolders', 'createDataSet_fieldFolders' - The folder that contains fields and nested subfolders for your dataset.
--
-- 'logicalTableMap', 'createDataSet_logicalTableMap' - Configures the combination and transformation of the data from the
-- physical tables.
--
-- 'permissions', 'createDataSet_permissions' - A list of resource permissions on the dataset.
--
-- 'rowLevelPermissionDataSet', 'createDataSet_rowLevelPermissionDataSet' - The row-level security configuration for the data that you want to
-- create.
--
-- 'rowLevelPermissionTagConfiguration', 'createDataSet_rowLevelPermissionTagConfiguration' - The configuration of tags on a dataset to set row-level security.
-- Row-level security tags are currently supported for anonymous embedding
-- only.
--
-- 'tags', 'createDataSet_tags' - Contains a map of the key-value pairs for the resource tag or tags
-- assigned to the dataset.
--
-- 'awsAccountId', 'createDataSet_awsAccountId' - The Amazon Web Services account ID.
--
-- 'dataSetId', 'createDataSet_dataSetId' - An ID for the dataset that you want to create. This ID is unique per
-- Amazon Web Services Region for each Amazon Web Services account.
--
-- 'name', 'createDataSet_name' - The display name for the dataset.
--
-- 'physicalTableMap', 'createDataSet_physicalTableMap' - Declares the physical tables that are available in the underlying data
-- sources.
--
-- 'importMode', 'createDataSet_importMode' - Indicates whether you want to import the data into SPICE.
newCreateDataSet ::
  -- | 'awsAccountId'
  Prelude.Text ->
  -- | 'dataSetId'
  Prelude.Text ->
  -- | 'name'
  Prelude.Text ->
  -- | 'importMode'
  DataSetImportMode ->
  CreateDataSet
newCreateDataSet :: Text -> Text -> Text -> DataSetImportMode -> CreateDataSet
newCreateDataSet
  Text
pAwsAccountId_
  Text
pDataSetId_
  Text
pName_
  DataSetImportMode
pImportMode_ =
    CreateDataSet'
      { $sel:columnGroups:CreateDataSet' :: Maybe (NonEmpty ColumnGroup)
columnGroups = forall a. Maybe a
Prelude.Nothing,
        $sel:columnLevelPermissionRules:CreateDataSet' :: Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules = forall a. Maybe a
Prelude.Nothing,
        $sel:dataSetUsageConfiguration:CreateDataSet' :: Maybe DataSetUsageConfiguration
dataSetUsageConfiguration = forall a. Maybe a
Prelude.Nothing,
        $sel:fieldFolders:CreateDataSet' :: Maybe (HashMap Text FieldFolder)
fieldFolders = forall a. Maybe a
Prelude.Nothing,
        $sel:logicalTableMap:CreateDataSet' :: Maybe (HashMap Text LogicalTable)
logicalTableMap = forall a. Maybe a
Prelude.Nothing,
        $sel:permissions:CreateDataSet' :: Maybe (NonEmpty ResourcePermission)
permissions = forall a. Maybe a
Prelude.Nothing,
        $sel:rowLevelPermissionDataSet:CreateDataSet' :: Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet = forall a. Maybe a
Prelude.Nothing,
        $sel:rowLevelPermissionTagConfiguration:CreateDataSet' :: Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionTagConfiguration = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateDataSet' :: Maybe (NonEmpty Tag)
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:awsAccountId:CreateDataSet' :: Text
awsAccountId = Text
pAwsAccountId_,
        $sel:dataSetId:CreateDataSet' :: Text
dataSetId = Text
pDataSetId_,
        $sel:name:CreateDataSet' :: Text
name = Text
pName_,
        $sel:physicalTableMap:CreateDataSet' :: HashMap Text PhysicalTable
physicalTableMap = forall a. Monoid a => a
Prelude.mempty,
        $sel:importMode:CreateDataSet' :: DataSetImportMode
importMode = DataSetImportMode
pImportMode_
      }

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

-- | A set of one or more definitions of a
-- @ @<https://docs.aws.amazon.com/quicksight/latest/APIReference/API_ColumnLevelPermissionRule.html ColumnLevelPermissionRule>@ @.
createDataSet_columnLevelPermissionRules :: Lens.Lens' CreateDataSet (Prelude.Maybe (Prelude.NonEmpty ColumnLevelPermissionRule))
createDataSet_columnLevelPermissionRules :: Lens' CreateDataSet (Maybe (NonEmpty ColumnLevelPermissionRule))
createDataSet_columnLevelPermissionRules = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataSet' {Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules :: Maybe (NonEmpty ColumnLevelPermissionRule)
$sel:columnLevelPermissionRules:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules} -> Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules) (\s :: CreateDataSet
s@CreateDataSet' {} Maybe (NonEmpty ColumnLevelPermissionRule)
a -> CreateDataSet
s {$sel:columnLevelPermissionRules:CreateDataSet' :: Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules = Maybe (NonEmpty ColumnLevelPermissionRule)
a} :: CreateDataSet) 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

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

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

-- | Configures the combination and transformation of the data from the
-- physical tables.
createDataSet_logicalTableMap :: Lens.Lens' CreateDataSet (Prelude.Maybe (Prelude.HashMap Prelude.Text LogicalTable))
createDataSet_logicalTableMap :: Lens' CreateDataSet (Maybe (HashMap Text LogicalTable))
createDataSet_logicalTableMap = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataSet' {Maybe (HashMap Text LogicalTable)
logicalTableMap :: Maybe (HashMap Text LogicalTable)
$sel:logicalTableMap:CreateDataSet' :: CreateDataSet -> Maybe (HashMap Text LogicalTable)
logicalTableMap} -> Maybe (HashMap Text LogicalTable)
logicalTableMap) (\s :: CreateDataSet
s@CreateDataSet' {} Maybe (HashMap Text LogicalTable)
a -> CreateDataSet
s {$sel:logicalTableMap:CreateDataSet' :: Maybe (HashMap Text LogicalTable)
logicalTableMap = Maybe (HashMap Text LogicalTable)
a} :: CreateDataSet) 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

-- | A list of resource permissions on the dataset.
createDataSet_permissions :: Lens.Lens' CreateDataSet (Prelude.Maybe (Prelude.NonEmpty ResourcePermission))
createDataSet_permissions :: Lens' CreateDataSet (Maybe (NonEmpty ResourcePermission))
createDataSet_permissions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataSet' {Maybe (NonEmpty ResourcePermission)
permissions :: Maybe (NonEmpty ResourcePermission)
$sel:permissions:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty ResourcePermission)
permissions} -> Maybe (NonEmpty ResourcePermission)
permissions) (\s :: CreateDataSet
s@CreateDataSet' {} Maybe (NonEmpty ResourcePermission)
a -> CreateDataSet
s {$sel:permissions:CreateDataSet' :: Maybe (NonEmpty ResourcePermission)
permissions = Maybe (NonEmpty ResourcePermission)
a} :: CreateDataSet) 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 row-level security configuration for the data that you want to
-- create.
createDataSet_rowLevelPermissionDataSet :: Lens.Lens' CreateDataSet (Prelude.Maybe RowLevelPermissionDataSet)
createDataSet_rowLevelPermissionDataSet :: Lens' CreateDataSet (Maybe RowLevelPermissionDataSet)
createDataSet_rowLevelPermissionDataSet = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataSet' {Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet :: Maybe RowLevelPermissionDataSet
$sel:rowLevelPermissionDataSet:CreateDataSet' :: CreateDataSet -> Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet} -> Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet) (\s :: CreateDataSet
s@CreateDataSet' {} Maybe RowLevelPermissionDataSet
a -> CreateDataSet
s {$sel:rowLevelPermissionDataSet:CreateDataSet' :: Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet = Maybe RowLevelPermissionDataSet
a} :: CreateDataSet)

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

-- | Contains a map of the key-value pairs for the resource tag or tags
-- assigned to the dataset.
createDataSet_tags :: Lens.Lens' CreateDataSet (Prelude.Maybe (Prelude.NonEmpty Tag))
createDataSet_tags :: Lens' CreateDataSet (Maybe (NonEmpty Tag))
createDataSet_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataSet' {Maybe (NonEmpty Tag)
tags :: Maybe (NonEmpty Tag)
$sel:tags:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty Tag)
tags} -> Maybe (NonEmpty Tag)
tags) (\s :: CreateDataSet
s@CreateDataSet' {} Maybe (NonEmpty Tag)
a -> CreateDataSet
s {$sel:tags:CreateDataSet' :: Maybe (NonEmpty Tag)
tags = Maybe (NonEmpty Tag)
a} :: CreateDataSet) 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 Amazon Web Services account ID.
createDataSet_awsAccountId :: Lens.Lens' CreateDataSet Prelude.Text
createDataSet_awsAccountId :: Lens' CreateDataSet Text
createDataSet_awsAccountId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataSet' {Text
awsAccountId :: Text
$sel:awsAccountId:CreateDataSet' :: CreateDataSet -> Text
awsAccountId} -> Text
awsAccountId) (\s :: CreateDataSet
s@CreateDataSet' {} Text
a -> CreateDataSet
s {$sel:awsAccountId:CreateDataSet' :: Text
awsAccountId = Text
a} :: CreateDataSet)

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

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

-- | Declares the physical tables that are available in the underlying data
-- sources.
createDataSet_physicalTableMap :: Lens.Lens' CreateDataSet (Prelude.HashMap Prelude.Text PhysicalTable)
createDataSet_physicalTableMap :: Lens' CreateDataSet (HashMap Text PhysicalTable)
createDataSet_physicalTableMap = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataSet' {HashMap Text PhysicalTable
physicalTableMap :: HashMap Text PhysicalTable
$sel:physicalTableMap:CreateDataSet' :: CreateDataSet -> HashMap Text PhysicalTable
physicalTableMap} -> HashMap Text PhysicalTable
physicalTableMap) (\s :: CreateDataSet
s@CreateDataSet' {} HashMap Text PhysicalTable
a -> CreateDataSet
s {$sel:physicalTableMap:CreateDataSet' :: HashMap Text PhysicalTable
physicalTableMap = HashMap Text PhysicalTable
a} :: CreateDataSet) 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

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

instance Core.AWSRequest CreateDataSet where
  type
    AWSResponse CreateDataSet =
      CreateDataSetResponse
  request :: (Service -> Service) -> CreateDataSet -> Request CreateDataSet
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 CreateDataSet
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse CreateDataSet)))
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
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Int
-> CreateDataSetResponse
CreateDataSetResponse'
            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
"Arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"DataSetId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"IngestionArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"IngestionId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"RequestId")
            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 CreateDataSet where
  hashWithSalt :: Int -> CreateDataSet -> Int
hashWithSalt Int
_salt CreateDataSet' {Maybe (NonEmpty ColumnLevelPermissionRule)
Maybe (NonEmpty ColumnGroup)
Maybe (NonEmpty ResourcePermission)
Maybe (NonEmpty Tag)
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
tags :: Maybe (NonEmpty Tag)
rowLevelPermissionTagConfiguration :: Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionDataSet :: Maybe RowLevelPermissionDataSet
permissions :: Maybe (NonEmpty ResourcePermission)
logicalTableMap :: Maybe (HashMap Text LogicalTable)
fieldFolders :: Maybe (HashMap Text FieldFolder)
dataSetUsageConfiguration :: Maybe DataSetUsageConfiguration
columnLevelPermissionRules :: Maybe (NonEmpty ColumnLevelPermissionRule)
columnGroups :: Maybe (NonEmpty ColumnGroup)
$sel:importMode:CreateDataSet' :: CreateDataSet -> DataSetImportMode
$sel:physicalTableMap:CreateDataSet' :: CreateDataSet -> HashMap Text PhysicalTable
$sel:name:CreateDataSet' :: CreateDataSet -> Text
$sel:dataSetId:CreateDataSet' :: CreateDataSet -> Text
$sel:awsAccountId:CreateDataSet' :: CreateDataSet -> Text
$sel:tags:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty Tag)
$sel:rowLevelPermissionTagConfiguration:CreateDataSet' :: CreateDataSet -> Maybe RowLevelPermissionTagConfiguration
$sel:rowLevelPermissionDataSet:CreateDataSet' :: CreateDataSet -> Maybe RowLevelPermissionDataSet
$sel:permissions:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty ResourcePermission)
$sel:logicalTableMap:CreateDataSet' :: CreateDataSet -> Maybe (HashMap Text LogicalTable)
$sel:fieldFolders:CreateDataSet' :: CreateDataSet -> Maybe (HashMap Text FieldFolder)
$sel:dataSetUsageConfiguration:CreateDataSet' :: CreateDataSet -> Maybe DataSetUsageConfiguration
$sel:columnLevelPermissionRules:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty ColumnLevelPermissionRule)
$sel:columnGroups:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty ColumnGroup)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty ColumnGroup)
columnGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataSetUsageConfiguration
dataSetUsageConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text FieldFolder)
fieldFolders
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text LogicalTable)
logicalTableMap
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty ResourcePermission)
permissions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionTagConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty Tag)
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
awsAccountId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
dataSetId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` HashMap Text PhysicalTable
physicalTableMap
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` DataSetImportMode
importMode

instance Prelude.NFData CreateDataSet where
  rnf :: CreateDataSet -> ()
rnf CreateDataSet' {Maybe (NonEmpty ColumnLevelPermissionRule)
Maybe (NonEmpty ColumnGroup)
Maybe (NonEmpty ResourcePermission)
Maybe (NonEmpty Tag)
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
tags :: Maybe (NonEmpty Tag)
rowLevelPermissionTagConfiguration :: Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionDataSet :: Maybe RowLevelPermissionDataSet
permissions :: Maybe (NonEmpty ResourcePermission)
logicalTableMap :: Maybe (HashMap Text LogicalTable)
fieldFolders :: Maybe (HashMap Text FieldFolder)
dataSetUsageConfiguration :: Maybe DataSetUsageConfiguration
columnLevelPermissionRules :: Maybe (NonEmpty ColumnLevelPermissionRule)
columnGroups :: Maybe (NonEmpty ColumnGroup)
$sel:importMode:CreateDataSet' :: CreateDataSet -> DataSetImportMode
$sel:physicalTableMap:CreateDataSet' :: CreateDataSet -> HashMap Text PhysicalTable
$sel:name:CreateDataSet' :: CreateDataSet -> Text
$sel:dataSetId:CreateDataSet' :: CreateDataSet -> Text
$sel:awsAccountId:CreateDataSet' :: CreateDataSet -> Text
$sel:tags:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty Tag)
$sel:rowLevelPermissionTagConfiguration:CreateDataSet' :: CreateDataSet -> Maybe RowLevelPermissionTagConfiguration
$sel:rowLevelPermissionDataSet:CreateDataSet' :: CreateDataSet -> Maybe RowLevelPermissionDataSet
$sel:permissions:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty ResourcePermission)
$sel:logicalTableMap:CreateDataSet' :: CreateDataSet -> Maybe (HashMap Text LogicalTable)
$sel:fieldFolders:CreateDataSet' :: CreateDataSet -> Maybe (HashMap Text FieldFolder)
$sel:dataSetUsageConfiguration:CreateDataSet' :: CreateDataSet -> Maybe DataSetUsageConfiguration
$sel:columnLevelPermissionRules:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty ColumnLevelPermissionRule)
$sel:columnGroups:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty ColumnGroup)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty ColumnGroup)
columnGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataSetUsageConfiguration
dataSetUsageConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text FieldFolder)
fieldFolders
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text LogicalTable)
logicalTableMap
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty ResourcePermission)
permissions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RowLevelPermissionDataSet
rowLevelPermissionDataSet
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionTagConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Tag)
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
awsAccountId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
dataSetId
      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 HashMap Text PhysicalTable
physicalTableMap
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf DataSetImportMode
importMode

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

instance Data.ToJSON CreateDataSet where
  toJSON :: CreateDataSet -> Value
toJSON CreateDataSet' {Maybe (NonEmpty ColumnLevelPermissionRule)
Maybe (NonEmpty ColumnGroup)
Maybe (NonEmpty ResourcePermission)
Maybe (NonEmpty Tag)
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
tags :: Maybe (NonEmpty Tag)
rowLevelPermissionTagConfiguration :: Maybe RowLevelPermissionTagConfiguration
rowLevelPermissionDataSet :: Maybe RowLevelPermissionDataSet
permissions :: Maybe (NonEmpty ResourcePermission)
logicalTableMap :: Maybe (HashMap Text LogicalTable)
fieldFolders :: Maybe (HashMap Text FieldFolder)
dataSetUsageConfiguration :: Maybe DataSetUsageConfiguration
columnLevelPermissionRules :: Maybe (NonEmpty ColumnLevelPermissionRule)
columnGroups :: Maybe (NonEmpty ColumnGroup)
$sel:importMode:CreateDataSet' :: CreateDataSet -> DataSetImportMode
$sel:physicalTableMap:CreateDataSet' :: CreateDataSet -> HashMap Text PhysicalTable
$sel:name:CreateDataSet' :: CreateDataSet -> Text
$sel:dataSetId:CreateDataSet' :: CreateDataSet -> Text
$sel:awsAccountId:CreateDataSet' :: CreateDataSet -> Text
$sel:tags:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty Tag)
$sel:rowLevelPermissionTagConfiguration:CreateDataSet' :: CreateDataSet -> Maybe RowLevelPermissionTagConfiguration
$sel:rowLevelPermissionDataSet:CreateDataSet' :: CreateDataSet -> Maybe RowLevelPermissionDataSet
$sel:permissions:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty ResourcePermission)
$sel:logicalTableMap:CreateDataSet' :: CreateDataSet -> Maybe (HashMap Text LogicalTable)
$sel:fieldFolders:CreateDataSet' :: CreateDataSet -> Maybe (HashMap Text FieldFolder)
$sel:dataSetUsageConfiguration:CreateDataSet' :: CreateDataSet -> Maybe DataSetUsageConfiguration
$sel:columnLevelPermissionRules:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty ColumnLevelPermissionRule)
$sel:columnGroups:CreateDataSet' :: CreateDataSet -> Maybe (NonEmpty ColumnGroup)
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ColumnGroups" 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 (NonEmpty ColumnGroup)
columnGroups,
            (Key
"ColumnLevelPermissionRules" 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 (NonEmpty ColumnLevelPermissionRule)
columnLevelPermissionRules,
            (Key
"DataSetUsageConfiguration" 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 DataSetUsageConfiguration
dataSetUsageConfiguration,
            (Key
"FieldFolders" 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 FieldFolder)
fieldFolders,
            (Key
"LogicalTableMap" 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 LogicalTable)
logicalTableMap,
            (Key
"Permissions" 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 (NonEmpty ResourcePermission)
permissions,
            (Key
"RowLevelPermissionDataSet" 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 RowLevelPermissionDataSet
rowLevelPermissionDataSet,
            (Key
"RowLevelPermissionTagConfiguration" 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 RowLevelPermissionTagConfiguration
rowLevelPermissionTagConfiguration,
            (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 (NonEmpty Tag)
tags,
            forall a. a -> Maybe a
Prelude.Just (Key
"DataSetId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
dataSetId),
            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
"PhysicalTableMap" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= HashMap Text PhysicalTable
physicalTableMap),
            forall a. a -> Maybe a
Prelude.Just (Key
"ImportMode" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= DataSetImportMode
importMode)
          ]
      )

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

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

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

-- |
-- Create a value of 'CreateDataSetResponse' 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:
--
-- 'arn', 'createDataSetResponse_arn' - The Amazon Resource Name (ARN) of the dataset.
--
-- 'dataSetId', 'createDataSetResponse_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.
--
-- 'ingestionArn', 'createDataSetResponse_ingestionArn' - The ARN for the ingestion, which is triggered as a result of dataset
-- creation if the import mode is SPICE.
--
-- 'ingestionId', 'createDataSetResponse_ingestionId' - The ID of the ingestion, which is triggered as a result of dataset
-- creation if the import mode is SPICE.
--
-- 'requestId', 'createDataSetResponse_requestId' - The Amazon Web Services request ID for this operation.
--
-- 'status', 'createDataSetResponse_status' - The HTTP status of the request.
newCreateDataSetResponse ::
  -- | 'status'
  Prelude.Int ->
  CreateDataSetResponse
newCreateDataSetResponse :: Int -> CreateDataSetResponse
newCreateDataSetResponse Int
pStatus_ =
  CreateDataSetResponse'
    { $sel:arn:CreateDataSetResponse' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:dataSetId:CreateDataSetResponse' :: Maybe Text
dataSetId = forall a. Maybe a
Prelude.Nothing,
      $sel:ingestionArn:CreateDataSetResponse' :: Maybe Text
ingestionArn = forall a. Maybe a
Prelude.Nothing,
      $sel:ingestionId:CreateDataSetResponse' :: Maybe Text
ingestionId = forall a. Maybe a
Prelude.Nothing,
      $sel:requestId:CreateDataSetResponse' :: Maybe Text
requestId = forall a. Maybe a
Prelude.Nothing,
      $sel:status:CreateDataSetResponse' :: Int
status = Int
pStatus_
    }

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

-- | 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.
createDataSetResponse_dataSetId :: Lens.Lens' CreateDataSetResponse (Prelude.Maybe Prelude.Text)
createDataSetResponse_dataSetId :: Lens' CreateDataSetResponse (Maybe Text)
createDataSetResponse_dataSetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDataSetResponse' {Maybe Text
dataSetId :: Maybe Text
$sel:dataSetId:CreateDataSetResponse' :: CreateDataSetResponse -> Maybe Text
dataSetId} -> Maybe Text
dataSetId) (\s :: CreateDataSetResponse
s@CreateDataSetResponse' {} Maybe Text
a -> CreateDataSetResponse
s {$sel:dataSetId:CreateDataSetResponse' :: Maybe Text
dataSetId = Maybe Text
a} :: CreateDataSetResponse)

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

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

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

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

instance Prelude.NFData CreateDataSetResponse where
  rnf :: CreateDataSetResponse -> ()
rnf CreateDataSetResponse' {Int
Maybe Text
status :: Int
requestId :: Maybe Text
ingestionId :: Maybe Text
ingestionArn :: Maybe Text
dataSetId :: Maybe Text
arn :: Maybe Text
$sel:status:CreateDataSetResponse' :: CreateDataSetResponse -> Int
$sel:requestId:CreateDataSetResponse' :: CreateDataSetResponse -> Maybe Text
$sel:ingestionId:CreateDataSetResponse' :: CreateDataSetResponse -> Maybe Text
$sel:ingestionArn:CreateDataSetResponse' :: CreateDataSetResponse -> Maybe Text
$sel:dataSetId:CreateDataSetResponse' :: CreateDataSetResponse -> Maybe Text
$sel:arn:CreateDataSetResponse' :: CreateDataSetResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
dataSetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ingestionArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ingestionId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
requestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
status