{-# 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.AnalysisDefinition
-- 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.AnalysisDefinition 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.DataSetIdentifierDeclaration
import Amazonka.QuickSight.Types.FilterGroup
import Amazonka.QuickSight.Types.ParameterDeclaration
import Amazonka.QuickSight.Types.SheetDefinition

-- | The definition of an analysis.
--
-- /See:/ 'newAnalysisDefinition' smart constructor.
data AnalysisDefinition = AnalysisDefinition'
  { AnalysisDefinition -> Maybe AnalysisDefaults
analysisDefaults :: Prelude.Maybe AnalysisDefaults,
    -- | An array of calculated field definitions for the analysis.
    AnalysisDefinition -> Maybe [CalculatedField]
calculatedFields :: Prelude.Maybe [CalculatedField],
    -- | An array of analysis-level column configurations. Column configurations
    -- can be used to set default formatting for a column to be used throughout
    -- an analysis.
    AnalysisDefinition -> Maybe [ColumnConfiguration]
columnConfigurations :: Prelude.Maybe [ColumnConfiguration],
    -- | Filter definitions for an analysis.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
    -- in the /Amazon QuickSight User Guide/.
    AnalysisDefinition -> Maybe [FilterGroup]
filterGroups :: Prelude.Maybe [FilterGroup],
    -- | An array of parameter declarations for an analysis.
    --
    -- 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/.
    AnalysisDefinition -> Maybe [ParameterDeclaration]
parameterDeclarations :: Prelude.Maybe [ParameterDeclaration],
    -- | An array of sheet definitions for an analysis. Each @SheetDefinition@
    -- provides detailed information about a sheet within this analysis.
    AnalysisDefinition -> Maybe [SheetDefinition]
sheets :: Prelude.Maybe [SheetDefinition],
    -- | An array of dataset identifier declarations. This mapping allows the
    -- usage of dataset identifiers instead of dataset ARNs throughout analysis
    -- sub-structures.
    AnalysisDefinition -> NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations :: Prelude.NonEmpty DataSetIdentifierDeclaration
  }
  deriving (AnalysisDefinition -> AnalysisDefinition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AnalysisDefinition -> AnalysisDefinition -> Bool
$c/= :: AnalysisDefinition -> AnalysisDefinition -> Bool
== :: AnalysisDefinition -> AnalysisDefinition -> Bool
$c== :: AnalysisDefinition -> AnalysisDefinition -> Bool
Prelude.Eq, Int -> AnalysisDefinition -> ShowS
[AnalysisDefinition] -> ShowS
AnalysisDefinition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AnalysisDefinition] -> ShowS
$cshowList :: [AnalysisDefinition] -> ShowS
show :: AnalysisDefinition -> String
$cshow :: AnalysisDefinition -> String
showsPrec :: Int -> AnalysisDefinition -> ShowS
$cshowsPrec :: Int -> AnalysisDefinition -> ShowS
Prelude.Show, forall x. Rep AnalysisDefinition x -> AnalysisDefinition
forall x. AnalysisDefinition -> Rep AnalysisDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AnalysisDefinition x -> AnalysisDefinition
$cfrom :: forall x. AnalysisDefinition -> Rep AnalysisDefinition x
Prelude.Generic)

-- |
-- Create a value of 'AnalysisDefinition' 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', 'analysisDefinition_analysisDefaults' - Undocumented member.
--
-- 'calculatedFields', 'analysisDefinition_calculatedFields' - An array of calculated field definitions for the analysis.
--
-- 'columnConfigurations', 'analysisDefinition_columnConfigurations' - An array of analysis-level column configurations. Column configurations
-- can be used to set default formatting for a column to be used throughout
-- an analysis.
--
-- 'filterGroups', 'analysisDefinition_filterGroups' - Filter definitions for an analysis.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
-- in the /Amazon QuickSight User Guide/.
--
-- 'parameterDeclarations', 'analysisDefinition_parameterDeclarations' - An array of parameter declarations for an analysis.
--
-- 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', 'analysisDefinition_sheets' - An array of sheet definitions for an analysis. Each @SheetDefinition@
-- provides detailed information about a sheet within this analysis.
--
-- 'dataSetIdentifierDeclarations', 'analysisDefinition_dataSetIdentifierDeclarations' - An array of dataset identifier declarations. This mapping allows the
-- usage of dataset identifiers instead of dataset ARNs throughout analysis
-- sub-structures.
newAnalysisDefinition ::
  -- | 'dataSetIdentifierDeclarations'
  Prelude.NonEmpty DataSetIdentifierDeclaration ->
  AnalysisDefinition
newAnalysisDefinition :: NonEmpty DataSetIdentifierDeclaration -> AnalysisDefinition
newAnalysisDefinition NonEmpty DataSetIdentifierDeclaration
pDataSetIdentifierDeclarations_ =
  AnalysisDefinition'
    { $sel:analysisDefaults:AnalysisDefinition' :: Maybe AnalysisDefaults
analysisDefaults =
        forall a. Maybe a
Prelude.Nothing,
      $sel:calculatedFields:AnalysisDefinition' :: Maybe [CalculatedField]
calculatedFields = forall a. Maybe a
Prelude.Nothing,
      $sel:columnConfigurations:AnalysisDefinition' :: Maybe [ColumnConfiguration]
columnConfigurations = forall a. Maybe a
Prelude.Nothing,
      $sel:filterGroups:AnalysisDefinition' :: Maybe [FilterGroup]
filterGroups = forall a. Maybe a
Prelude.Nothing,
      $sel:parameterDeclarations:AnalysisDefinition' :: Maybe [ParameterDeclaration]
parameterDeclarations = forall a. Maybe a
Prelude.Nothing,
      $sel:sheets:AnalysisDefinition' :: Maybe [SheetDefinition]
sheets = forall a. Maybe a
Prelude.Nothing,
      $sel:dataSetIdentifierDeclarations:AnalysisDefinition' :: NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations =
        forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced forall t b. AReview t b -> b -> t
Lens.# NonEmpty DataSetIdentifierDeclaration
pDataSetIdentifierDeclarations_
    }

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

-- | An array of calculated field definitions for the analysis.
analysisDefinition_calculatedFields :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [CalculatedField])
analysisDefinition_calculatedFields :: Lens' AnalysisDefinition (Maybe [CalculatedField])
analysisDefinition_calculatedFields = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnalysisDefinition' {Maybe [CalculatedField]
calculatedFields :: Maybe [CalculatedField]
$sel:calculatedFields:AnalysisDefinition' :: AnalysisDefinition -> Maybe [CalculatedField]
calculatedFields} -> Maybe [CalculatedField]
calculatedFields) (\s :: AnalysisDefinition
s@AnalysisDefinition' {} Maybe [CalculatedField]
a -> AnalysisDefinition
s {$sel:calculatedFields:AnalysisDefinition' :: Maybe [CalculatedField]
calculatedFields = Maybe [CalculatedField]
a} :: AnalysisDefinition) 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 analysis-level column configurations. Column configurations
-- can be used to set default formatting for a column to be used throughout
-- an analysis.
analysisDefinition_columnConfigurations :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [ColumnConfiguration])
analysisDefinition_columnConfigurations :: Lens' AnalysisDefinition (Maybe [ColumnConfiguration])
analysisDefinition_columnConfigurations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnalysisDefinition' {Maybe [ColumnConfiguration]
columnConfigurations :: Maybe [ColumnConfiguration]
$sel:columnConfigurations:AnalysisDefinition' :: AnalysisDefinition -> Maybe [ColumnConfiguration]
columnConfigurations} -> Maybe [ColumnConfiguration]
columnConfigurations) (\s :: AnalysisDefinition
s@AnalysisDefinition' {} Maybe [ColumnConfiguration]
a -> AnalysisDefinition
s {$sel:columnConfigurations:AnalysisDefinition' :: Maybe [ColumnConfiguration]
columnConfigurations = Maybe [ColumnConfiguration]
a} :: AnalysisDefinition) 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 an analysis.
--
-- For more information, see
-- <https://docs.aws.amazon.com/quicksight/latest/user/adding-a-filter.html Filtering Data in Amazon QuickSight>
-- in the /Amazon QuickSight User Guide/.
analysisDefinition_filterGroups :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [FilterGroup])
analysisDefinition_filterGroups :: Lens' AnalysisDefinition (Maybe [FilterGroup])
analysisDefinition_filterGroups = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnalysisDefinition' {Maybe [FilterGroup]
filterGroups :: Maybe [FilterGroup]
$sel:filterGroups:AnalysisDefinition' :: AnalysisDefinition -> Maybe [FilterGroup]
filterGroups} -> Maybe [FilterGroup]
filterGroups) (\s :: AnalysisDefinition
s@AnalysisDefinition' {} Maybe [FilterGroup]
a -> AnalysisDefinition
s {$sel:filterGroups:AnalysisDefinition' :: Maybe [FilterGroup]
filterGroups = Maybe [FilterGroup]
a} :: AnalysisDefinition) 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 an analysis.
--
-- 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/.
analysisDefinition_parameterDeclarations :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [ParameterDeclaration])
analysisDefinition_parameterDeclarations :: Lens' AnalysisDefinition (Maybe [ParameterDeclaration])
analysisDefinition_parameterDeclarations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnalysisDefinition' {Maybe [ParameterDeclaration]
parameterDeclarations :: Maybe [ParameterDeclaration]
$sel:parameterDeclarations:AnalysisDefinition' :: AnalysisDefinition -> Maybe [ParameterDeclaration]
parameterDeclarations} -> Maybe [ParameterDeclaration]
parameterDeclarations) (\s :: AnalysisDefinition
s@AnalysisDefinition' {} Maybe [ParameterDeclaration]
a -> AnalysisDefinition
s {$sel:parameterDeclarations:AnalysisDefinition' :: Maybe [ParameterDeclaration]
parameterDeclarations = Maybe [ParameterDeclaration]
a} :: AnalysisDefinition) 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 an analysis. Each @SheetDefinition@
-- provides detailed information about a sheet within this analysis.
analysisDefinition_sheets :: Lens.Lens' AnalysisDefinition (Prelude.Maybe [SheetDefinition])
analysisDefinition_sheets :: Lens' AnalysisDefinition (Maybe [SheetDefinition])
analysisDefinition_sheets = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnalysisDefinition' {Maybe [SheetDefinition]
sheets :: Maybe [SheetDefinition]
$sel:sheets:AnalysisDefinition' :: AnalysisDefinition -> Maybe [SheetDefinition]
sheets} -> Maybe [SheetDefinition]
sheets) (\s :: AnalysisDefinition
s@AnalysisDefinition' {} Maybe [SheetDefinition]
a -> AnalysisDefinition
s {$sel:sheets:AnalysisDefinition' :: Maybe [SheetDefinition]
sheets = Maybe [SheetDefinition]
a} :: AnalysisDefinition) 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 identifier declarations. This mapping allows the
-- usage of dataset identifiers instead of dataset ARNs throughout analysis
-- sub-structures.
analysisDefinition_dataSetIdentifierDeclarations :: Lens.Lens' AnalysisDefinition (Prelude.NonEmpty DataSetIdentifierDeclaration)
analysisDefinition_dataSetIdentifierDeclarations :: Lens' AnalysisDefinition (NonEmpty DataSetIdentifierDeclaration)
analysisDefinition_dataSetIdentifierDeclarations = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AnalysisDefinition' {NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations :: NonEmpty DataSetIdentifierDeclaration
$sel:dataSetIdentifierDeclarations:AnalysisDefinition' :: AnalysisDefinition -> NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations} -> NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations) (\s :: AnalysisDefinition
s@AnalysisDefinition' {} NonEmpty DataSetIdentifierDeclaration
a -> AnalysisDefinition
s {$sel:dataSetIdentifierDeclarations:AnalysisDefinition' :: NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations = NonEmpty DataSetIdentifierDeclaration
a} :: AnalysisDefinition) 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 AnalysisDefinition where
  parseJSON :: Value -> Parser AnalysisDefinition
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"AnalysisDefinition"
      ( \Object
x ->
          Maybe AnalysisDefaults
-> Maybe [CalculatedField]
-> Maybe [ColumnConfiguration]
-> Maybe [FilterGroup]
-> Maybe [ParameterDeclaration]
-> Maybe [SheetDefinition]
-> NonEmpty DataSetIdentifierDeclaration
-> AnalysisDefinition
AnalysisDefinition'
            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 a
Data..: Key
"DataSetIdentifierDeclarations")
      )

instance Prelude.Hashable AnalysisDefinition where
  hashWithSalt :: Int -> AnalysisDefinition -> Int
hashWithSalt Int
_salt AnalysisDefinition' {Maybe [CalculatedField]
Maybe [ParameterDeclaration]
Maybe [ColumnConfiguration]
Maybe [FilterGroup]
Maybe [SheetDefinition]
Maybe AnalysisDefaults
NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations :: NonEmpty DataSetIdentifierDeclaration
sheets :: Maybe [SheetDefinition]
parameterDeclarations :: Maybe [ParameterDeclaration]
filterGroups :: Maybe [FilterGroup]
columnConfigurations :: Maybe [ColumnConfiguration]
calculatedFields :: Maybe [CalculatedField]
analysisDefaults :: Maybe AnalysisDefaults
$sel:dataSetIdentifierDeclarations:AnalysisDefinition' :: AnalysisDefinition -> NonEmpty DataSetIdentifierDeclaration
$sel:sheets:AnalysisDefinition' :: AnalysisDefinition -> Maybe [SheetDefinition]
$sel:parameterDeclarations:AnalysisDefinition' :: AnalysisDefinition -> Maybe [ParameterDeclaration]
$sel:filterGroups:AnalysisDefinition' :: AnalysisDefinition -> Maybe [FilterGroup]
$sel:columnConfigurations:AnalysisDefinition' :: AnalysisDefinition -> Maybe [ColumnConfiguration]
$sel:calculatedFields:AnalysisDefinition' :: AnalysisDefinition -> Maybe [CalculatedField]
$sel:analysisDefaults:AnalysisDefinition' :: AnalysisDefinition -> 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` NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations

instance Prelude.NFData AnalysisDefinition where
  rnf :: AnalysisDefinition -> ()
rnf AnalysisDefinition' {Maybe [CalculatedField]
Maybe [ParameterDeclaration]
Maybe [ColumnConfiguration]
Maybe [FilterGroup]
Maybe [SheetDefinition]
Maybe AnalysisDefaults
NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations :: NonEmpty DataSetIdentifierDeclaration
sheets :: Maybe [SheetDefinition]
parameterDeclarations :: Maybe [ParameterDeclaration]
filterGroups :: Maybe [FilterGroup]
columnConfigurations :: Maybe [ColumnConfiguration]
calculatedFields :: Maybe [CalculatedField]
analysisDefaults :: Maybe AnalysisDefaults
$sel:dataSetIdentifierDeclarations:AnalysisDefinition' :: AnalysisDefinition -> NonEmpty DataSetIdentifierDeclaration
$sel:sheets:AnalysisDefinition' :: AnalysisDefinition -> Maybe [SheetDefinition]
$sel:parameterDeclarations:AnalysisDefinition' :: AnalysisDefinition -> Maybe [ParameterDeclaration]
$sel:filterGroups:AnalysisDefinition' :: AnalysisDefinition -> Maybe [FilterGroup]
$sel:columnConfigurations:AnalysisDefinition' :: AnalysisDefinition -> Maybe [ColumnConfiguration]
$sel:calculatedFields:AnalysisDefinition' :: AnalysisDefinition -> Maybe [CalculatedField]
$sel:analysisDefaults:AnalysisDefinition' :: AnalysisDefinition -> 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 NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations

instance Data.ToJSON AnalysisDefinition where
  toJSON :: AnalysisDefinition -> Value
toJSON AnalysisDefinition' {Maybe [CalculatedField]
Maybe [ParameterDeclaration]
Maybe [ColumnConfiguration]
Maybe [FilterGroup]
Maybe [SheetDefinition]
Maybe AnalysisDefaults
NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations :: NonEmpty DataSetIdentifierDeclaration
sheets :: Maybe [SheetDefinition]
parameterDeclarations :: Maybe [ParameterDeclaration]
filterGroups :: Maybe [FilterGroup]
columnConfigurations :: Maybe [ColumnConfiguration]
calculatedFields :: Maybe [CalculatedField]
analysisDefaults :: Maybe AnalysisDefaults
$sel:dataSetIdentifierDeclarations:AnalysisDefinition' :: AnalysisDefinition -> NonEmpty DataSetIdentifierDeclaration
$sel:sheets:AnalysisDefinition' :: AnalysisDefinition -> Maybe [SheetDefinition]
$sel:parameterDeclarations:AnalysisDefinition' :: AnalysisDefinition -> Maybe [ParameterDeclaration]
$sel:filterGroups:AnalysisDefinition' :: AnalysisDefinition -> Maybe [FilterGroup]
$sel:columnConfigurations:AnalysisDefinition' :: AnalysisDefinition -> Maybe [ColumnConfiguration]
$sel:calculatedFields:AnalysisDefinition' :: AnalysisDefinition -> Maybe [CalculatedField]
$sel:analysisDefaults:AnalysisDefinition' :: AnalysisDefinition -> 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
"DataSetIdentifierDeclarations"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= NonEmpty DataSetIdentifierDeclaration
dataSetIdentifierDeclarations
              )
          ]
      )