{-# 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.TemplateVersionDefinition
-- 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.TemplateVersionDefinition 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.AnalysisDefaults
import Amazonka.QuickSight.Types.CalculatedField
import Amazonka.QuickSight.Types.ColumnConfiguration
import Amazonka.QuickSight.Types.DataSetConfiguration
import Amazonka.QuickSight.Types.FilterGroup
import Amazonka.QuickSight.Types.ParameterDeclaration
import Amazonka.QuickSight.Types.SheetDefinition

-- | The detailed definition of a template.
--
-- /See:/ 'newTemplateVersionDefinition' smart constructor.
data TemplateVersionDefinition = TemplateVersionDefinition'
  { TemplateVersionDefinition -> Maybe AnalysisDefaults
analysisDefaults :: Prelude.Maybe AnalysisDefaults,
    -- | An array of calculated field definitions for the template.
    TemplateVersionDefinition -> Maybe [CalculatedField]
calculatedFields :: Prelude.Maybe [CalculatedField],
    -- | An array of template-level column configurations. Column configurations
    -- are used to set default formatting for a column that\'s used throughout
    -- a template.
    TemplateVersionDefinition -> Maybe [ColumnConfiguration]
columnConfigurations :: Prelude.Maybe [ColumnConfiguration],
    -- | Filter definitions for a template.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/quicksight/latest/user/filtering-visual-data.html Filtering Data>
    -- in the /Amazon QuickSight User Guide/.
    TemplateVersionDefinition -> Maybe [FilterGroup]
filterGroups :: Prelude.Maybe [FilterGroup],
    -- | An array of parameter declarations for a template.
    --
    -- /Parameters/ are named variables that can transfer a value for use by an
    -- action or an object.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
    -- in the /Amazon QuickSight User Guide/.
    TemplateVersionDefinition -> Maybe [ParameterDeclaration]
parameterDeclarations :: Prelude.Maybe [ParameterDeclaration],
    -- | An array of sheet definitions for a template.
    TemplateVersionDefinition -> Maybe [SheetDefinition]
sheets :: Prelude.Maybe [SheetDefinition],
    -- | An array of dataset configurations. These configurations define the
    -- required columns for each dataset used within a template.
    TemplateVersionDefinition -> [DataSetConfiguration]
dataSetConfigurations :: [DataSetConfiguration]
  }
  deriving (TemplateVersionDefinition -> TemplateVersionDefinition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TemplateVersionDefinition -> TemplateVersionDefinition -> Bool
$c/= :: TemplateVersionDefinition -> TemplateVersionDefinition -> Bool
== :: TemplateVersionDefinition -> TemplateVersionDefinition -> Bool
$c== :: TemplateVersionDefinition -> TemplateVersionDefinition -> Bool
Prelude.Eq, Int -> TemplateVersionDefinition -> ShowS
[TemplateVersionDefinition] -> ShowS
TemplateVersionDefinition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TemplateVersionDefinition] -> ShowS
$cshowList :: [TemplateVersionDefinition] -> ShowS
show :: TemplateVersionDefinition -> String
$cshow :: TemplateVersionDefinition -> String
showsPrec :: Int -> TemplateVersionDefinition -> ShowS
$cshowsPrec :: Int -> TemplateVersionDefinition -> ShowS
Prelude.Show, forall x.
Rep TemplateVersionDefinition x -> TemplateVersionDefinition
forall x.
TemplateVersionDefinition -> Rep TemplateVersionDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep TemplateVersionDefinition x -> TemplateVersionDefinition
$cfrom :: forall x.
TemplateVersionDefinition -> Rep TemplateVersionDefinition x
Prelude.Generic)

-- |
-- Create a value of 'TemplateVersionDefinition' 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:
--
-- 'analysisDefaults', 'templateVersionDefinition_analysisDefaults' - Undocumented member.
--
-- 'calculatedFields', 'templateVersionDefinition_calculatedFields' - An array of calculated field definitions for the template.
--
-- 'columnConfigurations', 'templateVersionDefinition_columnConfigurations' - An array of template-level column configurations. Column configurations
-- are used to set default formatting for a column that\'s used throughout
-- a template.
--
-- 'filterGroups', 'templateVersionDefinition_filterGroups' - Filter definitions for a template.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/filtering-visual-data.html Filtering Data>
-- in the /Amazon QuickSight User Guide/.
--
-- 'parameterDeclarations', 'templateVersionDefinition_parameterDeclarations' - An array of parameter declarations for a template.
--
-- /Parameters/ are named variables that can transfer a value for use by an
-- action or an object.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
-- in the /Amazon QuickSight User Guide/.
--
-- 'sheets', 'templateVersionDefinition_sheets' - An array of sheet definitions for a template.
--
-- 'dataSetConfigurations', 'templateVersionDefinition_dataSetConfigurations' - An array of dataset configurations. These configurations define the
-- required columns for each dataset used within a template.
newTemplateVersionDefinition ::
  TemplateVersionDefinition
newTemplateVersionDefinition :: TemplateVersionDefinition
newTemplateVersionDefinition =
  TemplateVersionDefinition'
    { $sel:analysisDefaults:TemplateVersionDefinition' :: Maybe AnalysisDefaults
analysisDefaults =
        forall a. Maybe a
Prelude.Nothing,
      $sel:calculatedFields:TemplateVersionDefinition' :: Maybe [CalculatedField]
calculatedFields = forall a. Maybe a
Prelude.Nothing,
      $sel:columnConfigurations:TemplateVersionDefinition' :: Maybe [ColumnConfiguration]
columnConfigurations = forall a. Maybe a
Prelude.Nothing,
      $sel:filterGroups:TemplateVersionDefinition' :: Maybe [FilterGroup]
filterGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:parameterDeclarations:TemplateVersionDefinition' :: Maybe [ParameterDeclaration]
parameterDeclarations = forall a. Maybe a
Prelude.Nothing,
      $sel:sheets:TemplateVersionDefinition' :: Maybe [SheetDefinition]
sheets = forall a. Maybe a
Prelude.Nothing,
      $sel:dataSetConfigurations:TemplateVersionDefinition' :: [DataSetConfiguration]
dataSetConfigurations = forall a. Monoid a => a
Prelude.mempty
    }

-- | Undocumented member.
templateVersionDefinition_analysisDefaults :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe AnalysisDefaults)
templateVersionDefinition_analysisDefaults :: Lens' TemplateVersionDefinition (Maybe AnalysisDefaults)
templateVersionDefinition_analysisDefaults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TemplateVersionDefinition' {Maybe AnalysisDefaults
analysisDefaults :: Maybe AnalysisDefaults
$sel:analysisDefaults:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe AnalysisDefaults
analysisDefaults} -> Maybe AnalysisDefaults
analysisDefaults) (\s :: TemplateVersionDefinition
s@TemplateVersionDefinition' {} Maybe AnalysisDefaults
a -> TemplateVersionDefinition
s {$sel:analysisDefaults:TemplateVersionDefinition' :: Maybe AnalysisDefaults
analysisDefaults = Maybe AnalysisDefaults
a} :: TemplateVersionDefinition)

-- | An array of calculated field definitions for the template.
templateVersionDefinition_calculatedFields :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe [CalculatedField])
templateVersionDefinition_calculatedFields :: Lens' TemplateVersionDefinition (Maybe [CalculatedField])
templateVersionDefinition_calculatedFields = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TemplateVersionDefinition' {Maybe [CalculatedField]
calculatedFields :: Maybe [CalculatedField]
$sel:calculatedFields:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [CalculatedField]
calculatedFields} -> Maybe [CalculatedField]
calculatedFields) (\s :: TemplateVersionDefinition
s@TemplateVersionDefinition' {} Maybe [CalculatedField]
a -> TemplateVersionDefinition
s {$sel:calculatedFields:TemplateVersionDefinition' :: Maybe [CalculatedField]
calculatedFields = Maybe [CalculatedField]
a} :: TemplateVersionDefinition) 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 template-level column configurations. Column configurations
-- are used to set default formatting for a column that\'s used throughout
-- a template.
templateVersionDefinition_columnConfigurations :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe [ColumnConfiguration])
templateVersionDefinition_columnConfigurations :: Lens' TemplateVersionDefinition (Maybe [ColumnConfiguration])
templateVersionDefinition_columnConfigurations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TemplateVersionDefinition' {Maybe [ColumnConfiguration]
columnConfigurations :: Maybe [ColumnConfiguration]
$sel:columnConfigurations:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [ColumnConfiguration]
columnConfigurations} -> Maybe [ColumnConfiguration]
columnConfigurations) (\s :: TemplateVersionDefinition
s@TemplateVersionDefinition' {} Maybe [ColumnConfiguration]
a -> TemplateVersionDefinition
s {$sel:columnConfigurations:TemplateVersionDefinition' :: Maybe [ColumnConfiguration]
columnConfigurations = Maybe [ColumnConfiguration]
a} :: TemplateVersionDefinition) 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

-- | Filter definitions for a template.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/filtering-visual-data.html Filtering Data>
-- in the /Amazon QuickSight User Guide/.
templateVersionDefinition_filterGroups :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe [FilterGroup])
templateVersionDefinition_filterGroups :: Lens' TemplateVersionDefinition (Maybe [FilterGroup])
templateVersionDefinition_filterGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TemplateVersionDefinition' {Maybe [FilterGroup]
filterGroups :: Maybe [FilterGroup]
$sel:filterGroups:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [FilterGroup]
filterGroups} -> Maybe [FilterGroup]
filterGroups) (\s :: TemplateVersionDefinition
s@TemplateVersionDefinition' {} Maybe [FilterGroup]
a -> TemplateVersionDefinition
s {$sel:filterGroups:TemplateVersionDefinition' :: Maybe [FilterGroup]
filterGroups = Maybe [FilterGroup]
a} :: TemplateVersionDefinition) 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 parameter declarations for a template.
--
-- /Parameters/ are named variables that can transfer a value for use by an
-- action or an object.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/parameters-in-quicksight.html Parameters in Amazon QuickSight>
-- in the /Amazon QuickSight User Guide/.
templateVersionDefinition_parameterDeclarations :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe [ParameterDeclaration])
templateVersionDefinition_parameterDeclarations :: Lens' TemplateVersionDefinition (Maybe [ParameterDeclaration])
templateVersionDefinition_parameterDeclarations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TemplateVersionDefinition' {Maybe [ParameterDeclaration]
parameterDeclarations :: Maybe [ParameterDeclaration]
$sel:parameterDeclarations:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [ParameterDeclaration]
parameterDeclarations} -> Maybe [ParameterDeclaration]
parameterDeclarations) (\s :: TemplateVersionDefinition
s@TemplateVersionDefinition' {} Maybe [ParameterDeclaration]
a -> TemplateVersionDefinition
s {$sel:parameterDeclarations:TemplateVersionDefinition' :: Maybe [ParameterDeclaration]
parameterDeclarations = Maybe [ParameterDeclaration]
a} :: TemplateVersionDefinition) 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 sheet definitions for a template.
templateVersionDefinition_sheets :: Lens.Lens' TemplateVersionDefinition (Prelude.Maybe [SheetDefinition])
templateVersionDefinition_sheets :: Lens' TemplateVersionDefinition (Maybe [SheetDefinition])
templateVersionDefinition_sheets = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TemplateVersionDefinition' {Maybe [SheetDefinition]
sheets :: Maybe [SheetDefinition]
$sel:sheets:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [SheetDefinition]
sheets} -> Maybe [SheetDefinition]
sheets) (\s :: TemplateVersionDefinition
s@TemplateVersionDefinition' {} Maybe [SheetDefinition]
a -> TemplateVersionDefinition
s {$sel:sheets:TemplateVersionDefinition' :: Maybe [SheetDefinition]
sheets = Maybe [SheetDefinition]
a} :: TemplateVersionDefinition) 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 dataset configurations. These configurations define the
-- required columns for each dataset used within a template.
templateVersionDefinition_dataSetConfigurations :: Lens.Lens' TemplateVersionDefinition [DataSetConfiguration]
templateVersionDefinition_dataSetConfigurations :: Lens' TemplateVersionDefinition [DataSetConfiguration]
templateVersionDefinition_dataSetConfigurations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TemplateVersionDefinition' {[DataSetConfiguration]
dataSetConfigurations :: [DataSetConfiguration]
$sel:dataSetConfigurations:TemplateVersionDefinition' :: TemplateVersionDefinition -> [DataSetConfiguration]
dataSetConfigurations} -> [DataSetConfiguration]
dataSetConfigurations) (\s :: TemplateVersionDefinition
s@TemplateVersionDefinition' {} [DataSetConfiguration]
a -> TemplateVersionDefinition
s {$sel:dataSetConfigurations:TemplateVersionDefinition' :: [DataSetConfiguration]
dataSetConfigurations = [DataSetConfiguration]
a} :: TemplateVersionDefinition) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromJSON TemplateVersionDefinition where
  parseJSON :: Value -> Parser TemplateVersionDefinition
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"TemplateVersionDefinition"
      ( \Object
x ->
          Maybe AnalysisDefaults
-> Maybe [CalculatedField]
-> Maybe [ColumnConfiguration]
-> Maybe [FilterGroup]
-> Maybe [ParameterDeclaration]
-> Maybe [SheetDefinition]
-> [DataSetConfiguration]
-> TemplateVersionDefinition
TemplateVersionDefinition'
            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
"AnalysisDefaults")
            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
"CalculatedFields"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= 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 -> Parser (Maybe a)
Data..:? Key
"ColumnConfigurations"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= 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 -> Parser (Maybe a)
Data..:? Key
"FilterGroups" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= 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 -> Parser (Maybe a)
Data..:? Key
"ParameterDeclarations"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= 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 -> Parser (Maybe a)
Data..:? Key
"Sheets" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= 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 -> Parser (Maybe a)
Data..:? Key
"DataSetConfigurations"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
      )

instance Prelude.Hashable TemplateVersionDefinition where
  hashWithSalt :: Int -> TemplateVersionDefinition -> Int
hashWithSalt Int
_salt TemplateVersionDefinition' {[DataSetConfiguration]
Maybe [CalculatedField]
Maybe [ParameterDeclaration]
Maybe [ColumnConfiguration]
Maybe [FilterGroup]
Maybe [SheetDefinition]
Maybe AnalysisDefaults
dataSetConfigurations :: [DataSetConfiguration]
sheets :: Maybe [SheetDefinition]
parameterDeclarations :: Maybe [ParameterDeclaration]
filterGroups :: Maybe [FilterGroup]
columnConfigurations :: Maybe [ColumnConfiguration]
calculatedFields :: Maybe [CalculatedField]
analysisDefaults :: Maybe AnalysisDefaults
$sel:dataSetConfigurations:TemplateVersionDefinition' :: TemplateVersionDefinition -> [DataSetConfiguration]
$sel:sheets:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [SheetDefinition]
$sel:parameterDeclarations:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [ParameterDeclaration]
$sel:filterGroups:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [FilterGroup]
$sel:columnConfigurations:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [ColumnConfiguration]
$sel:calculatedFields:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [CalculatedField]
$sel:analysisDefaults:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe AnalysisDefaults
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AnalysisDefaults
analysisDefaults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [CalculatedField]
calculatedFields
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ColumnConfiguration]
columnConfigurations
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [FilterGroup]
filterGroups
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ParameterDeclaration]
parameterDeclarations
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SheetDefinition]
sheets
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [DataSetConfiguration]
dataSetConfigurations

instance Prelude.NFData TemplateVersionDefinition where
  rnf :: TemplateVersionDefinition -> ()
rnf TemplateVersionDefinition' {[DataSetConfiguration]
Maybe [CalculatedField]
Maybe [ParameterDeclaration]
Maybe [ColumnConfiguration]
Maybe [FilterGroup]
Maybe [SheetDefinition]
Maybe AnalysisDefaults
dataSetConfigurations :: [DataSetConfiguration]
sheets :: Maybe [SheetDefinition]
parameterDeclarations :: Maybe [ParameterDeclaration]
filterGroups :: Maybe [FilterGroup]
columnConfigurations :: Maybe [ColumnConfiguration]
calculatedFields :: Maybe [CalculatedField]
analysisDefaults :: Maybe AnalysisDefaults
$sel:dataSetConfigurations:TemplateVersionDefinition' :: TemplateVersionDefinition -> [DataSetConfiguration]
$sel:sheets:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [SheetDefinition]
$sel:parameterDeclarations:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [ParameterDeclaration]
$sel:filterGroups:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [FilterGroup]
$sel:columnConfigurations:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [ColumnConfiguration]
$sel:calculatedFields:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [CalculatedField]
$sel:analysisDefaults:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe AnalysisDefaults
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AnalysisDefaults
analysisDefaults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [CalculatedField]
calculatedFields
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ColumnConfiguration]
columnConfigurations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [FilterGroup]
filterGroups
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ParameterDeclaration]
parameterDeclarations
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [SheetDefinition]
sheets
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [DataSetConfiguration]
dataSetConfigurations

instance Data.ToJSON TemplateVersionDefinition where
  toJSON :: TemplateVersionDefinition -> Value
toJSON TemplateVersionDefinition' {[DataSetConfiguration]
Maybe [CalculatedField]
Maybe [ParameterDeclaration]
Maybe [ColumnConfiguration]
Maybe [FilterGroup]
Maybe [SheetDefinition]
Maybe AnalysisDefaults
dataSetConfigurations :: [DataSetConfiguration]
sheets :: Maybe [SheetDefinition]
parameterDeclarations :: Maybe [ParameterDeclaration]
filterGroups :: Maybe [FilterGroup]
columnConfigurations :: Maybe [ColumnConfiguration]
calculatedFields :: Maybe [CalculatedField]
analysisDefaults :: Maybe AnalysisDefaults
$sel:dataSetConfigurations:TemplateVersionDefinition' :: TemplateVersionDefinition -> [DataSetConfiguration]
$sel:sheets:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [SheetDefinition]
$sel:parameterDeclarations:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [ParameterDeclaration]
$sel:filterGroups:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [FilterGroup]
$sel:columnConfigurations:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [ColumnConfiguration]
$sel:calculatedFields:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe [CalculatedField]
$sel:analysisDefaults:TemplateVersionDefinition' :: TemplateVersionDefinition -> Maybe AnalysisDefaults
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AnalysisDefaults" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AnalysisDefaults
analysisDefaults,
            (Key
"CalculatedFields" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [CalculatedField]
calculatedFields,
            (Key
"ColumnConfigurations" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [ColumnConfiguration]
columnConfigurations,
            (Key
"FilterGroups" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [FilterGroup]
filterGroups,
            (Key
"ParameterDeclarations" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [ParameterDeclaration]
parameterDeclarations,
            (Key
"Sheets" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [SheetDefinition]
sheets,
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"DataSetConfigurations"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= [DataSetConfiguration]
dataSetConfigurations
              )
          ]
      )