{-# 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.NumericEqualityFilter
-- 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.NumericEqualityFilter 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.AggregationFunction
import Amazonka.QuickSight.Types.ColumnIdentifier
import Amazonka.QuickSight.Types.FilterNullOption
import Amazonka.QuickSight.Types.NumericEqualityMatchOperator
import Amazonka.QuickSight.Types.NumericFilterSelectAllOptions

-- | A @NumericEqualityFilter@ filters values that are equal to the specified
-- value.
--
-- /See:/ 'newNumericEqualityFilter' smart constructor.
data NumericEqualityFilter = NumericEqualityFilter'
  { -- | The aggregation function of the filter.
    NumericEqualityFilter -> Maybe AggregationFunction
aggregationFunction :: Prelude.Maybe AggregationFunction,
    -- | The parameter whose value should be used for the filter value.
    NumericEqualityFilter -> Maybe Text
parameterName :: Prelude.Maybe Prelude.Text,
    -- | Select all of the values. Null is not the assigned value of select all.
    --
    -- -   @FILTER_ALL_VALUES@
    NumericEqualityFilter -> Maybe NumericFilterSelectAllOptions
selectAllOptions :: Prelude.Maybe NumericFilterSelectAllOptions,
    -- | The input value.
    NumericEqualityFilter -> Maybe Double
value :: Prelude.Maybe Prelude.Double,
    -- | An identifier that uniquely identifies a filter within a dashboard,
    -- analysis, or template.
    NumericEqualityFilter -> Text
filterId :: Prelude.Text,
    -- | The column that the filter is applied to.
    NumericEqualityFilter -> ColumnIdentifier
column :: ColumnIdentifier,
    -- | The match operator that is used to determine if a filter should be
    -- applied.
    NumericEqualityFilter -> NumericEqualityMatchOperator
matchOperator :: NumericEqualityMatchOperator,
    -- | This option determines how null values should be treated when filtering
    -- data.
    --
    -- -   @ALL_VALUES@: Include null values in filtered results.
    --
    -- -   @NULLS_ONLY@: Only include null values in filtered results.
    --
    -- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
    NumericEqualityFilter -> FilterNullOption
nullOption :: FilterNullOption
  }
  deriving (NumericEqualityFilter -> NumericEqualityFilter -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NumericEqualityFilter -> NumericEqualityFilter -> Bool
$c/= :: NumericEqualityFilter -> NumericEqualityFilter -> Bool
== :: NumericEqualityFilter -> NumericEqualityFilter -> Bool
$c== :: NumericEqualityFilter -> NumericEqualityFilter -> Bool
Prelude.Eq, ReadPrec [NumericEqualityFilter]
ReadPrec NumericEqualityFilter
Int -> ReadS NumericEqualityFilter
ReadS [NumericEqualityFilter]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [NumericEqualityFilter]
$creadListPrec :: ReadPrec [NumericEqualityFilter]
readPrec :: ReadPrec NumericEqualityFilter
$creadPrec :: ReadPrec NumericEqualityFilter
readList :: ReadS [NumericEqualityFilter]
$creadList :: ReadS [NumericEqualityFilter]
readsPrec :: Int -> ReadS NumericEqualityFilter
$creadsPrec :: Int -> ReadS NumericEqualityFilter
Prelude.Read, Int -> NumericEqualityFilter -> ShowS
[NumericEqualityFilter] -> ShowS
NumericEqualityFilter -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NumericEqualityFilter] -> ShowS
$cshowList :: [NumericEqualityFilter] -> ShowS
show :: NumericEqualityFilter -> String
$cshow :: NumericEqualityFilter -> String
showsPrec :: Int -> NumericEqualityFilter -> ShowS
$cshowsPrec :: Int -> NumericEqualityFilter -> ShowS
Prelude.Show, forall x. Rep NumericEqualityFilter x -> NumericEqualityFilter
forall x. NumericEqualityFilter -> Rep NumericEqualityFilter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NumericEqualityFilter x -> NumericEqualityFilter
$cfrom :: forall x. NumericEqualityFilter -> Rep NumericEqualityFilter x
Prelude.Generic)

-- |
-- Create a value of 'NumericEqualityFilter' 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:
--
-- 'aggregationFunction', 'numericEqualityFilter_aggregationFunction' - The aggregation function of the filter.
--
-- 'parameterName', 'numericEqualityFilter_parameterName' - The parameter whose value should be used for the filter value.
--
-- 'selectAllOptions', 'numericEqualityFilter_selectAllOptions' - Select all of the values. Null is not the assigned value of select all.
--
-- -   @FILTER_ALL_VALUES@
--
-- 'value', 'numericEqualityFilter_value' - The input value.
--
-- 'filterId', 'numericEqualityFilter_filterId' - An identifier that uniquely identifies a filter within a dashboard,
-- analysis, or template.
--
-- 'column', 'numericEqualityFilter_column' - The column that the filter is applied to.
--
-- 'matchOperator', 'numericEqualityFilter_matchOperator' - The match operator that is used to determine if a filter should be
-- applied.
--
-- 'nullOption', 'numericEqualityFilter_nullOption' - This option determines how null values should be treated when filtering
-- data.
--
-- -   @ALL_VALUES@: Include null values in filtered results.
--
-- -   @NULLS_ONLY@: Only include null values in filtered results.
--
-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
newNumericEqualityFilter ::
  -- | 'filterId'
  Prelude.Text ->
  -- | 'column'
  ColumnIdentifier ->
  -- | 'matchOperator'
  NumericEqualityMatchOperator ->
  -- | 'nullOption'
  FilterNullOption ->
  NumericEqualityFilter
newNumericEqualityFilter :: Text
-> ColumnIdentifier
-> NumericEqualityMatchOperator
-> FilterNullOption
-> NumericEqualityFilter
newNumericEqualityFilter
  Text
pFilterId_
  ColumnIdentifier
pColumn_
  NumericEqualityMatchOperator
pMatchOperator_
  FilterNullOption
pNullOption_ =
    NumericEqualityFilter'
      { $sel:aggregationFunction:NumericEqualityFilter' :: Maybe AggregationFunction
aggregationFunction =
          forall a. Maybe a
Prelude.Nothing,
        $sel:parameterName:NumericEqualityFilter' :: Maybe Text
parameterName = forall a. Maybe a
Prelude.Nothing,
        $sel:selectAllOptions:NumericEqualityFilter' :: Maybe NumericFilterSelectAllOptions
selectAllOptions = forall a. Maybe a
Prelude.Nothing,
        $sel:value:NumericEqualityFilter' :: Maybe Double
value = forall a. Maybe a
Prelude.Nothing,
        $sel:filterId:NumericEqualityFilter' :: Text
filterId = Text
pFilterId_,
        $sel:column:NumericEqualityFilter' :: ColumnIdentifier
column = ColumnIdentifier
pColumn_,
        $sel:matchOperator:NumericEqualityFilter' :: NumericEqualityMatchOperator
matchOperator = NumericEqualityMatchOperator
pMatchOperator_,
        $sel:nullOption:NumericEqualityFilter' :: FilterNullOption
nullOption = FilterNullOption
pNullOption_
      }

-- | The aggregation function of the filter.
numericEqualityFilter_aggregationFunction :: Lens.Lens' NumericEqualityFilter (Prelude.Maybe AggregationFunction)
numericEqualityFilter_aggregationFunction :: Lens' NumericEqualityFilter (Maybe AggregationFunction)
numericEqualityFilter_aggregationFunction = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericEqualityFilter' {Maybe AggregationFunction
aggregationFunction :: Maybe AggregationFunction
$sel:aggregationFunction:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe AggregationFunction
aggregationFunction} -> Maybe AggregationFunction
aggregationFunction) (\s :: NumericEqualityFilter
s@NumericEqualityFilter' {} Maybe AggregationFunction
a -> NumericEqualityFilter
s {$sel:aggregationFunction:NumericEqualityFilter' :: Maybe AggregationFunction
aggregationFunction = Maybe AggregationFunction
a} :: NumericEqualityFilter)

-- | The parameter whose value should be used for the filter value.
numericEqualityFilter_parameterName :: Lens.Lens' NumericEqualityFilter (Prelude.Maybe Prelude.Text)
numericEqualityFilter_parameterName :: Lens' NumericEqualityFilter (Maybe Text)
numericEqualityFilter_parameterName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericEqualityFilter' {Maybe Text
parameterName :: Maybe Text
$sel:parameterName:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe Text
parameterName} -> Maybe Text
parameterName) (\s :: NumericEqualityFilter
s@NumericEqualityFilter' {} Maybe Text
a -> NumericEqualityFilter
s {$sel:parameterName:NumericEqualityFilter' :: Maybe Text
parameterName = Maybe Text
a} :: NumericEqualityFilter)

-- | Select all of the values. Null is not the assigned value of select all.
--
-- -   @FILTER_ALL_VALUES@
numericEqualityFilter_selectAllOptions :: Lens.Lens' NumericEqualityFilter (Prelude.Maybe NumericFilterSelectAllOptions)
numericEqualityFilter_selectAllOptions :: Lens' NumericEqualityFilter (Maybe NumericFilterSelectAllOptions)
numericEqualityFilter_selectAllOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericEqualityFilter' {Maybe NumericFilterSelectAllOptions
selectAllOptions :: Maybe NumericFilterSelectAllOptions
$sel:selectAllOptions:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe NumericFilterSelectAllOptions
selectAllOptions} -> Maybe NumericFilterSelectAllOptions
selectAllOptions) (\s :: NumericEqualityFilter
s@NumericEqualityFilter' {} Maybe NumericFilterSelectAllOptions
a -> NumericEqualityFilter
s {$sel:selectAllOptions:NumericEqualityFilter' :: Maybe NumericFilterSelectAllOptions
selectAllOptions = Maybe NumericFilterSelectAllOptions
a} :: NumericEqualityFilter)

-- | The input value.
numericEqualityFilter_value :: Lens.Lens' NumericEqualityFilter (Prelude.Maybe Prelude.Double)
numericEqualityFilter_value :: Lens' NumericEqualityFilter (Maybe Double)
numericEqualityFilter_value = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericEqualityFilter' {Maybe Double
value :: Maybe Double
$sel:value:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe Double
value} -> Maybe Double
value) (\s :: NumericEqualityFilter
s@NumericEqualityFilter' {} Maybe Double
a -> NumericEqualityFilter
s {$sel:value:NumericEqualityFilter' :: Maybe Double
value = Maybe Double
a} :: NumericEqualityFilter)

-- | An identifier that uniquely identifies a filter within a dashboard,
-- analysis, or template.
numericEqualityFilter_filterId :: Lens.Lens' NumericEqualityFilter Prelude.Text
numericEqualityFilter_filterId :: Lens' NumericEqualityFilter Text
numericEqualityFilter_filterId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericEqualityFilter' {Text
filterId :: Text
$sel:filterId:NumericEqualityFilter' :: NumericEqualityFilter -> Text
filterId} -> Text
filterId) (\s :: NumericEqualityFilter
s@NumericEqualityFilter' {} Text
a -> NumericEqualityFilter
s {$sel:filterId:NumericEqualityFilter' :: Text
filterId = Text
a} :: NumericEqualityFilter)

-- | The column that the filter is applied to.
numericEqualityFilter_column :: Lens.Lens' NumericEqualityFilter ColumnIdentifier
numericEqualityFilter_column :: Lens' NumericEqualityFilter ColumnIdentifier
numericEqualityFilter_column = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericEqualityFilter' {ColumnIdentifier
column :: ColumnIdentifier
$sel:column:NumericEqualityFilter' :: NumericEqualityFilter -> ColumnIdentifier
column} -> ColumnIdentifier
column) (\s :: NumericEqualityFilter
s@NumericEqualityFilter' {} ColumnIdentifier
a -> NumericEqualityFilter
s {$sel:column:NumericEqualityFilter' :: ColumnIdentifier
column = ColumnIdentifier
a} :: NumericEqualityFilter)

-- | The match operator that is used to determine if a filter should be
-- applied.
numericEqualityFilter_matchOperator :: Lens.Lens' NumericEqualityFilter NumericEqualityMatchOperator
numericEqualityFilter_matchOperator :: Lens' NumericEqualityFilter NumericEqualityMatchOperator
numericEqualityFilter_matchOperator = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericEqualityFilter' {NumericEqualityMatchOperator
matchOperator :: NumericEqualityMatchOperator
$sel:matchOperator:NumericEqualityFilter' :: NumericEqualityFilter -> NumericEqualityMatchOperator
matchOperator} -> NumericEqualityMatchOperator
matchOperator) (\s :: NumericEqualityFilter
s@NumericEqualityFilter' {} NumericEqualityMatchOperator
a -> NumericEqualityFilter
s {$sel:matchOperator:NumericEqualityFilter' :: NumericEqualityMatchOperator
matchOperator = NumericEqualityMatchOperator
a} :: NumericEqualityFilter)

-- | This option determines how null values should be treated when filtering
-- data.
--
-- -   @ALL_VALUES@: Include null values in filtered results.
--
-- -   @NULLS_ONLY@: Only include null values in filtered results.
--
-- -   @NON_NULLS_ONLY@: Exclude null values from filtered results.
numericEqualityFilter_nullOption :: Lens.Lens' NumericEqualityFilter FilterNullOption
numericEqualityFilter_nullOption :: Lens' NumericEqualityFilter FilterNullOption
numericEqualityFilter_nullOption = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericEqualityFilter' {FilterNullOption
nullOption :: FilterNullOption
$sel:nullOption:NumericEqualityFilter' :: NumericEqualityFilter -> FilterNullOption
nullOption} -> FilterNullOption
nullOption) (\s :: NumericEqualityFilter
s@NumericEqualityFilter' {} FilterNullOption
a -> NumericEqualityFilter
s {$sel:nullOption:NumericEqualityFilter' :: FilterNullOption
nullOption = FilterNullOption
a} :: NumericEqualityFilter)

instance Data.FromJSON NumericEqualityFilter where
  parseJSON :: Value -> Parser NumericEqualityFilter
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"NumericEqualityFilter"
      ( \Object
x ->
          Maybe AggregationFunction
-> Maybe Text
-> Maybe NumericFilterSelectAllOptions
-> Maybe Double
-> Text
-> ColumnIdentifier
-> NumericEqualityMatchOperator
-> FilterNullOption
-> NumericEqualityFilter
NumericEqualityFilter'
            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
"AggregationFunction")
            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
"ParameterName")
            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
"SelectAllOptions")
            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
"Value")
            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
"FilterId")
            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
"Column")
            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
"MatchOperator")
            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
"NullOption")
      )

instance Prelude.Hashable NumericEqualityFilter where
  hashWithSalt :: Int -> NumericEqualityFilter -> Int
hashWithSalt Int
_salt NumericEqualityFilter' {Maybe Double
Maybe Text
Maybe NumericFilterSelectAllOptions
Maybe AggregationFunction
Text
ColumnIdentifier
FilterNullOption
NumericEqualityMatchOperator
nullOption :: FilterNullOption
matchOperator :: NumericEqualityMatchOperator
column :: ColumnIdentifier
filterId :: Text
value :: Maybe Double
selectAllOptions :: Maybe NumericFilterSelectAllOptions
parameterName :: Maybe Text
aggregationFunction :: Maybe AggregationFunction
$sel:nullOption:NumericEqualityFilter' :: NumericEqualityFilter -> FilterNullOption
$sel:matchOperator:NumericEqualityFilter' :: NumericEqualityFilter -> NumericEqualityMatchOperator
$sel:column:NumericEqualityFilter' :: NumericEqualityFilter -> ColumnIdentifier
$sel:filterId:NumericEqualityFilter' :: NumericEqualityFilter -> Text
$sel:value:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe Double
$sel:selectAllOptions:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe NumericFilterSelectAllOptions
$sel:parameterName:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe Text
$sel:aggregationFunction:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe AggregationFunction
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AggregationFunction
aggregationFunction
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
parameterName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NumericFilterSelectAllOptions
selectAllOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
value
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
filterId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ColumnIdentifier
column
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` NumericEqualityMatchOperator
matchOperator
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` FilterNullOption
nullOption

instance Prelude.NFData NumericEqualityFilter where
  rnf :: NumericEqualityFilter -> ()
rnf NumericEqualityFilter' {Maybe Double
Maybe Text
Maybe NumericFilterSelectAllOptions
Maybe AggregationFunction
Text
ColumnIdentifier
FilterNullOption
NumericEqualityMatchOperator
nullOption :: FilterNullOption
matchOperator :: NumericEqualityMatchOperator
column :: ColumnIdentifier
filterId :: Text
value :: Maybe Double
selectAllOptions :: Maybe NumericFilterSelectAllOptions
parameterName :: Maybe Text
aggregationFunction :: Maybe AggregationFunction
$sel:nullOption:NumericEqualityFilter' :: NumericEqualityFilter -> FilterNullOption
$sel:matchOperator:NumericEqualityFilter' :: NumericEqualityFilter -> NumericEqualityMatchOperator
$sel:column:NumericEqualityFilter' :: NumericEqualityFilter -> ColumnIdentifier
$sel:filterId:NumericEqualityFilter' :: NumericEqualityFilter -> Text
$sel:value:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe Double
$sel:selectAllOptions:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe NumericFilterSelectAllOptions
$sel:parameterName:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe Text
$sel:aggregationFunction:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe AggregationFunction
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe AggregationFunction
aggregationFunction
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
parameterName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NumericFilterSelectAllOptions
selectAllOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
value
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
filterId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ColumnIdentifier
column
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf NumericEqualityMatchOperator
matchOperator
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf FilterNullOption
nullOption

instance Data.ToJSON NumericEqualityFilter where
  toJSON :: NumericEqualityFilter -> Value
toJSON NumericEqualityFilter' {Maybe Double
Maybe Text
Maybe NumericFilterSelectAllOptions
Maybe AggregationFunction
Text
ColumnIdentifier
FilterNullOption
NumericEqualityMatchOperator
nullOption :: FilterNullOption
matchOperator :: NumericEqualityMatchOperator
column :: ColumnIdentifier
filterId :: Text
value :: Maybe Double
selectAllOptions :: Maybe NumericFilterSelectAllOptions
parameterName :: Maybe Text
aggregationFunction :: Maybe AggregationFunction
$sel:nullOption:NumericEqualityFilter' :: NumericEqualityFilter -> FilterNullOption
$sel:matchOperator:NumericEqualityFilter' :: NumericEqualityFilter -> NumericEqualityMatchOperator
$sel:column:NumericEqualityFilter' :: NumericEqualityFilter -> ColumnIdentifier
$sel:filterId:NumericEqualityFilter' :: NumericEqualityFilter -> Text
$sel:value:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe Double
$sel:selectAllOptions:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe NumericFilterSelectAllOptions
$sel:parameterName:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe Text
$sel:aggregationFunction:NumericEqualityFilter' :: NumericEqualityFilter -> Maybe AggregationFunction
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AggregationFunction" 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 AggregationFunction
aggregationFunction,
            (Key
"ParameterName" 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 Text
parameterName,
            (Key
"SelectAllOptions" 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 NumericFilterSelectAllOptions
selectAllOptions,
            (Key
"Value" 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 Double
value,
            forall a. a -> Maybe a
Prelude.Just (Key
"FilterId" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
filterId),
            forall a. a -> Maybe a
Prelude.Just (Key
"Column" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= ColumnIdentifier
column),
            forall a. a -> Maybe a
Prelude.Just (Key
"MatchOperator" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= NumericEqualityMatchOperator
matchOperator),
            forall a. a -> Maybe a
Prelude.Just (Key
"NullOption" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= FilterNullOption
nullOption)
          ]
      )