{-# 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 #-}
module Amazonka.QuickSight.Types.Filter 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.CategoryFilter
import Amazonka.QuickSight.Types.NumericEqualityFilter
import Amazonka.QuickSight.Types.NumericRangeFilter
import Amazonka.QuickSight.Types.RelativeDatesFilter
import Amazonka.QuickSight.Types.TimeEqualityFilter
import Amazonka.QuickSight.Types.TimeRangeFilter
import Amazonka.QuickSight.Types.TopBottomFilter
data Filter = Filter'
{
Filter -> Maybe CategoryFilter
categoryFilter :: Prelude.Maybe CategoryFilter,
Filter -> Maybe NumericEqualityFilter
numericEqualityFilter :: Prelude.Maybe NumericEqualityFilter,
Filter -> Maybe NumericRangeFilter
numericRangeFilter :: Prelude.Maybe NumericRangeFilter,
Filter -> Maybe RelativeDatesFilter
relativeDatesFilter :: Prelude.Maybe RelativeDatesFilter,
Filter -> Maybe TimeEqualityFilter
timeEqualityFilter :: Prelude.Maybe TimeEqualityFilter,
Filter -> Maybe TimeRangeFilter
timeRangeFilter :: Prelude.Maybe TimeRangeFilter,
Filter -> Maybe TopBottomFilter
topBottomFilter :: Prelude.Maybe TopBottomFilter
}
deriving (Filter -> Filter -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Filter -> Filter -> Bool
$c/= :: Filter -> Filter -> Bool
== :: Filter -> Filter -> Bool
$c== :: Filter -> Filter -> Bool
Prelude.Eq, Int -> Filter -> ShowS
[Filter] -> ShowS
Filter -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Filter] -> ShowS
$cshowList :: [Filter] -> ShowS
show :: Filter -> String
$cshow :: Filter -> String
showsPrec :: Int -> Filter -> ShowS
$cshowsPrec :: Int -> Filter -> ShowS
Prelude.Show, forall x. Rep Filter x -> Filter
forall x. Filter -> Rep Filter x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Filter x -> Filter
$cfrom :: forall x. Filter -> Rep Filter x
Prelude.Generic)
newFilter ::
Filter
newFilter :: Filter
newFilter =
Filter'
{ $sel:categoryFilter:Filter' :: Maybe CategoryFilter
categoryFilter = forall a. Maybe a
Prelude.Nothing,
$sel:numericEqualityFilter:Filter' :: Maybe NumericEqualityFilter
numericEqualityFilter = forall a. Maybe a
Prelude.Nothing,
$sel:numericRangeFilter:Filter' :: Maybe NumericRangeFilter
numericRangeFilter = forall a. Maybe a
Prelude.Nothing,
$sel:relativeDatesFilter:Filter' :: Maybe RelativeDatesFilter
relativeDatesFilter = forall a. Maybe a
Prelude.Nothing,
$sel:timeEqualityFilter:Filter' :: Maybe TimeEqualityFilter
timeEqualityFilter = forall a. Maybe a
Prelude.Nothing,
$sel:timeRangeFilter:Filter' :: Maybe TimeRangeFilter
timeRangeFilter = forall a. Maybe a
Prelude.Nothing,
$sel:topBottomFilter:Filter' :: Maybe TopBottomFilter
topBottomFilter = forall a. Maybe a
Prelude.Nothing
}
filter_categoryFilter :: Lens.Lens' Filter (Prelude.Maybe CategoryFilter)
filter_categoryFilter :: Lens' Filter (Maybe CategoryFilter)
filter_categoryFilter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Filter' {Maybe CategoryFilter
categoryFilter :: Maybe CategoryFilter
$sel:categoryFilter:Filter' :: Filter -> Maybe CategoryFilter
categoryFilter} -> Maybe CategoryFilter
categoryFilter) (\s :: Filter
s@Filter' {} Maybe CategoryFilter
a -> Filter
s {$sel:categoryFilter:Filter' :: Maybe CategoryFilter
categoryFilter = Maybe CategoryFilter
a} :: Filter)
filter_numericEqualityFilter :: Lens.Lens' Filter (Prelude.Maybe NumericEqualityFilter)
filter_numericEqualityFilter :: Lens' Filter (Maybe NumericEqualityFilter)
filter_numericEqualityFilter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Filter' {Maybe NumericEqualityFilter
numericEqualityFilter :: Maybe NumericEqualityFilter
$sel:numericEqualityFilter:Filter' :: Filter -> Maybe NumericEqualityFilter
numericEqualityFilter} -> Maybe NumericEqualityFilter
numericEqualityFilter) (\s :: Filter
s@Filter' {} Maybe NumericEqualityFilter
a -> Filter
s {$sel:numericEqualityFilter:Filter' :: Maybe NumericEqualityFilter
numericEqualityFilter = Maybe NumericEqualityFilter
a} :: Filter)
filter_numericRangeFilter :: Lens.Lens' Filter (Prelude.Maybe NumericRangeFilter)
filter_numericRangeFilter :: Lens' Filter (Maybe NumericRangeFilter)
filter_numericRangeFilter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Filter' {Maybe NumericRangeFilter
numericRangeFilter :: Maybe NumericRangeFilter
$sel:numericRangeFilter:Filter' :: Filter -> Maybe NumericRangeFilter
numericRangeFilter} -> Maybe NumericRangeFilter
numericRangeFilter) (\s :: Filter
s@Filter' {} Maybe NumericRangeFilter
a -> Filter
s {$sel:numericRangeFilter:Filter' :: Maybe NumericRangeFilter
numericRangeFilter = Maybe NumericRangeFilter
a} :: Filter)
filter_relativeDatesFilter :: Lens.Lens' Filter (Prelude.Maybe RelativeDatesFilter)
filter_relativeDatesFilter :: Lens' Filter (Maybe RelativeDatesFilter)
filter_relativeDatesFilter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Filter' {Maybe RelativeDatesFilter
relativeDatesFilter :: Maybe RelativeDatesFilter
$sel:relativeDatesFilter:Filter' :: Filter -> Maybe RelativeDatesFilter
relativeDatesFilter} -> Maybe RelativeDatesFilter
relativeDatesFilter) (\s :: Filter
s@Filter' {} Maybe RelativeDatesFilter
a -> Filter
s {$sel:relativeDatesFilter:Filter' :: Maybe RelativeDatesFilter
relativeDatesFilter = Maybe RelativeDatesFilter
a} :: Filter)
filter_timeEqualityFilter :: Lens.Lens' Filter (Prelude.Maybe TimeEqualityFilter)
filter_timeEqualityFilter :: Lens' Filter (Maybe TimeEqualityFilter)
filter_timeEqualityFilter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Filter' {Maybe TimeEqualityFilter
timeEqualityFilter :: Maybe TimeEqualityFilter
$sel:timeEqualityFilter:Filter' :: Filter -> Maybe TimeEqualityFilter
timeEqualityFilter} -> Maybe TimeEqualityFilter
timeEqualityFilter) (\s :: Filter
s@Filter' {} Maybe TimeEqualityFilter
a -> Filter
s {$sel:timeEqualityFilter:Filter' :: Maybe TimeEqualityFilter
timeEqualityFilter = Maybe TimeEqualityFilter
a} :: Filter)
filter_timeRangeFilter :: Lens.Lens' Filter (Prelude.Maybe TimeRangeFilter)
filter_timeRangeFilter :: Lens' Filter (Maybe TimeRangeFilter)
filter_timeRangeFilter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Filter' {Maybe TimeRangeFilter
timeRangeFilter :: Maybe TimeRangeFilter
$sel:timeRangeFilter:Filter' :: Filter -> Maybe TimeRangeFilter
timeRangeFilter} -> Maybe TimeRangeFilter
timeRangeFilter) (\s :: Filter
s@Filter' {} Maybe TimeRangeFilter
a -> Filter
s {$sel:timeRangeFilter:Filter' :: Maybe TimeRangeFilter
timeRangeFilter = Maybe TimeRangeFilter
a} :: Filter)
filter_topBottomFilter :: Lens.Lens' Filter (Prelude.Maybe TopBottomFilter)
filter_topBottomFilter :: Lens' Filter (Maybe TopBottomFilter)
filter_topBottomFilter = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Filter' {Maybe TopBottomFilter
topBottomFilter :: Maybe TopBottomFilter
$sel:topBottomFilter:Filter' :: Filter -> Maybe TopBottomFilter
topBottomFilter} -> Maybe TopBottomFilter
topBottomFilter) (\s :: Filter
s@Filter' {} Maybe TopBottomFilter
a -> Filter
s {$sel:topBottomFilter:Filter' :: Maybe TopBottomFilter
topBottomFilter = Maybe TopBottomFilter
a} :: Filter)
instance Data.FromJSON Filter where
parseJSON :: Value -> Parser Filter
parseJSON =
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
String
"Filter"
( \Object
x ->
Maybe CategoryFilter
-> Maybe NumericEqualityFilter
-> Maybe NumericRangeFilter
-> Maybe RelativeDatesFilter
-> Maybe TimeEqualityFilter
-> Maybe TimeRangeFilter
-> Maybe TopBottomFilter
-> Filter
Filter'
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
"CategoryFilter")
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
"NumericEqualityFilter")
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
"NumericRangeFilter")
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
"RelativeDatesFilter")
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
"TimeEqualityFilter")
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
"TimeRangeFilter")
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
"TopBottomFilter")
)
instance Prelude.Hashable Filter where
hashWithSalt :: Int -> Filter -> Int
hashWithSalt Int
_salt Filter' {Maybe CategoryFilter
Maybe NumericRangeFilter
Maybe NumericEqualityFilter
Maybe TimeEqualityFilter
Maybe TopBottomFilter
Maybe TimeRangeFilter
Maybe RelativeDatesFilter
topBottomFilter :: Maybe TopBottomFilter
timeRangeFilter :: Maybe TimeRangeFilter
timeEqualityFilter :: Maybe TimeEqualityFilter
relativeDatesFilter :: Maybe RelativeDatesFilter
numericRangeFilter :: Maybe NumericRangeFilter
numericEqualityFilter :: Maybe NumericEqualityFilter
categoryFilter :: Maybe CategoryFilter
$sel:topBottomFilter:Filter' :: Filter -> Maybe TopBottomFilter
$sel:timeRangeFilter:Filter' :: Filter -> Maybe TimeRangeFilter
$sel:timeEqualityFilter:Filter' :: Filter -> Maybe TimeEqualityFilter
$sel:relativeDatesFilter:Filter' :: Filter -> Maybe RelativeDatesFilter
$sel:numericRangeFilter:Filter' :: Filter -> Maybe NumericRangeFilter
$sel:numericEqualityFilter:Filter' :: Filter -> Maybe NumericEqualityFilter
$sel:categoryFilter:Filter' :: Filter -> Maybe CategoryFilter
..} =
Int
_salt
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe CategoryFilter
categoryFilter
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NumericEqualityFilter
numericEqualityFilter
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe NumericRangeFilter
numericRangeFilter
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RelativeDatesFilter
relativeDatesFilter
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimeEqualityFilter
timeEqualityFilter
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TimeRangeFilter
timeRangeFilter
forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TopBottomFilter
topBottomFilter
instance Prelude.NFData Filter where
rnf :: Filter -> ()
rnf Filter' {Maybe CategoryFilter
Maybe NumericRangeFilter
Maybe NumericEqualityFilter
Maybe TimeEqualityFilter
Maybe TopBottomFilter
Maybe TimeRangeFilter
Maybe RelativeDatesFilter
topBottomFilter :: Maybe TopBottomFilter
timeRangeFilter :: Maybe TimeRangeFilter
timeEqualityFilter :: Maybe TimeEqualityFilter
relativeDatesFilter :: Maybe RelativeDatesFilter
numericRangeFilter :: Maybe NumericRangeFilter
numericEqualityFilter :: Maybe NumericEqualityFilter
categoryFilter :: Maybe CategoryFilter
$sel:topBottomFilter:Filter' :: Filter -> Maybe TopBottomFilter
$sel:timeRangeFilter:Filter' :: Filter -> Maybe TimeRangeFilter
$sel:timeEqualityFilter:Filter' :: Filter -> Maybe TimeEqualityFilter
$sel:relativeDatesFilter:Filter' :: Filter -> Maybe RelativeDatesFilter
$sel:numericRangeFilter:Filter' :: Filter -> Maybe NumericRangeFilter
$sel:numericEqualityFilter:Filter' :: Filter -> Maybe NumericEqualityFilter
$sel:categoryFilter:Filter' :: Filter -> Maybe CategoryFilter
..} =
forall a. NFData a => a -> ()
Prelude.rnf Maybe CategoryFilter
categoryFilter
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NumericEqualityFilter
numericEqualityFilter
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe NumericRangeFilter
numericRangeFilter
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RelativeDatesFilter
relativeDatesFilter
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimeEqualityFilter
timeEqualityFilter
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TimeRangeFilter
timeRangeFilter
seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TopBottomFilter
topBottomFilter
instance Data.ToJSON Filter where
toJSON :: Filter -> Value
toJSON Filter' {Maybe CategoryFilter
Maybe NumericRangeFilter
Maybe NumericEqualityFilter
Maybe TimeEqualityFilter
Maybe TopBottomFilter
Maybe TimeRangeFilter
Maybe RelativeDatesFilter
topBottomFilter :: Maybe TopBottomFilter
timeRangeFilter :: Maybe TimeRangeFilter
timeEqualityFilter :: Maybe TimeEqualityFilter
relativeDatesFilter :: Maybe RelativeDatesFilter
numericRangeFilter :: Maybe NumericRangeFilter
numericEqualityFilter :: Maybe NumericEqualityFilter
categoryFilter :: Maybe CategoryFilter
$sel:topBottomFilter:Filter' :: Filter -> Maybe TopBottomFilter
$sel:timeRangeFilter:Filter' :: Filter -> Maybe TimeRangeFilter
$sel:timeEqualityFilter:Filter' :: Filter -> Maybe TimeEqualityFilter
$sel:relativeDatesFilter:Filter' :: Filter -> Maybe RelativeDatesFilter
$sel:numericRangeFilter:Filter' :: Filter -> Maybe NumericRangeFilter
$sel:numericEqualityFilter:Filter' :: Filter -> Maybe NumericEqualityFilter
$sel:categoryFilter:Filter' :: Filter -> Maybe CategoryFilter
..} =
[Pair] -> Value
Data.object
( forall a. [Maybe a] -> [a]
Prelude.catMaybes
[ (Key
"CategoryFilter" 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 CategoryFilter
categoryFilter,
(Key
"NumericEqualityFilter" 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 NumericEqualityFilter
numericEqualityFilter,
(Key
"NumericRangeFilter" 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 NumericRangeFilter
numericRangeFilter,
(Key
"RelativeDatesFilter" 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 RelativeDatesFilter
relativeDatesFilter,
(Key
"TimeEqualityFilter" 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 TimeEqualityFilter
timeEqualityFilter,
(Key
"TimeRangeFilter" 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 TimeRangeFilter
timeRangeFilter,
(Key
"TopBottomFilter" 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 TopBottomFilter
topBottomFilter
]
)