{-# 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.QuickSight.Types.ThemeVersion
-- 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.QuickSight.Types.ThemeVersion 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
import Amazonka.QuickSight.Types.ResourceStatus
import Amazonka.QuickSight.Types.ThemeConfiguration
import Amazonka.QuickSight.Types.ThemeError

-- | A version of a theme.
--
-- /See:/ 'newThemeVersion' smart constructor.
data ThemeVersion = ThemeVersion'
  { -- | The Amazon Resource Name (ARN) of the resource.
    ThemeVersion -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The Amazon QuickSight-defined ID of the theme that a custom theme
    -- inherits from. All themes initially inherit from a default Amazon
    -- QuickSight theme.
    ThemeVersion -> Maybe Text
baseThemeId :: Prelude.Maybe Prelude.Text,
    -- | The theme configuration, which contains all the theme display
    -- properties.
    ThemeVersion -> Maybe ThemeConfiguration
configuration :: Prelude.Maybe ThemeConfiguration,
    -- | The date and time that this theme version was created.
    ThemeVersion -> Maybe POSIX
createdTime :: Prelude.Maybe Data.POSIX,
    -- | The description of the theme.
    ThemeVersion -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Errors associated with the theme.
    ThemeVersion -> Maybe (NonEmpty ThemeError)
errors :: Prelude.Maybe (Prelude.NonEmpty ThemeError),
    -- | The status of the theme version.
    ThemeVersion -> Maybe ResourceStatus
status :: Prelude.Maybe ResourceStatus,
    -- | The version number of the theme.
    ThemeVersion -> Maybe Natural
versionNumber :: Prelude.Maybe Prelude.Natural
  }
  deriving (ThemeVersion -> ThemeVersion -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ThemeVersion -> ThemeVersion -> Bool
$c/= :: ThemeVersion -> ThemeVersion -> Bool
== :: ThemeVersion -> ThemeVersion -> Bool
$c== :: ThemeVersion -> ThemeVersion -> Bool
Prelude.Eq, ReadPrec [ThemeVersion]
ReadPrec ThemeVersion
Int -> ReadS ThemeVersion
ReadS [ThemeVersion]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ThemeVersion]
$creadListPrec :: ReadPrec [ThemeVersion]
readPrec :: ReadPrec ThemeVersion
$creadPrec :: ReadPrec ThemeVersion
readList :: ReadS [ThemeVersion]
$creadList :: ReadS [ThemeVersion]
readsPrec :: Int -> ReadS ThemeVersion
$creadsPrec :: Int -> ReadS ThemeVersion
Prelude.Read, Int -> ThemeVersion -> ShowS
[ThemeVersion] -> ShowS
ThemeVersion -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ThemeVersion] -> ShowS
$cshowList :: [ThemeVersion] -> ShowS
show :: ThemeVersion -> String
$cshow :: ThemeVersion -> String
showsPrec :: Int -> ThemeVersion -> ShowS
$cshowsPrec :: Int -> ThemeVersion -> ShowS
Prelude.Show, forall x. Rep ThemeVersion x -> ThemeVersion
forall x. ThemeVersion -> Rep ThemeVersion x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ThemeVersion x -> ThemeVersion
$cfrom :: forall x. ThemeVersion -> Rep ThemeVersion x
Prelude.Generic)

-- |
-- Create a value of 'ThemeVersion' 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:
--
-- 'arn', 'themeVersion_arn' - The Amazon Resource Name (ARN) of the resource.
--
-- 'baseThemeId', 'themeVersion_baseThemeId' - The Amazon QuickSight-defined ID of the theme that a custom theme
-- inherits from. All themes initially inherit from a default Amazon
-- QuickSight theme.
--
-- 'configuration', 'themeVersion_configuration' - The theme configuration, which contains all the theme display
-- properties.
--
-- 'createdTime', 'themeVersion_createdTime' - The date and time that this theme version was created.
--
-- 'description', 'themeVersion_description' - The description of the theme.
--
-- 'errors', 'themeVersion_errors' - Errors associated with the theme.
--
-- 'status', 'themeVersion_status' - The status of the theme version.
--
-- 'versionNumber', 'themeVersion_versionNumber' - The version number of the theme.
newThemeVersion ::
  ThemeVersion
newThemeVersion :: ThemeVersion
newThemeVersion =
  ThemeVersion'
    { $sel:arn:ThemeVersion' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:baseThemeId:ThemeVersion' :: Maybe Text
baseThemeId = forall a. Maybe a
Prelude.Nothing,
      $sel:configuration:ThemeVersion' :: Maybe ThemeConfiguration
configuration = forall a. Maybe a
Prelude.Nothing,
      $sel:createdTime:ThemeVersion' :: Maybe POSIX
createdTime = forall a. Maybe a
Prelude.Nothing,
      $sel:description:ThemeVersion' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:errors:ThemeVersion' :: Maybe (NonEmpty ThemeError)
errors = forall a. Maybe a
Prelude.Nothing,
      $sel:status:ThemeVersion' :: Maybe ResourceStatus
status = forall a. Maybe a
Prelude.Nothing,
      $sel:versionNumber:ThemeVersion' :: Maybe Natural
versionNumber = forall a. Maybe a
Prelude.Nothing
    }

-- | The Amazon Resource Name (ARN) of the resource.
themeVersion_arn :: Lens.Lens' ThemeVersion (Prelude.Maybe Prelude.Text)
themeVersion_arn :: Lens' ThemeVersion (Maybe Text)
themeVersion_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ThemeVersion' {Maybe Text
arn :: Maybe Text
$sel:arn:ThemeVersion' :: ThemeVersion -> Maybe Text
arn} -> Maybe Text
arn) (\s :: ThemeVersion
s@ThemeVersion' {} Maybe Text
a -> ThemeVersion
s {$sel:arn:ThemeVersion' :: Maybe Text
arn = Maybe Text
a} :: ThemeVersion)

-- | The Amazon QuickSight-defined ID of the theme that a custom theme
-- inherits from. All themes initially inherit from a default Amazon
-- QuickSight theme.
themeVersion_baseThemeId :: Lens.Lens' ThemeVersion (Prelude.Maybe Prelude.Text)
themeVersion_baseThemeId :: Lens' ThemeVersion (Maybe Text)
themeVersion_baseThemeId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ThemeVersion' {Maybe Text
baseThemeId :: Maybe Text
$sel:baseThemeId:ThemeVersion' :: ThemeVersion -> Maybe Text
baseThemeId} -> Maybe Text
baseThemeId) (\s :: ThemeVersion
s@ThemeVersion' {} Maybe Text
a -> ThemeVersion
s {$sel:baseThemeId:ThemeVersion' :: Maybe Text
baseThemeId = Maybe Text
a} :: ThemeVersion)

-- | The theme configuration, which contains all the theme display
-- properties.
themeVersion_configuration :: Lens.Lens' ThemeVersion (Prelude.Maybe ThemeConfiguration)
themeVersion_configuration :: Lens' ThemeVersion (Maybe ThemeConfiguration)
themeVersion_configuration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ThemeVersion' {Maybe ThemeConfiguration
configuration :: Maybe ThemeConfiguration
$sel:configuration:ThemeVersion' :: ThemeVersion -> Maybe ThemeConfiguration
configuration} -> Maybe ThemeConfiguration
configuration) (\s :: ThemeVersion
s@ThemeVersion' {} Maybe ThemeConfiguration
a -> ThemeVersion
s {$sel:configuration:ThemeVersion' :: Maybe ThemeConfiguration
configuration = Maybe ThemeConfiguration
a} :: ThemeVersion)

-- | The date and time that this theme version was created.
themeVersion_createdTime :: Lens.Lens' ThemeVersion (Prelude.Maybe Prelude.UTCTime)
themeVersion_createdTime :: Lens' ThemeVersion (Maybe UTCTime)
themeVersion_createdTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ThemeVersion' {Maybe POSIX
createdTime :: Maybe POSIX
$sel:createdTime:ThemeVersion' :: ThemeVersion -> Maybe POSIX
createdTime} -> Maybe POSIX
createdTime) (\s :: ThemeVersion
s@ThemeVersion' {} Maybe POSIX
a -> ThemeVersion
s {$sel:createdTime:ThemeVersion' :: Maybe POSIX
createdTime = Maybe POSIX
a} :: ThemeVersion) 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 description of the theme.
themeVersion_description :: Lens.Lens' ThemeVersion (Prelude.Maybe Prelude.Text)
themeVersion_description :: Lens' ThemeVersion (Maybe Text)
themeVersion_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ThemeVersion' {Maybe Text
description :: Maybe Text
$sel:description:ThemeVersion' :: ThemeVersion -> Maybe Text
description} -> Maybe Text
description) (\s :: ThemeVersion
s@ThemeVersion' {} Maybe Text
a -> ThemeVersion
s {$sel:description:ThemeVersion' :: Maybe Text
description = Maybe Text
a} :: ThemeVersion)

-- | Errors associated with the theme.
themeVersion_errors :: Lens.Lens' ThemeVersion (Prelude.Maybe (Prelude.NonEmpty ThemeError))
themeVersion_errors :: Lens' ThemeVersion (Maybe (NonEmpty ThemeError))
themeVersion_errors = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ThemeVersion' {Maybe (NonEmpty ThemeError)
errors :: Maybe (NonEmpty ThemeError)
$sel:errors:ThemeVersion' :: ThemeVersion -> Maybe (NonEmpty ThemeError)
errors} -> Maybe (NonEmpty ThemeError)
errors) (\s :: ThemeVersion
s@ThemeVersion' {} Maybe (NonEmpty ThemeError)
a -> ThemeVersion
s {$sel:errors:ThemeVersion' :: Maybe (NonEmpty ThemeError)
errors = Maybe (NonEmpty ThemeError)
a} :: ThemeVersion) 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 of the theme version.
themeVersion_status :: Lens.Lens' ThemeVersion (Prelude.Maybe ResourceStatus)
themeVersion_status :: Lens' ThemeVersion (Maybe ResourceStatus)
themeVersion_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ThemeVersion' {Maybe ResourceStatus
status :: Maybe ResourceStatus
$sel:status:ThemeVersion' :: ThemeVersion -> Maybe ResourceStatus
status} -> Maybe ResourceStatus
status) (\s :: ThemeVersion
s@ThemeVersion' {} Maybe ResourceStatus
a -> ThemeVersion
s {$sel:status:ThemeVersion' :: Maybe ResourceStatus
status = Maybe ResourceStatus
a} :: ThemeVersion)

-- | The version number of the theme.
themeVersion_versionNumber :: Lens.Lens' ThemeVersion (Prelude.Maybe Prelude.Natural)
themeVersion_versionNumber :: Lens' ThemeVersion (Maybe Natural)
themeVersion_versionNumber = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ThemeVersion' {Maybe Natural
versionNumber :: Maybe Natural
$sel:versionNumber:ThemeVersion' :: ThemeVersion -> Maybe Natural
versionNumber} -> Maybe Natural
versionNumber) (\s :: ThemeVersion
s@ThemeVersion' {} Maybe Natural
a -> ThemeVersion
s {$sel:versionNumber:ThemeVersion' :: Maybe Natural
versionNumber = Maybe Natural
a} :: ThemeVersion)

instance Data.FromJSON ThemeVersion where
  parseJSON :: Value -> Parser ThemeVersion
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ThemeVersion"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe ThemeConfiguration
-> Maybe POSIX
-> Maybe Text
-> Maybe (NonEmpty ThemeError)
-> Maybe ResourceStatus
-> Maybe Natural
-> ThemeVersion
ThemeVersion'
            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
"Arn")
            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
"BaseThemeId")
            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
"Configuration")
            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
"CreatedTime")
            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
"Description")
            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
"Errors")
            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
"VersionNumber")
      )

instance Prelude.Hashable ThemeVersion where
  hashWithSalt :: Int -> ThemeVersion -> Int
hashWithSalt Int
_salt ThemeVersion' {Maybe Natural
Maybe (NonEmpty ThemeError)
Maybe Text
Maybe POSIX
Maybe ResourceStatus
Maybe ThemeConfiguration
versionNumber :: Maybe Natural
status :: Maybe ResourceStatus
errors :: Maybe (NonEmpty ThemeError)
description :: Maybe Text
createdTime :: Maybe POSIX
configuration :: Maybe ThemeConfiguration
baseThemeId :: Maybe Text
arn :: Maybe Text
$sel:versionNumber:ThemeVersion' :: ThemeVersion -> Maybe Natural
$sel:status:ThemeVersion' :: ThemeVersion -> Maybe ResourceStatus
$sel:errors:ThemeVersion' :: ThemeVersion -> Maybe (NonEmpty ThemeError)
$sel:description:ThemeVersion' :: ThemeVersion -> Maybe Text
$sel:createdTime:ThemeVersion' :: ThemeVersion -> Maybe POSIX
$sel:configuration:ThemeVersion' :: ThemeVersion -> Maybe ThemeConfiguration
$sel:baseThemeId:ThemeVersion' :: ThemeVersion -> Maybe Text
$sel:arn:ThemeVersion' :: ThemeVersion -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
baseThemeId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ThemeConfiguration
configuration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty ThemeError)
errors
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResourceStatus
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
versionNumber

instance Prelude.NFData ThemeVersion where
  rnf :: ThemeVersion -> ()
rnf ThemeVersion' {Maybe Natural
Maybe (NonEmpty ThemeError)
Maybe Text
Maybe POSIX
Maybe ResourceStatus
Maybe ThemeConfiguration
versionNumber :: Maybe Natural
status :: Maybe ResourceStatus
errors :: Maybe (NonEmpty ThemeError)
description :: Maybe Text
createdTime :: Maybe POSIX
configuration :: Maybe ThemeConfiguration
baseThemeId :: Maybe Text
arn :: Maybe Text
$sel:versionNumber:ThemeVersion' :: ThemeVersion -> Maybe Natural
$sel:status:ThemeVersion' :: ThemeVersion -> Maybe ResourceStatus
$sel:errors:ThemeVersion' :: ThemeVersion -> Maybe (NonEmpty ThemeError)
$sel:description:ThemeVersion' :: ThemeVersion -> Maybe Text
$sel:createdTime:ThemeVersion' :: ThemeVersion -> Maybe POSIX
$sel:configuration:ThemeVersion' :: ThemeVersion -> Maybe ThemeConfiguration
$sel:baseThemeId:ThemeVersion' :: ThemeVersion -> Maybe Text
$sel:arn:ThemeVersion' :: ThemeVersion -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
baseThemeId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ThemeConfiguration
configuration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty ThemeError)
errors
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResourceStatus
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
versionNumber