{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Kendra.Types.GroupOrderingIdSummary
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Kendra.Types.GroupOrderingIdSummary where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Kendra.Types.PrincipalMappingStatus
import qualified Amazonka.Prelude as Prelude

-- | Summary information on the processing of @PUT@ and @DELETE@ actions for
-- mapping users to their groups.
--
-- /See:/ 'newGroupOrderingIdSummary' smart constructor.
data GroupOrderingIdSummary = GroupOrderingIdSummary'
  { -- | The reason an action could not be processed. An action can be a @PUT@ or
    -- @DELETE@ action for mapping users to their groups.
    GroupOrderingIdSummary -> Maybe Text
failureReason :: Prelude.Maybe Prelude.Text,
    -- | The last date-time an action was updated. An action can be a @PUT@ or
    -- @DELETE@ action for mapping users to their groups.
    GroupOrderingIdSummary -> Maybe POSIX
lastUpdatedAt :: Prelude.Maybe Data.POSIX,
    -- | The order in which actions should complete processing. An action can be
    -- a @PUT@ or @DELETE@ action for mapping users to their groups.
    GroupOrderingIdSummary -> Maybe Natural
orderingId :: Prelude.Maybe Prelude.Natural,
    -- | The date-time an action was received by Amazon Kendra. An action can be
    -- a @PUT@ or @DELETE@ action for mapping users to their groups.
    GroupOrderingIdSummary -> Maybe POSIX
receivedAt :: Prelude.Maybe Data.POSIX,
    -- | The current processing status of actions for mapping users to their
    -- groups. The status can be either @PROCESSING@, @SUCCEEDED@, @DELETING@,
    -- @DELETED@, or @FAILED@.
    GroupOrderingIdSummary -> Maybe PrincipalMappingStatus
status :: Prelude.Maybe PrincipalMappingStatus
  }
  deriving (GroupOrderingIdSummary -> GroupOrderingIdSummary -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GroupOrderingIdSummary -> GroupOrderingIdSummary -> Bool
$c/= :: GroupOrderingIdSummary -> GroupOrderingIdSummary -> Bool
== :: GroupOrderingIdSummary -> GroupOrderingIdSummary -> Bool
$c== :: GroupOrderingIdSummary -> GroupOrderingIdSummary -> Bool
Prelude.Eq, ReadPrec [GroupOrderingIdSummary]
ReadPrec GroupOrderingIdSummary
Int -> ReadS GroupOrderingIdSummary
ReadS [GroupOrderingIdSummary]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GroupOrderingIdSummary]
$creadListPrec :: ReadPrec [GroupOrderingIdSummary]
readPrec :: ReadPrec GroupOrderingIdSummary
$creadPrec :: ReadPrec GroupOrderingIdSummary
readList :: ReadS [GroupOrderingIdSummary]
$creadList :: ReadS [GroupOrderingIdSummary]
readsPrec :: Int -> ReadS GroupOrderingIdSummary
$creadsPrec :: Int -> ReadS GroupOrderingIdSummary
Prelude.Read, Int -> GroupOrderingIdSummary -> ShowS
[GroupOrderingIdSummary] -> ShowS
GroupOrderingIdSummary -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GroupOrderingIdSummary] -> ShowS
$cshowList :: [GroupOrderingIdSummary] -> ShowS
show :: GroupOrderingIdSummary -> String
$cshow :: GroupOrderingIdSummary -> String
showsPrec :: Int -> GroupOrderingIdSummary -> ShowS
$cshowsPrec :: Int -> GroupOrderingIdSummary -> ShowS
Prelude.Show, forall x. Rep GroupOrderingIdSummary x -> GroupOrderingIdSummary
forall x. GroupOrderingIdSummary -> Rep GroupOrderingIdSummary x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GroupOrderingIdSummary x -> GroupOrderingIdSummary
$cfrom :: forall x. GroupOrderingIdSummary -> Rep GroupOrderingIdSummary x
Prelude.Generic)

-- |
-- Create a value of 'GroupOrderingIdSummary' 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:
--
-- 'failureReason', 'groupOrderingIdSummary_failureReason' - The reason an action could not be processed. An action can be a @PUT@ or
-- @DELETE@ action for mapping users to their groups.
--
-- 'lastUpdatedAt', 'groupOrderingIdSummary_lastUpdatedAt' - The last date-time an action was updated. An action can be a @PUT@ or
-- @DELETE@ action for mapping users to their groups.
--
-- 'orderingId', 'groupOrderingIdSummary_orderingId' - The order in which actions should complete processing. An action can be
-- a @PUT@ or @DELETE@ action for mapping users to their groups.
--
-- 'receivedAt', 'groupOrderingIdSummary_receivedAt' - The date-time an action was received by Amazon Kendra. An action can be
-- a @PUT@ or @DELETE@ action for mapping users to their groups.
--
-- 'status', 'groupOrderingIdSummary_status' - The current processing status of actions for mapping users to their
-- groups. The status can be either @PROCESSING@, @SUCCEEDED@, @DELETING@,
-- @DELETED@, or @FAILED@.
newGroupOrderingIdSummary ::
  GroupOrderingIdSummary
newGroupOrderingIdSummary :: GroupOrderingIdSummary
newGroupOrderingIdSummary =
  GroupOrderingIdSummary'
    { $sel:failureReason:GroupOrderingIdSummary' :: Maybe Text
failureReason =
        forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdatedAt:GroupOrderingIdSummary' :: Maybe POSIX
lastUpdatedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:orderingId:GroupOrderingIdSummary' :: Maybe Natural
orderingId = forall a. Maybe a
Prelude.Nothing,
      $sel:receivedAt:GroupOrderingIdSummary' :: Maybe POSIX
receivedAt = forall a. Maybe a
Prelude.Nothing,
      $sel:status:GroupOrderingIdSummary' :: Maybe PrincipalMappingStatus
status = forall a. Maybe a
Prelude.Nothing
    }

-- | The reason an action could not be processed. An action can be a @PUT@ or
-- @DELETE@ action for mapping users to their groups.
groupOrderingIdSummary_failureReason :: Lens.Lens' GroupOrderingIdSummary (Prelude.Maybe Prelude.Text)
groupOrderingIdSummary_failureReason :: Lens' GroupOrderingIdSummary (Maybe Text)
groupOrderingIdSummary_failureReason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GroupOrderingIdSummary' {Maybe Text
failureReason :: Maybe Text
$sel:failureReason:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe Text
failureReason} -> Maybe Text
failureReason) (\s :: GroupOrderingIdSummary
s@GroupOrderingIdSummary' {} Maybe Text
a -> GroupOrderingIdSummary
s {$sel:failureReason:GroupOrderingIdSummary' :: Maybe Text
failureReason = Maybe Text
a} :: GroupOrderingIdSummary)

-- | The last date-time an action was updated. An action can be a @PUT@ or
-- @DELETE@ action for mapping users to their groups.
groupOrderingIdSummary_lastUpdatedAt :: Lens.Lens' GroupOrderingIdSummary (Prelude.Maybe Prelude.UTCTime)
groupOrderingIdSummary_lastUpdatedAt :: Lens' GroupOrderingIdSummary (Maybe UTCTime)
groupOrderingIdSummary_lastUpdatedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GroupOrderingIdSummary' {Maybe POSIX
lastUpdatedAt :: Maybe POSIX
$sel:lastUpdatedAt:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe POSIX
lastUpdatedAt} -> Maybe POSIX
lastUpdatedAt) (\s :: GroupOrderingIdSummary
s@GroupOrderingIdSummary' {} Maybe POSIX
a -> GroupOrderingIdSummary
s {$sel:lastUpdatedAt:GroupOrderingIdSummary' :: Maybe POSIX
lastUpdatedAt = Maybe POSIX
a} :: GroupOrderingIdSummary) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The order in which actions should complete processing. An action can be
-- a @PUT@ or @DELETE@ action for mapping users to their groups.
groupOrderingIdSummary_orderingId :: Lens.Lens' GroupOrderingIdSummary (Prelude.Maybe Prelude.Natural)
groupOrderingIdSummary_orderingId :: Lens' GroupOrderingIdSummary (Maybe Natural)
groupOrderingIdSummary_orderingId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GroupOrderingIdSummary' {Maybe Natural
orderingId :: Maybe Natural
$sel:orderingId:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe Natural
orderingId} -> Maybe Natural
orderingId) (\s :: GroupOrderingIdSummary
s@GroupOrderingIdSummary' {} Maybe Natural
a -> GroupOrderingIdSummary
s {$sel:orderingId:GroupOrderingIdSummary' :: Maybe Natural
orderingId = Maybe Natural
a} :: GroupOrderingIdSummary)

-- | The date-time an action was received by Amazon Kendra. An action can be
-- a @PUT@ or @DELETE@ action for mapping users to their groups.
groupOrderingIdSummary_receivedAt :: Lens.Lens' GroupOrderingIdSummary (Prelude.Maybe Prelude.UTCTime)
groupOrderingIdSummary_receivedAt :: Lens' GroupOrderingIdSummary (Maybe UTCTime)
groupOrderingIdSummary_receivedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GroupOrderingIdSummary' {Maybe POSIX
receivedAt :: Maybe POSIX
$sel:receivedAt:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe POSIX
receivedAt} -> Maybe POSIX
receivedAt) (\s :: GroupOrderingIdSummary
s@GroupOrderingIdSummary' {} Maybe POSIX
a -> GroupOrderingIdSummary
s {$sel:receivedAt:GroupOrderingIdSummary' :: Maybe POSIX
receivedAt = Maybe POSIX
a} :: GroupOrderingIdSummary) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The current processing status of actions for mapping users to their
-- groups. The status can be either @PROCESSING@, @SUCCEEDED@, @DELETING@,
-- @DELETED@, or @FAILED@.
groupOrderingIdSummary_status :: Lens.Lens' GroupOrderingIdSummary (Prelude.Maybe PrincipalMappingStatus)
groupOrderingIdSummary_status :: Lens' GroupOrderingIdSummary (Maybe PrincipalMappingStatus)
groupOrderingIdSummary_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GroupOrderingIdSummary' {Maybe PrincipalMappingStatus
status :: Maybe PrincipalMappingStatus
$sel:status:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe PrincipalMappingStatus
status} -> Maybe PrincipalMappingStatus
status) (\s :: GroupOrderingIdSummary
s@GroupOrderingIdSummary' {} Maybe PrincipalMappingStatus
a -> GroupOrderingIdSummary
s {$sel:status:GroupOrderingIdSummary' :: Maybe PrincipalMappingStatus
status = Maybe PrincipalMappingStatus
a} :: GroupOrderingIdSummary)

instance Data.FromJSON GroupOrderingIdSummary where
  parseJSON :: Value -> Parser GroupOrderingIdSummary
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"GroupOrderingIdSummary"
      ( \Object
x ->
          Maybe Text
-> Maybe POSIX
-> Maybe Natural
-> Maybe POSIX
-> Maybe PrincipalMappingStatus
-> GroupOrderingIdSummary
GroupOrderingIdSummary'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"FailureReason")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"LastUpdatedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"OrderingId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ReceivedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Status")
      )

instance Prelude.Hashable GroupOrderingIdSummary where
  hashWithSalt :: Int -> GroupOrderingIdSummary -> Int
hashWithSalt Int
_salt GroupOrderingIdSummary' {Maybe Natural
Maybe Text
Maybe POSIX
Maybe PrincipalMappingStatus
status :: Maybe PrincipalMappingStatus
receivedAt :: Maybe POSIX
orderingId :: Maybe Natural
lastUpdatedAt :: Maybe POSIX
failureReason :: Maybe Text
$sel:status:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe PrincipalMappingStatus
$sel:receivedAt:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe POSIX
$sel:orderingId:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe Natural
$sel:lastUpdatedAt:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe POSIX
$sel:failureReason:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
failureReason
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastUpdatedAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
orderingId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
receivedAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PrincipalMappingStatus
status

instance Prelude.NFData GroupOrderingIdSummary where
  rnf :: GroupOrderingIdSummary -> ()
rnf GroupOrderingIdSummary' {Maybe Natural
Maybe Text
Maybe POSIX
Maybe PrincipalMappingStatus
status :: Maybe PrincipalMappingStatus
receivedAt :: Maybe POSIX
orderingId :: Maybe Natural
lastUpdatedAt :: Maybe POSIX
failureReason :: Maybe Text
$sel:status:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe PrincipalMappingStatus
$sel:receivedAt:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe POSIX
$sel:orderingId:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe Natural
$sel:lastUpdatedAt:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe POSIX
$sel:failureReason:GroupOrderingIdSummary' :: GroupOrderingIdSummary -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
failureReason
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastUpdatedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
orderingId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
receivedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PrincipalMappingStatus
status