{-# 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.Rekognition.Types.DatasetStats
-- 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.Rekognition.Types.DatasetStats 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

-- | Provides statistics about a dataset. For more information, see
-- DescribeDataset.
--
-- /See:/ 'newDatasetStats' smart constructor.
data DatasetStats = DatasetStats'
  { -- | The total number of entries that contain at least one error.
    DatasetStats -> Maybe Natural
errorEntries :: Prelude.Maybe Prelude.Natural,
    -- | The total number of images in the dataset that have labels.
    DatasetStats -> Maybe Natural
labeledEntries :: Prelude.Maybe Prelude.Natural,
    -- | The total number of images in the dataset.
    DatasetStats -> Maybe Natural
totalEntries :: Prelude.Maybe Prelude.Natural,
    -- | The total number of labels declared in the dataset.
    DatasetStats -> Maybe Natural
totalLabels :: Prelude.Maybe Prelude.Natural
  }
  deriving (DatasetStats -> DatasetStats -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DatasetStats -> DatasetStats -> Bool
$c/= :: DatasetStats -> DatasetStats -> Bool
== :: DatasetStats -> DatasetStats -> Bool
$c== :: DatasetStats -> DatasetStats -> Bool
Prelude.Eq, ReadPrec [DatasetStats]
ReadPrec DatasetStats
Int -> ReadS DatasetStats
ReadS [DatasetStats]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DatasetStats]
$creadListPrec :: ReadPrec [DatasetStats]
readPrec :: ReadPrec DatasetStats
$creadPrec :: ReadPrec DatasetStats
readList :: ReadS [DatasetStats]
$creadList :: ReadS [DatasetStats]
readsPrec :: Int -> ReadS DatasetStats
$creadsPrec :: Int -> ReadS DatasetStats
Prelude.Read, Int -> DatasetStats -> ShowS
[DatasetStats] -> ShowS
DatasetStats -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DatasetStats] -> ShowS
$cshowList :: [DatasetStats] -> ShowS
show :: DatasetStats -> String
$cshow :: DatasetStats -> String
showsPrec :: Int -> DatasetStats -> ShowS
$cshowsPrec :: Int -> DatasetStats -> ShowS
Prelude.Show, forall x. Rep DatasetStats x -> DatasetStats
forall x. DatasetStats -> Rep DatasetStats x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DatasetStats x -> DatasetStats
$cfrom :: forall x. DatasetStats -> Rep DatasetStats x
Prelude.Generic)

-- |
-- Create a value of 'DatasetStats' 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:
--
-- 'errorEntries', 'datasetStats_errorEntries' - The total number of entries that contain at least one error.
--
-- 'labeledEntries', 'datasetStats_labeledEntries' - The total number of images in the dataset that have labels.
--
-- 'totalEntries', 'datasetStats_totalEntries' - The total number of images in the dataset.
--
-- 'totalLabels', 'datasetStats_totalLabels' - The total number of labels declared in the dataset.
newDatasetStats ::
  DatasetStats
newDatasetStats :: DatasetStats
newDatasetStats =
  DatasetStats'
    { $sel:errorEntries:DatasetStats' :: Maybe Natural
errorEntries = forall a. Maybe a
Prelude.Nothing,
      $sel:labeledEntries:DatasetStats' :: Maybe Natural
labeledEntries = forall a. Maybe a
Prelude.Nothing,
      $sel:totalEntries:DatasetStats' :: Maybe Natural
totalEntries = forall a. Maybe a
Prelude.Nothing,
      $sel:totalLabels:DatasetStats' :: Maybe Natural
totalLabels = forall a. Maybe a
Prelude.Nothing
    }

-- | The total number of entries that contain at least one error.
datasetStats_errorEntries :: Lens.Lens' DatasetStats (Prelude.Maybe Prelude.Natural)
datasetStats_errorEntries :: Lens' DatasetStats (Maybe Natural)
datasetStats_errorEntries = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DatasetStats' {Maybe Natural
errorEntries :: Maybe Natural
$sel:errorEntries:DatasetStats' :: DatasetStats -> Maybe Natural
errorEntries} -> Maybe Natural
errorEntries) (\s :: DatasetStats
s@DatasetStats' {} Maybe Natural
a -> DatasetStats
s {$sel:errorEntries:DatasetStats' :: Maybe Natural
errorEntries = Maybe Natural
a} :: DatasetStats)

-- | The total number of images in the dataset that have labels.
datasetStats_labeledEntries :: Lens.Lens' DatasetStats (Prelude.Maybe Prelude.Natural)
datasetStats_labeledEntries :: Lens' DatasetStats (Maybe Natural)
datasetStats_labeledEntries = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DatasetStats' {Maybe Natural
labeledEntries :: Maybe Natural
$sel:labeledEntries:DatasetStats' :: DatasetStats -> Maybe Natural
labeledEntries} -> Maybe Natural
labeledEntries) (\s :: DatasetStats
s@DatasetStats' {} Maybe Natural
a -> DatasetStats
s {$sel:labeledEntries:DatasetStats' :: Maybe Natural
labeledEntries = Maybe Natural
a} :: DatasetStats)

-- | The total number of images in the dataset.
datasetStats_totalEntries :: Lens.Lens' DatasetStats (Prelude.Maybe Prelude.Natural)
datasetStats_totalEntries :: Lens' DatasetStats (Maybe Natural)
datasetStats_totalEntries = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DatasetStats' {Maybe Natural
totalEntries :: Maybe Natural
$sel:totalEntries:DatasetStats' :: DatasetStats -> Maybe Natural
totalEntries} -> Maybe Natural
totalEntries) (\s :: DatasetStats
s@DatasetStats' {} Maybe Natural
a -> DatasetStats
s {$sel:totalEntries:DatasetStats' :: Maybe Natural
totalEntries = Maybe Natural
a} :: DatasetStats)

-- | The total number of labels declared in the dataset.
datasetStats_totalLabels :: Lens.Lens' DatasetStats (Prelude.Maybe Prelude.Natural)
datasetStats_totalLabels :: Lens' DatasetStats (Maybe Natural)
datasetStats_totalLabels = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DatasetStats' {Maybe Natural
totalLabels :: Maybe Natural
$sel:totalLabels:DatasetStats' :: DatasetStats -> Maybe Natural
totalLabels} -> Maybe Natural
totalLabels) (\s :: DatasetStats
s@DatasetStats' {} Maybe Natural
a -> DatasetStats
s {$sel:totalLabels:DatasetStats' :: Maybe Natural
totalLabels = Maybe Natural
a} :: DatasetStats)

instance Data.FromJSON DatasetStats where
  parseJSON :: Value -> Parser DatasetStats
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"DatasetStats"
      ( \Object
x ->
          Maybe Natural
-> Maybe Natural -> Maybe Natural -> Maybe Natural -> DatasetStats
DatasetStats'
            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
"ErrorEntries")
            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
"LabeledEntries")
            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
"TotalEntries")
            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
"TotalLabels")
      )

instance Prelude.Hashable DatasetStats where
  hashWithSalt :: Int -> DatasetStats -> Int
hashWithSalt Int
_salt DatasetStats' {Maybe Natural
totalLabels :: Maybe Natural
totalEntries :: Maybe Natural
labeledEntries :: Maybe Natural
errorEntries :: Maybe Natural
$sel:totalLabels:DatasetStats' :: DatasetStats -> Maybe Natural
$sel:totalEntries:DatasetStats' :: DatasetStats -> Maybe Natural
$sel:labeledEntries:DatasetStats' :: DatasetStats -> Maybe Natural
$sel:errorEntries:DatasetStats' :: DatasetStats -> Maybe Natural
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
errorEntries
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
labeledEntries
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
totalEntries
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
totalLabels

instance Prelude.NFData DatasetStats where
  rnf :: DatasetStats -> ()
rnf DatasetStats' {Maybe Natural
totalLabels :: Maybe Natural
totalEntries :: Maybe Natural
labeledEntries :: Maybe Natural
errorEntries :: Maybe Natural
$sel:totalLabels:DatasetStats' :: DatasetStats -> Maybe Natural
$sel:totalEntries:DatasetStats' :: DatasetStats -> Maybe Natural
$sel:labeledEntries:DatasetStats' :: DatasetStats -> Maybe Natural
$sel:errorEntries:DatasetStats' :: DatasetStats -> Maybe Natural
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
errorEntries
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
labeledEntries
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
totalEntries
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
totalLabels