{-# 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.IoTAnalytics.CreateDatasetContent
-- 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 the content of a dataset by applying a @queryAction@ (a SQL
-- query) or a @containerAction@ (executing a containerized application).
module Amazonka.IoTAnalytics.CreateDatasetContent
  ( -- * Creating a Request
    CreateDatasetContent (..),
    newCreateDatasetContent,

    -- * Request Lenses
    createDatasetContent_versionId,
    createDatasetContent_datasetName,

    -- * Destructuring the Response
    CreateDatasetContentResponse (..),
    newCreateDatasetContentResponse,

    -- * Response Lenses
    createDatasetContentResponse_versionId,
    createDatasetContentResponse_httpStatus,
  )
where

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

-- | /See:/ 'newCreateDatasetContent' smart constructor.
data CreateDatasetContent = CreateDatasetContent'
  { -- | The version ID of the dataset content. To specify @versionId@ for a
    -- dataset content, the dataset must use a
    -- <https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_DeltaTime.html DeltaTimer>
    -- filter.
    CreateDatasetContent -> Maybe Text
versionId :: Prelude.Maybe Prelude.Text,
    -- | The name of the dataset.
    CreateDatasetContent -> Text
datasetName :: Prelude.Text
  }
  deriving (CreateDatasetContent -> CreateDatasetContent -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateDatasetContent -> CreateDatasetContent -> Bool
$c/= :: CreateDatasetContent -> CreateDatasetContent -> Bool
== :: CreateDatasetContent -> CreateDatasetContent -> Bool
$c== :: CreateDatasetContent -> CreateDatasetContent -> Bool
Prelude.Eq, ReadPrec [CreateDatasetContent]
ReadPrec CreateDatasetContent
Int -> ReadS CreateDatasetContent
ReadS [CreateDatasetContent]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateDatasetContent]
$creadListPrec :: ReadPrec [CreateDatasetContent]
readPrec :: ReadPrec CreateDatasetContent
$creadPrec :: ReadPrec CreateDatasetContent
readList :: ReadS [CreateDatasetContent]
$creadList :: ReadS [CreateDatasetContent]
readsPrec :: Int -> ReadS CreateDatasetContent
$creadsPrec :: Int -> ReadS CreateDatasetContent
Prelude.Read, Int -> CreateDatasetContent -> ShowS
[CreateDatasetContent] -> ShowS
CreateDatasetContent -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateDatasetContent] -> ShowS
$cshowList :: [CreateDatasetContent] -> ShowS
show :: CreateDatasetContent -> String
$cshow :: CreateDatasetContent -> String
showsPrec :: Int -> CreateDatasetContent -> ShowS
$cshowsPrec :: Int -> CreateDatasetContent -> ShowS
Prelude.Show, forall x. Rep CreateDatasetContent x -> CreateDatasetContent
forall x. CreateDatasetContent -> Rep CreateDatasetContent x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateDatasetContent x -> CreateDatasetContent
$cfrom :: forall x. CreateDatasetContent -> Rep CreateDatasetContent x
Prelude.Generic)

-- |
-- Create a value of 'CreateDatasetContent' 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:
--
-- 'versionId', 'createDatasetContent_versionId' - The version ID of the dataset content. To specify @versionId@ for a
-- dataset content, the dataset must use a
-- <https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_DeltaTime.html DeltaTimer>
-- filter.
--
-- 'datasetName', 'createDatasetContent_datasetName' - The name of the dataset.
newCreateDatasetContent ::
  -- | 'datasetName'
  Prelude.Text ->
  CreateDatasetContent
newCreateDatasetContent :: Text -> CreateDatasetContent
newCreateDatasetContent Text
pDatasetName_ =
  CreateDatasetContent'
    { $sel:versionId:CreateDatasetContent' :: Maybe Text
versionId = forall a. Maybe a
Prelude.Nothing,
      $sel:datasetName:CreateDatasetContent' :: Text
datasetName = Text
pDatasetName_
    }

-- | The version ID of the dataset content. To specify @versionId@ for a
-- dataset content, the dataset must use a
-- <https://docs.aws.amazon.com/iotanalytics/latest/APIReference/API_DeltaTime.html DeltaTimer>
-- filter.
createDatasetContent_versionId :: Lens.Lens' CreateDatasetContent (Prelude.Maybe Prelude.Text)
createDatasetContent_versionId :: Lens' CreateDatasetContent (Maybe Text)
createDatasetContent_versionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDatasetContent' {Maybe Text
versionId :: Maybe Text
$sel:versionId:CreateDatasetContent' :: CreateDatasetContent -> Maybe Text
versionId} -> Maybe Text
versionId) (\s :: CreateDatasetContent
s@CreateDatasetContent' {} Maybe Text
a -> CreateDatasetContent
s {$sel:versionId:CreateDatasetContent' :: Maybe Text
versionId = Maybe Text
a} :: CreateDatasetContent)

-- | The name of the dataset.
createDatasetContent_datasetName :: Lens.Lens' CreateDatasetContent Prelude.Text
createDatasetContent_datasetName :: Lens' CreateDatasetContent Text
createDatasetContent_datasetName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDatasetContent' {Text
datasetName :: Text
$sel:datasetName:CreateDatasetContent' :: CreateDatasetContent -> Text
datasetName} -> Text
datasetName) (\s :: CreateDatasetContent
s@CreateDatasetContent' {} Text
a -> CreateDatasetContent
s {$sel:datasetName:CreateDatasetContent' :: Text
datasetName = Text
a} :: CreateDatasetContent)

instance Core.AWSRequest CreateDatasetContent where
  type
    AWSResponse CreateDatasetContent =
      CreateDatasetContentResponse
  request :: (Service -> Service)
-> CreateDatasetContent -> Request CreateDatasetContent
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 CreateDatasetContent
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateDatasetContent)))
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 -> Int -> CreateDatasetContentResponse
CreateDatasetContentResponse'
            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
"versionId")
            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 CreateDatasetContent where
  hashWithSalt :: Int -> CreateDatasetContent -> Int
hashWithSalt Int
_salt CreateDatasetContent' {Maybe Text
Text
datasetName :: Text
versionId :: Maybe Text
$sel:datasetName:CreateDatasetContent' :: CreateDatasetContent -> Text
$sel:versionId:CreateDatasetContent' :: CreateDatasetContent -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
versionId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
datasetName

instance Prelude.NFData CreateDatasetContent where
  rnf :: CreateDatasetContent -> ()
rnf CreateDatasetContent' {Maybe Text
Text
datasetName :: Text
versionId :: Maybe Text
$sel:datasetName:CreateDatasetContent' :: CreateDatasetContent -> Text
$sel:versionId:CreateDatasetContent' :: CreateDatasetContent -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
versionId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
datasetName

instance Data.ToHeaders CreateDatasetContent where
  toHeaders :: CreateDatasetContent -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToJSON CreateDatasetContent where
  toJSON :: CreateDatasetContent -> Value
toJSON CreateDatasetContent' {Maybe Text
Text
datasetName :: Text
versionId :: Maybe Text
$sel:datasetName:CreateDatasetContent' :: CreateDatasetContent -> Text
$sel:versionId:CreateDatasetContent' :: CreateDatasetContent -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [(Key
"versionId" 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 Text
versionId]
      )

instance Data.ToPath CreateDatasetContent where
  toPath :: CreateDatasetContent -> ByteString
toPath CreateDatasetContent' {Maybe Text
Text
datasetName :: Text
versionId :: Maybe Text
$sel:datasetName:CreateDatasetContent' :: CreateDatasetContent -> Text
$sel:versionId:CreateDatasetContent' :: CreateDatasetContent -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"/datasets/", forall a. ToByteString a => a -> ByteString
Data.toBS Text
datasetName, ByteString
"/content"]

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

-- | /See:/ 'newCreateDatasetContentResponse' smart constructor.
data CreateDatasetContentResponse = CreateDatasetContentResponse'
  { -- | The version ID of the dataset contents that are being created.
    CreateDatasetContentResponse -> Maybe Text
versionId :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    CreateDatasetContentResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateDatasetContentResponse
-> CreateDatasetContentResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateDatasetContentResponse
-> CreateDatasetContentResponse -> Bool
$c/= :: CreateDatasetContentResponse
-> CreateDatasetContentResponse -> Bool
== :: CreateDatasetContentResponse
-> CreateDatasetContentResponse -> Bool
$c== :: CreateDatasetContentResponse
-> CreateDatasetContentResponse -> Bool
Prelude.Eq, ReadPrec [CreateDatasetContentResponse]
ReadPrec CreateDatasetContentResponse
Int -> ReadS CreateDatasetContentResponse
ReadS [CreateDatasetContentResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateDatasetContentResponse]
$creadListPrec :: ReadPrec [CreateDatasetContentResponse]
readPrec :: ReadPrec CreateDatasetContentResponse
$creadPrec :: ReadPrec CreateDatasetContentResponse
readList :: ReadS [CreateDatasetContentResponse]
$creadList :: ReadS [CreateDatasetContentResponse]
readsPrec :: Int -> ReadS CreateDatasetContentResponse
$creadsPrec :: Int -> ReadS CreateDatasetContentResponse
Prelude.Read, Int -> CreateDatasetContentResponse -> ShowS
[CreateDatasetContentResponse] -> ShowS
CreateDatasetContentResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateDatasetContentResponse] -> ShowS
$cshowList :: [CreateDatasetContentResponse] -> ShowS
show :: CreateDatasetContentResponse -> String
$cshow :: CreateDatasetContentResponse -> String
showsPrec :: Int -> CreateDatasetContentResponse -> ShowS
$cshowsPrec :: Int -> CreateDatasetContentResponse -> ShowS
Prelude.Show, forall x.
Rep CreateDatasetContentResponse x -> CreateDatasetContentResponse
forall x.
CreateDatasetContentResponse -> Rep CreateDatasetContentResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateDatasetContentResponse x -> CreateDatasetContentResponse
$cfrom :: forall x.
CreateDatasetContentResponse -> Rep CreateDatasetContentResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateDatasetContentResponse' 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:
--
-- 'versionId', 'createDatasetContentResponse_versionId' - The version ID of the dataset contents that are being created.
--
-- 'httpStatus', 'createDatasetContentResponse_httpStatus' - The response's http status code.
newCreateDatasetContentResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateDatasetContentResponse
newCreateDatasetContentResponse :: Int -> CreateDatasetContentResponse
newCreateDatasetContentResponse Int
pHttpStatus_ =
  CreateDatasetContentResponse'
    { $sel:versionId:CreateDatasetContentResponse' :: Maybe Text
versionId =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateDatasetContentResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The version ID of the dataset contents that are being created.
createDatasetContentResponse_versionId :: Lens.Lens' CreateDatasetContentResponse (Prelude.Maybe Prelude.Text)
createDatasetContentResponse_versionId :: Lens' CreateDatasetContentResponse (Maybe Text)
createDatasetContentResponse_versionId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDatasetContentResponse' {Maybe Text
versionId :: Maybe Text
$sel:versionId:CreateDatasetContentResponse' :: CreateDatasetContentResponse -> Maybe Text
versionId} -> Maybe Text
versionId) (\s :: CreateDatasetContentResponse
s@CreateDatasetContentResponse' {} Maybe Text
a -> CreateDatasetContentResponse
s {$sel:versionId:CreateDatasetContentResponse' :: Maybe Text
versionId = Maybe Text
a} :: CreateDatasetContentResponse)

-- | The response's http status code.
createDatasetContentResponse_httpStatus :: Lens.Lens' CreateDatasetContentResponse Prelude.Int
createDatasetContentResponse_httpStatus :: Lens' CreateDatasetContentResponse Int
createDatasetContentResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateDatasetContentResponse' {Int
httpStatus :: Int
$sel:httpStatus:CreateDatasetContentResponse' :: CreateDatasetContentResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: CreateDatasetContentResponse
s@CreateDatasetContentResponse' {} Int
a -> CreateDatasetContentResponse
s {$sel:httpStatus:CreateDatasetContentResponse' :: Int
httpStatus = Int
a} :: CreateDatasetContentResponse)

instance Prelude.NFData CreateDatasetContentResponse where
  rnf :: CreateDatasetContentResponse -> ()
rnf CreateDatasetContentResponse' {Int
Maybe Text
httpStatus :: Int
versionId :: Maybe Text
$sel:httpStatus:CreateDatasetContentResponse' :: CreateDatasetContentResponse -> Int
$sel:versionId:CreateDatasetContentResponse' :: CreateDatasetContentResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
versionId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus