{-# 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.NumericRangeFilter
-- 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.NumericRangeFilter 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.NumericFilterSelectAllOptions
import Amazonka.QuickSight.Types.NumericRangeFilterValue

-- | A @NumericRangeFilter@ filters values that are within the value range.
--
-- /See:/ 'newNumericRangeFilter' smart constructor.
data NumericRangeFilter = NumericRangeFilter'
  { -- | The aggregation function of the filter.
    NumericRangeFilter -> Maybe AggregationFunction
aggregationFunction :: Prelude.Maybe AggregationFunction,
    -- | Determines whether the maximum value in the filter value range should be
    -- included in the filtered results.
    NumericRangeFilter -> Maybe Bool
includeMaximum :: Prelude.Maybe Prelude.Bool,
    -- | Determines whether the minimum value in the filter value range should be
    -- included in the filtered results.
    NumericRangeFilter -> Maybe Bool
includeMinimum :: Prelude.Maybe Prelude.Bool,
    -- | The maximum value for the filter value range.
    NumericRangeFilter -> Maybe NumericRangeFilterValue
rangeMaximum :: Prelude.Maybe NumericRangeFilterValue,
    -- | The minimum value for the filter value range.
    NumericRangeFilter -> Maybe NumericRangeFilterValue
rangeMinimum :: Prelude.Maybe NumericRangeFilterValue,
    -- | Select all of the values. Null is not the assigned value of select all.
    --
    -- -   @FILTER_ALL_VALUES@
    NumericRangeFilter -> Maybe NumericFilterSelectAllOptions
selectAllOptions :: Prelude.Maybe NumericFilterSelectAllOptions,
    -- | An identifier that uniquely identifies a filter within a dashboard,
    -- analysis, or template.
    NumericRangeFilter -> Text
filterId :: Prelude.Text,
    -- | The column that the filter is applied to.
    NumericRangeFilter -> ColumnIdentifier
column :: ColumnIdentifier,
    -- | 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.
    NumericRangeFilter -> FilterNullOption
nullOption :: FilterNullOption
  }
  deriving (NumericRangeFilter -> NumericRangeFilter -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: NumericRangeFilter -> NumericRangeFilter -> Bool
$c/= :: NumericRangeFilter -> NumericRangeFilter -> Bool
== :: NumericRangeFilter -> NumericRangeFilter -> Bool
$c== :: NumericRangeFilter -> NumericRangeFilter -> Bool
Prelude.Eq, ReadPrec [NumericRangeFilter]
ReadPrec NumericRangeFilter
Int -> ReadS NumericRangeFilter
ReadS [NumericRangeFilter]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [NumericRangeFilter]
$creadListPrec :: ReadPrec [NumericRangeFilter]
readPrec :: ReadPrec NumericRangeFilter
$creadPrec :: ReadPrec NumericRangeFilter
readList :: ReadS [NumericRangeFilter]
$creadList :: ReadS [NumericRangeFilter]
readsPrec :: Int -> ReadS NumericRangeFilter
$creadsPrec :: Int -> ReadS NumericRangeFilter
Prelude.Read, Int -> NumericRangeFilter -> ShowS
[NumericRangeFilter] -> ShowS
NumericRangeFilter -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [NumericRangeFilter] -> ShowS
$cshowList :: [NumericRangeFilter] -> ShowS
show :: NumericRangeFilter -> String
$cshow :: NumericRangeFilter -> String
showsPrec :: Int -> NumericRangeFilter -> ShowS
$cshowsPrec :: Int -> NumericRangeFilter -> ShowS
Prelude.Show, forall x. Rep NumericRangeFilter x -> NumericRangeFilter
forall x. NumericRangeFilter -> Rep NumericRangeFilter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep NumericRangeFilter x -> NumericRangeFilter
$cfrom :: forall x. NumericRangeFilter -> Rep NumericRangeFilter x
Prelude.Generic)

-- |
-- Create a value of 'NumericRangeFilter' 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', 'numericRangeFilter_aggregationFunction' - The aggregation function of the filter.
--
-- 'includeMaximum', 'numericRangeFilter_includeMaximum' - Determines whether the maximum value in the filter value range should be
-- included in the filtered results.
--
-- 'includeMinimum', 'numericRangeFilter_includeMinimum' - Determines whether the minimum value in the filter value range should be
-- included in the filtered results.
--
-- 'rangeMaximum', 'numericRangeFilter_rangeMaximum' - The maximum value for the filter value range.
--
-- 'rangeMinimum', 'numericRangeFilter_rangeMinimum' - The minimum value for the filter value range.
--
-- 'selectAllOptions', 'numericRangeFilter_selectAllOptions' - Select all of the values. Null is not the assigned value of select all.
--
-- -   @FILTER_ALL_VALUES@
--
-- 'filterId', 'numericRangeFilter_filterId' - An identifier that uniquely identifies a filter within a dashboard,
-- analysis, or template.
--
-- 'column', 'numericRangeFilter_column' - The column that the filter is applied to.
--
-- 'nullOption', 'numericRangeFilter_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.
newNumericRangeFilter ::
  -- | 'filterId'
  Prelude.Text ->
  -- | 'column'
  ColumnIdentifier ->
  -- | 'nullOption'
  FilterNullOption ->
  NumericRangeFilter
newNumericRangeFilter :: Text -> ColumnIdentifier -> FilterNullOption -> NumericRangeFilter
newNumericRangeFilter
  Text
pFilterId_
  ColumnIdentifier
pColumn_
  FilterNullOption
pNullOption_ =
    NumericRangeFilter'
      { $sel:aggregationFunction:NumericRangeFilter' :: Maybe AggregationFunction
aggregationFunction =
          forall a. Maybe a
Prelude.Nothing,
        $sel:includeMaximum:NumericRangeFilter' :: Maybe Bool
includeMaximum = forall a. Maybe a
Prelude.Nothing,
        $sel:includeMinimum:NumericRangeFilter' :: Maybe Bool
includeMinimum = forall a. Maybe a
Prelude.Nothing,
        $sel:rangeMaximum:NumericRangeFilter' :: Maybe NumericRangeFilterValue
rangeMaximum = forall a. Maybe a
Prelude.Nothing,
        $sel:rangeMinimum:NumericRangeFilter' :: Maybe NumericRangeFilterValue
rangeMinimum = forall a. Maybe a
Prelude.Nothing,
        $sel:selectAllOptions:NumericRangeFilter' :: Maybe NumericFilterSelectAllOptions
selectAllOptions = forall a. Maybe a
Prelude.Nothing,
        $sel:filterId:NumericRangeFilter' :: Text
filterId = Text
pFilterId_,
        $sel:column:NumericRangeFilter' :: ColumnIdentifier
column = ColumnIdentifier
pColumn_,
        $sel:nullOption:NumericRangeFilter' :: FilterNullOption
nullOption = FilterNullOption
pNullOption_
      }

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

-- | Determines whether the maximum value in the filter value range should be
-- included in the filtered results.
numericRangeFilter_includeMaximum :: Lens.Lens' NumericRangeFilter (Prelude.Maybe Prelude.Bool)
numericRangeFilter_includeMaximum :: Lens' NumericRangeFilter (Maybe Bool)
numericRangeFilter_includeMaximum = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericRangeFilter' {Maybe Bool
includeMaximum :: Maybe Bool
$sel:includeMaximum:NumericRangeFilter' :: NumericRangeFilter -> Maybe Bool
includeMaximum} -> Maybe Bool
includeMaximum) (\s :: NumericRangeFilter
s@NumericRangeFilter' {} Maybe Bool
a -> NumericRangeFilter
s {$sel:includeMaximum:NumericRangeFilter' :: Maybe Bool
includeMaximum = Maybe Bool
a} :: NumericRangeFilter)

-- | Determines whether the minimum value in the filter value range should be
-- included in the filtered results.
numericRangeFilter_includeMinimum :: Lens.Lens' NumericRangeFilter (Prelude.Maybe Prelude.Bool)
numericRangeFilter_includeMinimum :: Lens' NumericRangeFilter (Maybe Bool)
numericRangeFilter_includeMinimum = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericRangeFilter' {Maybe Bool
includeMinimum :: Maybe Bool
$sel:includeMinimum:NumericRangeFilter' :: NumericRangeFilter -> Maybe Bool
includeMinimum} -> Maybe Bool
includeMinimum) (\s :: NumericRangeFilter
s@NumericRangeFilter' {} Maybe Bool
a -> NumericRangeFilter
s {$sel:includeMinimum:NumericRangeFilter' :: Maybe Bool
includeMinimum = Maybe Bool
a} :: NumericRangeFilter)

-- | The maximum value for the filter value range.
numericRangeFilter_rangeMaximum :: Lens.Lens' NumericRangeFilter (Prelude.Maybe NumericRangeFilterValue)
numericRangeFilter_rangeMaximum :: Lens' NumericRangeFilter (Maybe NumericRangeFilterValue)
numericRangeFilter_rangeMaximum = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericRangeFilter' {Maybe NumericRangeFilterValue
rangeMaximum :: Maybe NumericRangeFilterValue
$sel:rangeMaximum:NumericRangeFilter' :: NumericRangeFilter -> Maybe NumericRangeFilterValue
rangeMaximum} -> Maybe NumericRangeFilterValue
rangeMaximum) (\s :: NumericRangeFilter
s@NumericRangeFilter' {} Maybe NumericRangeFilterValue
a -> NumericRangeFilter
s {$sel:rangeMaximum:NumericRangeFilter' :: Maybe NumericRangeFilterValue
rangeMaximum = Maybe NumericRangeFilterValue
a} :: NumericRangeFilter)

-- | The minimum value for the filter value range.
numericRangeFilter_rangeMinimum :: Lens.Lens' NumericRangeFilter (Prelude.Maybe NumericRangeFilterValue)
numericRangeFilter_rangeMinimum :: Lens' NumericRangeFilter (Maybe NumericRangeFilterValue)
numericRangeFilter_rangeMinimum = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericRangeFilter' {Maybe NumericRangeFilterValue
rangeMinimum :: Maybe NumericRangeFilterValue
$sel:rangeMinimum:NumericRangeFilter' :: NumericRangeFilter -> Maybe NumericRangeFilterValue
rangeMinimum} -> Maybe NumericRangeFilterValue
rangeMinimum) (\s :: NumericRangeFilter
s@NumericRangeFilter' {} Maybe NumericRangeFilterValue
a -> NumericRangeFilter
s {$sel:rangeMinimum:NumericRangeFilter' :: Maybe NumericRangeFilterValue
rangeMinimum = Maybe NumericRangeFilterValue
a} :: NumericRangeFilter)

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

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

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

-- | 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.
numericRangeFilter_nullOption :: Lens.Lens' NumericRangeFilter FilterNullOption
numericRangeFilter_nullOption :: Lens' NumericRangeFilter FilterNullOption
numericRangeFilter_nullOption = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\NumericRangeFilter' {FilterNullOption
nullOption :: FilterNullOption
$sel:nullOption:NumericRangeFilter' :: NumericRangeFilter -> FilterNullOption
nullOption} -> FilterNullOption
nullOption) (\s :: NumericRangeFilter
s@NumericRangeFilter' {} FilterNullOption
a -> NumericRangeFilter
s {$sel:nullOption:NumericRangeFilter' :: FilterNullOption
nullOption = FilterNullOption
a} :: NumericRangeFilter)

instance Data.FromJSON NumericRangeFilter where
  parseJSON :: Value -> Parser NumericRangeFilter
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"NumericRangeFilter"
      ( \Object
x ->
          Maybe AggregationFunction
-> Maybe Bool
-> Maybe Bool
-> Maybe NumericRangeFilterValue
-> Maybe NumericRangeFilterValue
-> Maybe NumericFilterSelectAllOptions
-> Text
-> ColumnIdentifier
-> FilterNullOption
-> NumericRangeFilter
NumericRangeFilter'
            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
"IncludeMaximum")
            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
"IncludeMinimum")
            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
"RangeMaximum")
            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
"RangeMinimum")
            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 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
"NullOption")
      )

instance Prelude.Hashable NumericRangeFilter where
  hashWithSalt :: Int -> NumericRangeFilter -> Int
hashWithSalt Int
_salt NumericRangeFilter' {Maybe Bool
Maybe NumericFilterSelectAllOptions
Maybe NumericRangeFilterValue
Maybe AggregationFunction
Text
ColumnIdentifier
FilterNullOption
nullOption :: FilterNullOption
column :: ColumnIdentifier
filterId :: Text
selectAllOptions :: Maybe NumericFilterSelectAllOptions
rangeMinimum :: Maybe NumericRangeFilterValue
rangeMaximum :: Maybe NumericRangeFilterValue
includeMinimum :: Maybe Bool
includeMaximum :: Maybe Bool
aggregationFunction :: Maybe AggregationFunction
$sel:nullOption:NumericRangeFilter' :: NumericRangeFilter -> FilterNullOption
$sel:column:NumericRangeFilter' :: NumericRangeFilter -> ColumnIdentifier
$sel:filterId:NumericRangeFilter' :: NumericRangeFilter -> Text
$sel:selectAllOptions:NumericRangeFilter' :: NumericRangeFilter -> Maybe NumericFilterSelectAllOptions
$sel:rangeMinimum:NumericRangeFilter' :: NumericRangeFilter -> Maybe NumericRangeFilterValue
$sel:rangeMaximum:NumericRangeFilter' :: NumericRangeFilter -> Maybe NumericRangeFilterValue
$sel:includeMinimum:NumericRangeFilter' :: NumericRangeFilter -> Maybe Bool
$sel:includeMaximum:NumericRangeFilter' :: NumericRangeFilter -> Maybe Bool
$sel:aggregationFunction:NumericRangeFilter' :: NumericRangeFilter -> 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 Bool
includeMaximum
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
includeMinimum
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NumericRangeFilterValue
rangeMaximum
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NumericRangeFilterValue
rangeMinimum
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NumericFilterSelectAllOptions
selectAllOptions
      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` FilterNullOption
nullOption

instance Prelude.NFData NumericRangeFilter where
  rnf :: NumericRangeFilter -> ()
rnf NumericRangeFilter' {Maybe Bool
Maybe NumericFilterSelectAllOptions
Maybe NumericRangeFilterValue
Maybe AggregationFunction
Text
ColumnIdentifier
FilterNullOption
nullOption :: FilterNullOption
column :: ColumnIdentifier
filterId :: Text
selectAllOptions :: Maybe NumericFilterSelectAllOptions
rangeMinimum :: Maybe NumericRangeFilterValue
rangeMaximum :: Maybe NumericRangeFilterValue
includeMinimum :: Maybe Bool
includeMaximum :: Maybe Bool
aggregationFunction :: Maybe AggregationFunction
$sel:nullOption:NumericRangeFilter' :: NumericRangeFilter -> FilterNullOption
$sel:column:NumericRangeFilter' :: NumericRangeFilter -> ColumnIdentifier
$sel:filterId:NumericRangeFilter' :: NumericRangeFilter -> Text
$sel:selectAllOptions:NumericRangeFilter' :: NumericRangeFilter -> Maybe NumericFilterSelectAllOptions
$sel:rangeMinimum:NumericRangeFilter' :: NumericRangeFilter -> Maybe NumericRangeFilterValue
$sel:rangeMaximum:NumericRangeFilter' :: NumericRangeFilter -> Maybe NumericRangeFilterValue
$sel:includeMinimum:NumericRangeFilter' :: NumericRangeFilter -> Maybe Bool
$sel:includeMaximum:NumericRangeFilter' :: NumericRangeFilter -> Maybe Bool
$sel:aggregationFunction:NumericRangeFilter' :: NumericRangeFilter -> 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 Bool
includeMaximum
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
includeMinimum
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NumericRangeFilterValue
rangeMaximum
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NumericRangeFilterValue
rangeMinimum
      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 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 FilterNullOption
nullOption

instance Data.ToJSON NumericRangeFilter where
  toJSON :: NumericRangeFilter -> Value
toJSON NumericRangeFilter' {Maybe Bool
Maybe NumericFilterSelectAllOptions
Maybe NumericRangeFilterValue
Maybe AggregationFunction
Text
ColumnIdentifier
FilterNullOption
nullOption :: FilterNullOption
column :: ColumnIdentifier
filterId :: Text
selectAllOptions :: Maybe NumericFilterSelectAllOptions
rangeMinimum :: Maybe NumericRangeFilterValue
rangeMaximum :: Maybe NumericRangeFilterValue
includeMinimum :: Maybe Bool
includeMaximum :: Maybe Bool
aggregationFunction :: Maybe AggregationFunction
$sel:nullOption:NumericRangeFilter' :: NumericRangeFilter -> FilterNullOption
$sel:column:NumericRangeFilter' :: NumericRangeFilter -> ColumnIdentifier
$sel:filterId:NumericRangeFilter' :: NumericRangeFilter -> Text
$sel:selectAllOptions:NumericRangeFilter' :: NumericRangeFilter -> Maybe NumericFilterSelectAllOptions
$sel:rangeMinimum:NumericRangeFilter' :: NumericRangeFilter -> Maybe NumericRangeFilterValue
$sel:rangeMaximum:NumericRangeFilter' :: NumericRangeFilter -> Maybe NumericRangeFilterValue
$sel:includeMinimum:NumericRangeFilter' :: NumericRangeFilter -> Maybe Bool
$sel:includeMaximum:NumericRangeFilter' :: NumericRangeFilter -> Maybe Bool
$sel:aggregationFunction:NumericRangeFilter' :: NumericRangeFilter -> 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
"IncludeMaximum" 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 Bool
includeMaximum,
            (Key
"IncludeMinimum" 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 Bool
includeMinimum,
            (Key
"RangeMaximum" 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 NumericRangeFilterValue
rangeMaximum,
            (Key
"RangeMinimum" 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 NumericRangeFilterValue
rangeMinimum,
            (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,
            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
"NullOption" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= FilterNullOption
nullOption)
          ]
      )