{-# 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.IoTAnalytics.Types.DatasetSummary
-- 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.IoTAnalytics.Types.DatasetSummary 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.DatasetActionSummary
import Amazonka.IoTAnalytics.Types.DatasetStatus
import Amazonka.IoTAnalytics.Types.DatasetTrigger
import qualified Amazonka.Prelude as Prelude

-- | A summary of information about a dataset.
--
-- /See:/ 'newDatasetSummary' smart constructor.
data DatasetSummary = DatasetSummary'
  { -- | A list of @DataActionSummary@ objects.
    DatasetSummary -> Maybe (NonEmpty DatasetActionSummary)
actions :: Prelude.Maybe (Prelude.NonEmpty DatasetActionSummary),
    -- | The time the dataset was created.
    DatasetSummary -> Maybe POSIX
creationTime :: Prelude.Maybe Data.POSIX,
    -- | The name of the dataset.
    DatasetSummary -> Maybe Text
datasetName :: Prelude.Maybe Prelude.Text,
    -- | The last time the dataset was updated.
    DatasetSummary -> Maybe POSIX
lastUpdateTime :: Prelude.Maybe Data.POSIX,
    -- | The status of the dataset.
    DatasetSummary -> Maybe DatasetStatus
status :: Prelude.Maybe DatasetStatus,
    -- | A list of triggers. A trigger causes dataset content to be populated at
    -- a specified time interval or when another dataset is populated. The list
    -- of triggers can be empty or contain up to five @DataSetTrigger@ objects
    DatasetSummary -> Maybe [DatasetTrigger]
triggers :: Prelude.Maybe [DatasetTrigger]
  }
  deriving (DatasetSummary -> DatasetSummary -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DatasetSummary -> DatasetSummary -> Bool
$c/= :: DatasetSummary -> DatasetSummary -> Bool
== :: DatasetSummary -> DatasetSummary -> Bool
$c== :: DatasetSummary -> DatasetSummary -> Bool
Prelude.Eq, ReadPrec [DatasetSummary]
ReadPrec DatasetSummary
Int -> ReadS DatasetSummary
ReadS [DatasetSummary]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DatasetSummary]
$creadListPrec :: ReadPrec [DatasetSummary]
readPrec :: ReadPrec DatasetSummary
$creadPrec :: ReadPrec DatasetSummary
readList :: ReadS [DatasetSummary]
$creadList :: ReadS [DatasetSummary]
readsPrec :: Int -> ReadS DatasetSummary
$creadsPrec :: Int -> ReadS DatasetSummary
Prelude.Read, Int -> DatasetSummary -> ShowS
[DatasetSummary] -> ShowS
DatasetSummary -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DatasetSummary] -> ShowS
$cshowList :: [DatasetSummary] -> ShowS
show :: DatasetSummary -> String
$cshow :: DatasetSummary -> String
showsPrec :: Int -> DatasetSummary -> ShowS
$cshowsPrec :: Int -> DatasetSummary -> ShowS
Prelude.Show, forall x. Rep DatasetSummary x -> DatasetSummary
forall x. DatasetSummary -> Rep DatasetSummary x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DatasetSummary x -> DatasetSummary
$cfrom :: forall x. DatasetSummary -> Rep DatasetSummary x
Prelude.Generic)

-- |
-- Create a value of 'DatasetSummary' 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:
--
-- 'actions', 'datasetSummary_actions' - A list of @DataActionSummary@ objects.
--
-- 'creationTime', 'datasetSummary_creationTime' - The time the dataset was created.
--
-- 'datasetName', 'datasetSummary_datasetName' - The name of the dataset.
--
-- 'lastUpdateTime', 'datasetSummary_lastUpdateTime' - The last time the dataset was updated.
--
-- 'status', 'datasetSummary_status' - The status of the dataset.
--
-- 'triggers', 'datasetSummary_triggers' - A list of triggers. A trigger causes dataset content to be populated at
-- a specified time interval or when another dataset is populated. The list
-- of triggers can be empty or contain up to five @DataSetTrigger@ objects
newDatasetSummary ::
  DatasetSummary
newDatasetSummary :: DatasetSummary
newDatasetSummary =
  DatasetSummary'
    { $sel:actions:DatasetSummary' :: Maybe (NonEmpty DatasetActionSummary)
actions = forall a. Maybe a
Prelude.Nothing,
      $sel:creationTime:DatasetSummary' :: Maybe POSIX
creationTime = forall a. Maybe a
Prelude.Nothing,
      $sel:datasetName:DatasetSummary' :: Maybe Text
datasetName = forall a. Maybe a
Prelude.Nothing,
      $sel:lastUpdateTime:DatasetSummary' :: Maybe POSIX
lastUpdateTime = forall a. Maybe a
Prelude.Nothing,
      $sel:status:DatasetSummary' :: Maybe DatasetStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:triggers:DatasetSummary' :: Maybe [DatasetTrigger]
triggers = forall a. Maybe a
Prelude.Nothing
    }

-- | A list of @DataActionSummary@ objects.
datasetSummary_actions :: Lens.Lens' DatasetSummary (Prelude.Maybe (Prelude.NonEmpty DatasetActionSummary))
datasetSummary_actions :: Lens' DatasetSummary (Maybe (NonEmpty DatasetActionSummary))
datasetSummary_actions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DatasetSummary' {Maybe (NonEmpty DatasetActionSummary)
actions :: Maybe (NonEmpty DatasetActionSummary)
$sel:actions:DatasetSummary' :: DatasetSummary -> Maybe (NonEmpty DatasetActionSummary)
actions} -> Maybe (NonEmpty DatasetActionSummary)
actions) (\s :: DatasetSummary
s@DatasetSummary' {} Maybe (NonEmpty DatasetActionSummary)
a -> DatasetSummary
s {$sel:actions:DatasetSummary' :: Maybe (NonEmpty DatasetActionSummary)
actions = Maybe (NonEmpty DatasetActionSummary)
a} :: DatasetSummary) 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 time the dataset was created.
datasetSummary_creationTime :: Lens.Lens' DatasetSummary (Prelude.Maybe Prelude.UTCTime)
datasetSummary_creationTime :: Lens' DatasetSummary (Maybe UTCTime)
datasetSummary_creationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DatasetSummary' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:DatasetSummary' :: DatasetSummary -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: DatasetSummary
s@DatasetSummary' {} Maybe POSIX
a -> DatasetSummary
s {$sel:creationTime:DatasetSummary' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: DatasetSummary) 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 name of the dataset.
datasetSummary_datasetName :: Lens.Lens' DatasetSummary (Prelude.Maybe Prelude.Text)
datasetSummary_datasetName :: Lens' DatasetSummary (Maybe Text)
datasetSummary_datasetName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DatasetSummary' {Maybe Text
datasetName :: Maybe Text
$sel:datasetName:DatasetSummary' :: DatasetSummary -> Maybe Text
datasetName} -> Maybe Text
datasetName) (\s :: DatasetSummary
s@DatasetSummary' {} Maybe Text
a -> DatasetSummary
s {$sel:datasetName:DatasetSummary' :: Maybe Text
datasetName = Maybe Text
a} :: DatasetSummary)

-- | The last time the dataset was updated.
datasetSummary_lastUpdateTime :: Lens.Lens' DatasetSummary (Prelude.Maybe Prelude.UTCTime)
datasetSummary_lastUpdateTime :: Lens' DatasetSummary (Maybe UTCTime)
datasetSummary_lastUpdateTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DatasetSummary' {Maybe POSIX
lastUpdateTime :: Maybe POSIX
$sel:lastUpdateTime:DatasetSummary' :: DatasetSummary -> Maybe POSIX
lastUpdateTime} -> Maybe POSIX
lastUpdateTime) (\s :: DatasetSummary
s@DatasetSummary' {} Maybe POSIX
a -> DatasetSummary
s {$sel:lastUpdateTime:DatasetSummary' :: Maybe POSIX
lastUpdateTime = Maybe POSIX
a} :: DatasetSummary) 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 status of the dataset.
datasetSummary_status :: Lens.Lens' DatasetSummary (Prelude.Maybe DatasetStatus)
datasetSummary_status :: Lens' DatasetSummary (Maybe DatasetStatus)
datasetSummary_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DatasetSummary' {Maybe DatasetStatus
status :: Maybe DatasetStatus
$sel:status:DatasetSummary' :: DatasetSummary -> Maybe DatasetStatus
status} -> Maybe DatasetStatus
status) (\s :: DatasetSummary
s@DatasetSummary' {} Maybe DatasetStatus
a -> DatasetSummary
s {$sel:status:DatasetSummary' :: Maybe DatasetStatus
status = Maybe DatasetStatus
a} :: DatasetSummary)

-- | A list of triggers. A trigger causes dataset content to be populated at
-- a specified time interval or when another dataset is populated. The list
-- of triggers can be empty or contain up to five @DataSetTrigger@ objects
datasetSummary_triggers :: Lens.Lens' DatasetSummary (Prelude.Maybe [DatasetTrigger])
datasetSummary_triggers :: Lens' DatasetSummary (Maybe [DatasetTrigger])
datasetSummary_triggers = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DatasetSummary' {Maybe [DatasetTrigger]
triggers :: Maybe [DatasetTrigger]
$sel:triggers:DatasetSummary' :: DatasetSummary -> Maybe [DatasetTrigger]
triggers} -> Maybe [DatasetTrigger]
triggers) (\s :: DatasetSummary
s@DatasetSummary' {} Maybe [DatasetTrigger]
a -> DatasetSummary
s {$sel:triggers:DatasetSummary' :: Maybe [DatasetTrigger]
triggers = Maybe [DatasetTrigger]
a} :: DatasetSummary) 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

instance Data.FromJSON DatasetSummary where
  parseJSON :: Value -> Parser DatasetSummary
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"DatasetSummary"
      ( \Object
x ->
          Maybe (NonEmpty DatasetActionSummary)
-> Maybe POSIX
-> Maybe Text
-> Maybe POSIX
-> Maybe DatasetStatus
-> Maybe [DatasetTrigger]
-> DatasetSummary
DatasetSummary'
            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
"actions")
            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
"creationTime")
            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
"datasetName")
            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
"lastUpdateTime")
            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")
            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
"triggers" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable DatasetSummary where
  hashWithSalt :: Int -> DatasetSummary -> Int
hashWithSalt Int
_salt DatasetSummary' {Maybe [DatasetTrigger]
Maybe (NonEmpty DatasetActionSummary)
Maybe Text
Maybe POSIX
Maybe DatasetStatus
triggers :: Maybe [DatasetTrigger]
status :: Maybe DatasetStatus
lastUpdateTime :: Maybe POSIX
datasetName :: Maybe Text
creationTime :: Maybe POSIX
actions :: Maybe (NonEmpty DatasetActionSummary)
$sel:triggers:DatasetSummary' :: DatasetSummary -> Maybe [DatasetTrigger]
$sel:status:DatasetSummary' :: DatasetSummary -> Maybe DatasetStatus
$sel:lastUpdateTime:DatasetSummary' :: DatasetSummary -> Maybe POSIX
$sel:datasetName:DatasetSummary' :: DatasetSummary -> Maybe Text
$sel:creationTime:DatasetSummary' :: DatasetSummary -> Maybe POSIX
$sel:actions:DatasetSummary' :: DatasetSummary -> Maybe (NonEmpty DatasetActionSummary)
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty DatasetActionSummary)
actions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
creationTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
datasetName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastUpdateTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DatasetStatus
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [DatasetTrigger]
triggers

instance Prelude.NFData DatasetSummary where
  rnf :: DatasetSummary -> ()
rnf DatasetSummary' {Maybe [DatasetTrigger]
Maybe (NonEmpty DatasetActionSummary)
Maybe Text
Maybe POSIX
Maybe DatasetStatus
triggers :: Maybe [DatasetTrigger]
status :: Maybe DatasetStatus
lastUpdateTime :: Maybe POSIX
datasetName :: Maybe Text
creationTime :: Maybe POSIX
actions :: Maybe (NonEmpty DatasetActionSummary)
$sel:triggers:DatasetSummary' :: DatasetSummary -> Maybe [DatasetTrigger]
$sel:status:DatasetSummary' :: DatasetSummary -> Maybe DatasetStatus
$sel:lastUpdateTime:DatasetSummary' :: DatasetSummary -> Maybe POSIX
$sel:datasetName:DatasetSummary' :: DatasetSummary -> Maybe Text
$sel:creationTime:DatasetSummary' :: DatasetSummary -> Maybe POSIX
$sel:actions:DatasetSummary' :: DatasetSummary -> Maybe (NonEmpty DatasetActionSummary)
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty DatasetActionSummary)
actions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
creationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
datasetName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastUpdateTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DatasetStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [DatasetTrigger]
triggers