{-# 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.CodeBuild.DeleteBuildBatch
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Deletes a batch build.
module Amazonka.CodeBuild.DeleteBuildBatch
  ( -- * Creating a Request
    DeleteBuildBatch (..),
    newDeleteBuildBatch,

    -- * Request Lenses
    deleteBuildBatch_id,

    -- * Destructuring the Response
    DeleteBuildBatchResponse (..),
    newDeleteBuildBatchResponse,

    -- * Response Lenses
    deleteBuildBatchResponse_buildsDeleted,
    deleteBuildBatchResponse_buildsNotDeleted,
    deleteBuildBatchResponse_statusCode,
    deleteBuildBatchResponse_httpStatus,
  )
where

import Amazonka.CodeBuild.Types
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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newDeleteBuildBatch' smart constructor.
data DeleteBuildBatch = DeleteBuildBatch'
  { -- | The identifier of the batch build to delete.
    DeleteBuildBatch -> Text
id :: Prelude.Text
  }
  deriving (DeleteBuildBatch -> DeleteBuildBatch -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteBuildBatch -> DeleteBuildBatch -> Bool
$c/= :: DeleteBuildBatch -> DeleteBuildBatch -> Bool
== :: DeleteBuildBatch -> DeleteBuildBatch -> Bool
$c== :: DeleteBuildBatch -> DeleteBuildBatch -> Bool
Prelude.Eq, ReadPrec [DeleteBuildBatch]
ReadPrec DeleteBuildBatch
Int -> ReadS DeleteBuildBatch
ReadS [DeleteBuildBatch]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteBuildBatch]
$creadListPrec :: ReadPrec [DeleteBuildBatch]
readPrec :: ReadPrec DeleteBuildBatch
$creadPrec :: ReadPrec DeleteBuildBatch
readList :: ReadS [DeleteBuildBatch]
$creadList :: ReadS [DeleteBuildBatch]
readsPrec :: Int -> ReadS DeleteBuildBatch
$creadsPrec :: Int -> ReadS DeleteBuildBatch
Prelude.Read, Int -> DeleteBuildBatch -> ShowS
[DeleteBuildBatch] -> ShowS
DeleteBuildBatch -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteBuildBatch] -> ShowS
$cshowList :: [DeleteBuildBatch] -> ShowS
show :: DeleteBuildBatch -> String
$cshow :: DeleteBuildBatch -> String
showsPrec :: Int -> DeleteBuildBatch -> ShowS
$cshowsPrec :: Int -> DeleteBuildBatch -> ShowS
Prelude.Show, forall x. Rep DeleteBuildBatch x -> DeleteBuildBatch
forall x. DeleteBuildBatch -> Rep DeleteBuildBatch x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DeleteBuildBatch x -> DeleteBuildBatch
$cfrom :: forall x. DeleteBuildBatch -> Rep DeleteBuildBatch x
Prelude.Generic)

-- |
-- Create a value of 'DeleteBuildBatch' 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:
--
-- 'id', 'deleteBuildBatch_id' - The identifier of the batch build to delete.
newDeleteBuildBatch ::
  -- | 'id'
  Prelude.Text ->
  DeleteBuildBatch
newDeleteBuildBatch :: Text -> DeleteBuildBatch
newDeleteBuildBatch Text
pId_ =
  DeleteBuildBatch' {$sel:id:DeleteBuildBatch' :: Text
id = Text
pId_}

-- | The identifier of the batch build to delete.
deleteBuildBatch_id :: Lens.Lens' DeleteBuildBatch Prelude.Text
deleteBuildBatch_id :: Lens' DeleteBuildBatch Text
deleteBuildBatch_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteBuildBatch' {Text
id :: Text
$sel:id:DeleteBuildBatch' :: DeleteBuildBatch -> Text
id} -> Text
id) (\s :: DeleteBuildBatch
s@DeleteBuildBatch' {} Text
a -> DeleteBuildBatch
s {$sel:id:DeleteBuildBatch' :: Text
id = Text
a} :: DeleteBuildBatch)

instance Core.AWSRequest DeleteBuildBatch where
  type
    AWSResponse DeleteBuildBatch =
      DeleteBuildBatchResponse
  request :: (Service -> Service)
-> DeleteBuildBatch -> Request DeleteBuildBatch
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 DeleteBuildBatch
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse DeleteBuildBatch)))
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 (NonEmpty Text)
-> Maybe [BuildNotDeleted]
-> Maybe Text
-> Int
-> DeleteBuildBatchResponse
DeleteBuildBatchResponse'
            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
"buildsDeleted")
            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
"buildsNotDeleted"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                        )
            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
"statusCode")
            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 DeleteBuildBatch where
  hashWithSalt :: Int -> DeleteBuildBatch -> Int
hashWithSalt Int
_salt DeleteBuildBatch' {Text
id :: Text
$sel:id:DeleteBuildBatch' :: DeleteBuildBatch -> Text
..} =
    Int
_salt forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
id

instance Prelude.NFData DeleteBuildBatch where
  rnf :: DeleteBuildBatch -> ()
rnf DeleteBuildBatch' {Text
id :: Text
$sel:id:DeleteBuildBatch' :: DeleteBuildBatch -> Text
..} = forall a. NFData a => a -> ()
Prelude.rnf Text
id

instance Data.ToHeaders DeleteBuildBatch where
  toHeaders :: DeleteBuildBatch -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"CodeBuild_20161006.DeleteBuildBatch" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON DeleteBuildBatch where
  toJSON :: DeleteBuildBatch -> Value
toJSON DeleteBuildBatch' {Text
id :: Text
$sel:id:DeleteBuildBatch' :: DeleteBuildBatch -> Text
..} =
    [Pair] -> Value
Data.object
      (forall a. [Maybe a] -> [a]
Prelude.catMaybes [forall a. a -> Maybe a
Prelude.Just (Key
"id" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
id)])

instance Data.ToPath DeleteBuildBatch where
  toPath :: DeleteBuildBatch -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

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

-- | /See:/ 'newDeleteBuildBatchResponse' smart constructor.
data DeleteBuildBatchResponse = DeleteBuildBatchResponse'
  { -- | An array of strings that contain the identifiers of the builds that were
    -- deleted.
    DeleteBuildBatchResponse -> Maybe (NonEmpty Text)
buildsDeleted :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | An array of @BuildNotDeleted@ objects that specify the builds that could
    -- not be deleted.
    DeleteBuildBatchResponse -> Maybe [BuildNotDeleted]
buildsNotDeleted :: Prelude.Maybe [BuildNotDeleted],
    -- | The status code.
    DeleteBuildBatchResponse -> Maybe Text
statusCode :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    DeleteBuildBatchResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DeleteBuildBatchResponse -> DeleteBuildBatchResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DeleteBuildBatchResponse -> DeleteBuildBatchResponse -> Bool
$c/= :: DeleteBuildBatchResponse -> DeleteBuildBatchResponse -> Bool
== :: DeleteBuildBatchResponse -> DeleteBuildBatchResponse -> Bool
$c== :: DeleteBuildBatchResponse -> DeleteBuildBatchResponse -> Bool
Prelude.Eq, ReadPrec [DeleteBuildBatchResponse]
ReadPrec DeleteBuildBatchResponse
Int -> ReadS DeleteBuildBatchResponse
ReadS [DeleteBuildBatchResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DeleteBuildBatchResponse]
$creadListPrec :: ReadPrec [DeleteBuildBatchResponse]
readPrec :: ReadPrec DeleteBuildBatchResponse
$creadPrec :: ReadPrec DeleteBuildBatchResponse
readList :: ReadS [DeleteBuildBatchResponse]
$creadList :: ReadS [DeleteBuildBatchResponse]
readsPrec :: Int -> ReadS DeleteBuildBatchResponse
$creadsPrec :: Int -> ReadS DeleteBuildBatchResponse
Prelude.Read, Int -> DeleteBuildBatchResponse -> ShowS
[DeleteBuildBatchResponse] -> ShowS
DeleteBuildBatchResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DeleteBuildBatchResponse] -> ShowS
$cshowList :: [DeleteBuildBatchResponse] -> ShowS
show :: DeleteBuildBatchResponse -> String
$cshow :: DeleteBuildBatchResponse -> String
showsPrec :: Int -> DeleteBuildBatchResponse -> ShowS
$cshowsPrec :: Int -> DeleteBuildBatchResponse -> ShowS
Prelude.Show, forall x.
Rep DeleteBuildBatchResponse x -> DeleteBuildBatchResponse
forall x.
DeleteBuildBatchResponse -> Rep DeleteBuildBatchResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DeleteBuildBatchResponse x -> DeleteBuildBatchResponse
$cfrom :: forall x.
DeleteBuildBatchResponse -> Rep DeleteBuildBatchResponse x
Prelude.Generic)

-- |
-- Create a value of 'DeleteBuildBatchResponse' 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:
--
-- 'buildsDeleted', 'deleteBuildBatchResponse_buildsDeleted' - An array of strings that contain the identifiers of the builds that were
-- deleted.
--
-- 'buildsNotDeleted', 'deleteBuildBatchResponse_buildsNotDeleted' - An array of @BuildNotDeleted@ objects that specify the builds that could
-- not be deleted.
--
-- 'statusCode', 'deleteBuildBatchResponse_statusCode' - The status code.
--
-- 'httpStatus', 'deleteBuildBatchResponse_httpStatus' - The response's http status code.
newDeleteBuildBatchResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DeleteBuildBatchResponse
newDeleteBuildBatchResponse :: Int -> DeleteBuildBatchResponse
newDeleteBuildBatchResponse Int
pHttpStatus_ =
  DeleteBuildBatchResponse'
    { $sel:buildsDeleted:DeleteBuildBatchResponse' :: Maybe (NonEmpty Text)
buildsDeleted =
        forall a. Maybe a
Prelude.Nothing,
      $sel:buildsNotDeleted:DeleteBuildBatchResponse' :: Maybe [BuildNotDeleted]
buildsNotDeleted = forall a. Maybe a
Prelude.Nothing,
      $sel:statusCode:DeleteBuildBatchResponse' :: Maybe Text
statusCode = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DeleteBuildBatchResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | An array of strings that contain the identifiers of the builds that were
-- deleted.
deleteBuildBatchResponse_buildsDeleted :: Lens.Lens' DeleteBuildBatchResponse (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
deleteBuildBatchResponse_buildsDeleted :: Lens' DeleteBuildBatchResponse (Maybe (NonEmpty Text))
deleteBuildBatchResponse_buildsDeleted = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteBuildBatchResponse' {Maybe (NonEmpty Text)
buildsDeleted :: Maybe (NonEmpty Text)
$sel:buildsDeleted:DeleteBuildBatchResponse' :: DeleteBuildBatchResponse -> Maybe (NonEmpty Text)
buildsDeleted} -> Maybe (NonEmpty Text)
buildsDeleted) (\s :: DeleteBuildBatchResponse
s@DeleteBuildBatchResponse' {} Maybe (NonEmpty Text)
a -> DeleteBuildBatchResponse
s {$sel:buildsDeleted:DeleteBuildBatchResponse' :: Maybe (NonEmpty Text)
buildsDeleted = Maybe (NonEmpty Text)
a} :: DeleteBuildBatchResponse) 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

-- | An array of @BuildNotDeleted@ objects that specify the builds that could
-- not be deleted.
deleteBuildBatchResponse_buildsNotDeleted :: Lens.Lens' DeleteBuildBatchResponse (Prelude.Maybe [BuildNotDeleted])
deleteBuildBatchResponse_buildsNotDeleted :: Lens' DeleteBuildBatchResponse (Maybe [BuildNotDeleted])
deleteBuildBatchResponse_buildsNotDeleted = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteBuildBatchResponse' {Maybe [BuildNotDeleted]
buildsNotDeleted :: Maybe [BuildNotDeleted]
$sel:buildsNotDeleted:DeleteBuildBatchResponse' :: DeleteBuildBatchResponse -> Maybe [BuildNotDeleted]
buildsNotDeleted} -> Maybe [BuildNotDeleted]
buildsNotDeleted) (\s :: DeleteBuildBatchResponse
s@DeleteBuildBatchResponse' {} Maybe [BuildNotDeleted]
a -> DeleteBuildBatchResponse
s {$sel:buildsNotDeleted:DeleteBuildBatchResponse' :: Maybe [BuildNotDeleted]
buildsNotDeleted = Maybe [BuildNotDeleted]
a} :: DeleteBuildBatchResponse) 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 status code.
deleteBuildBatchResponse_statusCode :: Lens.Lens' DeleteBuildBatchResponse (Prelude.Maybe Prelude.Text)
deleteBuildBatchResponse_statusCode :: Lens' DeleteBuildBatchResponse (Maybe Text)
deleteBuildBatchResponse_statusCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DeleteBuildBatchResponse' {Maybe Text
statusCode :: Maybe Text
$sel:statusCode:DeleteBuildBatchResponse' :: DeleteBuildBatchResponse -> Maybe Text
statusCode} -> Maybe Text
statusCode) (\s :: DeleteBuildBatchResponse
s@DeleteBuildBatchResponse' {} Maybe Text
a -> DeleteBuildBatchResponse
s {$sel:statusCode:DeleteBuildBatchResponse' :: Maybe Text
statusCode = Maybe Text
a} :: DeleteBuildBatchResponse)

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

instance Prelude.NFData DeleteBuildBatchResponse where
  rnf :: DeleteBuildBatchResponse -> ()
rnf DeleteBuildBatchResponse' {Int
Maybe [BuildNotDeleted]
Maybe (NonEmpty Text)
Maybe Text
httpStatus :: Int
statusCode :: Maybe Text
buildsNotDeleted :: Maybe [BuildNotDeleted]
buildsDeleted :: Maybe (NonEmpty Text)
$sel:httpStatus:DeleteBuildBatchResponse' :: DeleteBuildBatchResponse -> Int
$sel:statusCode:DeleteBuildBatchResponse' :: DeleteBuildBatchResponse -> Maybe Text
$sel:buildsNotDeleted:DeleteBuildBatchResponse' :: DeleteBuildBatchResponse -> Maybe [BuildNotDeleted]
$sel:buildsDeleted:DeleteBuildBatchResponse' :: DeleteBuildBatchResponse -> Maybe (NonEmpty Text)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty Text)
buildsDeleted
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [BuildNotDeleted]
buildsNotDeleted
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
statusCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus