{-# 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.TransformOperation
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.QuickSight.Types.TransformOperation where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.QuickSight.Types.CastColumnTypeOperation
import Amazonka.QuickSight.Types.CreateColumnsOperation
import Amazonka.QuickSight.Types.FilterOperation
import Amazonka.QuickSight.Types.ProjectOperation
import Amazonka.QuickSight.Types.RenameColumnOperation
import Amazonka.QuickSight.Types.TagColumnOperation
import Amazonka.QuickSight.Types.UntagColumnOperation

-- | A data transformation on a logical table. This is a variant type
-- structure. For this structure to be valid, only one of the attributes
-- can be non-null.
--
-- /See:/ 'newTransformOperation' smart constructor.
data TransformOperation = TransformOperation'
  { -- | A transform operation that casts a column to a different type.
    TransformOperation -> Maybe CastColumnTypeOperation
castColumnTypeOperation :: Prelude.Maybe CastColumnTypeOperation,
    -- | An operation that tags a column with additional information.
    TransformOperation -> Maybe TagColumnOperation
tagColumnOperation :: Prelude.Maybe TagColumnOperation,
    -- | An operation that creates calculated columns. Columns created in one
    -- such operation form a lexical closure.
    TransformOperation -> Maybe CreateColumnsOperation
createColumnsOperation :: Prelude.Maybe CreateColumnsOperation,
    TransformOperation -> Maybe UntagColumnOperation
untagColumnOperation :: Prelude.Maybe UntagColumnOperation,
    -- | An operation that filters rows based on some condition.
    TransformOperation -> Maybe FilterOperation
filterOperation :: Prelude.Maybe FilterOperation,
    -- | An operation that projects columns. Operations that come after a
    -- projection can only refer to projected columns.
    TransformOperation -> Maybe ProjectOperation
projectOperation :: Prelude.Maybe ProjectOperation,
    -- | An operation that renames a column.
    TransformOperation -> Maybe RenameColumnOperation
renameColumnOperation :: Prelude.Maybe RenameColumnOperation
  }
  deriving (TransformOperation -> TransformOperation -> Bool
(TransformOperation -> TransformOperation -> Bool)
-> (TransformOperation -> TransformOperation -> Bool)
-> Eq TransformOperation
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TransformOperation -> TransformOperation -> Bool
$c/= :: TransformOperation -> TransformOperation -> Bool
== :: TransformOperation -> TransformOperation -> Bool
$c== :: TransformOperation -> TransformOperation -> Bool
Prelude.Eq, ReadPrec [TransformOperation]
ReadPrec TransformOperation
Int -> ReadS TransformOperation
ReadS [TransformOperation]
(Int -> ReadS TransformOperation)
-> ReadS [TransformOperation]
-> ReadPrec TransformOperation
-> ReadPrec [TransformOperation]
-> Read TransformOperation
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [TransformOperation]
$creadListPrec :: ReadPrec [TransformOperation]
readPrec :: ReadPrec TransformOperation
$creadPrec :: ReadPrec TransformOperation
readList :: ReadS [TransformOperation]
$creadList :: ReadS [TransformOperation]
readsPrec :: Int -> ReadS TransformOperation
$creadsPrec :: Int -> ReadS TransformOperation
Prelude.Read, Int -> TransformOperation -> ShowS
[TransformOperation] -> ShowS
TransformOperation -> String
(Int -> TransformOperation -> ShowS)
-> (TransformOperation -> String)
-> ([TransformOperation] -> ShowS)
-> Show TransformOperation
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TransformOperation] -> ShowS
$cshowList :: [TransformOperation] -> ShowS
show :: TransformOperation -> String
$cshow :: TransformOperation -> String
showsPrec :: Int -> TransformOperation -> ShowS
$cshowsPrec :: Int -> TransformOperation -> ShowS
Prelude.Show, (forall x. TransformOperation -> Rep TransformOperation x)
-> (forall x. Rep TransformOperation x -> TransformOperation)
-> Generic TransformOperation
forall x. Rep TransformOperation x -> TransformOperation
forall x. TransformOperation -> Rep TransformOperation x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TransformOperation x -> TransformOperation
$cfrom :: forall x. TransformOperation -> Rep TransformOperation x
Prelude.Generic)

-- |
-- Create a value of 'TransformOperation' 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:
--
-- 'castColumnTypeOperation', 'transformOperation_castColumnTypeOperation' - A transform operation that casts a column to a different type.
--
-- 'tagColumnOperation', 'transformOperation_tagColumnOperation' - An operation that tags a column with additional information.
--
-- 'createColumnsOperation', 'transformOperation_createColumnsOperation' - An operation that creates calculated columns. Columns created in one
-- such operation form a lexical closure.
--
-- 'untagColumnOperation', 'transformOperation_untagColumnOperation' - Undocumented member.
--
-- 'filterOperation', 'transformOperation_filterOperation' - An operation that filters rows based on some condition.
--
-- 'projectOperation', 'transformOperation_projectOperation' - An operation that projects columns. Operations that come after a
-- projection can only refer to projected columns.
--
-- 'renameColumnOperation', 'transformOperation_renameColumnOperation' - An operation that renames a column.
newTransformOperation ::
  TransformOperation
newTransformOperation :: TransformOperation
newTransformOperation =
  TransformOperation' :: Maybe CastColumnTypeOperation
-> Maybe TagColumnOperation
-> Maybe CreateColumnsOperation
-> Maybe UntagColumnOperation
-> Maybe FilterOperation
-> Maybe ProjectOperation
-> Maybe RenameColumnOperation
-> TransformOperation
TransformOperation'
    { $sel:castColumnTypeOperation:TransformOperation' :: Maybe CastColumnTypeOperation
castColumnTypeOperation =
        Maybe CastColumnTypeOperation
forall a. Maybe a
Prelude.Nothing,
      $sel:tagColumnOperation:TransformOperation' :: Maybe TagColumnOperation
tagColumnOperation = Maybe TagColumnOperation
forall a. Maybe a
Prelude.Nothing,
      $sel:createColumnsOperation:TransformOperation' :: Maybe CreateColumnsOperation
createColumnsOperation = Maybe CreateColumnsOperation
forall a. Maybe a
Prelude.Nothing,
      $sel:untagColumnOperation:TransformOperation' :: Maybe UntagColumnOperation
untagColumnOperation = Maybe UntagColumnOperation
forall a. Maybe a
Prelude.Nothing,
      $sel:filterOperation:TransformOperation' :: Maybe FilterOperation
filterOperation = Maybe FilterOperation
forall a. Maybe a
Prelude.Nothing,
      $sel:projectOperation:TransformOperation' :: Maybe ProjectOperation
projectOperation = Maybe ProjectOperation
forall a. Maybe a
Prelude.Nothing,
      $sel:renameColumnOperation:TransformOperation' :: Maybe RenameColumnOperation
renameColumnOperation = Maybe RenameColumnOperation
forall a. Maybe a
Prelude.Nothing
    }

-- | A transform operation that casts a column to a different type.
transformOperation_castColumnTypeOperation :: Lens.Lens' TransformOperation (Prelude.Maybe CastColumnTypeOperation)
transformOperation_castColumnTypeOperation :: (Maybe CastColumnTypeOperation
 -> f (Maybe CastColumnTypeOperation))
-> TransformOperation -> f TransformOperation
transformOperation_castColumnTypeOperation = (TransformOperation -> Maybe CastColumnTypeOperation)
-> (TransformOperation
    -> Maybe CastColumnTypeOperation -> TransformOperation)
-> Lens
     TransformOperation
     TransformOperation
     (Maybe CastColumnTypeOperation)
     (Maybe CastColumnTypeOperation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransformOperation' {Maybe CastColumnTypeOperation
castColumnTypeOperation :: Maybe CastColumnTypeOperation
$sel:castColumnTypeOperation:TransformOperation' :: TransformOperation -> Maybe CastColumnTypeOperation
castColumnTypeOperation} -> Maybe CastColumnTypeOperation
castColumnTypeOperation) (\s :: TransformOperation
s@TransformOperation' {} Maybe CastColumnTypeOperation
a -> TransformOperation
s {$sel:castColumnTypeOperation:TransformOperation' :: Maybe CastColumnTypeOperation
castColumnTypeOperation = Maybe CastColumnTypeOperation
a} :: TransformOperation)

-- | An operation that tags a column with additional information.
transformOperation_tagColumnOperation :: Lens.Lens' TransformOperation (Prelude.Maybe TagColumnOperation)
transformOperation_tagColumnOperation :: (Maybe TagColumnOperation -> f (Maybe TagColumnOperation))
-> TransformOperation -> f TransformOperation
transformOperation_tagColumnOperation = (TransformOperation -> Maybe TagColumnOperation)
-> (TransformOperation
    -> Maybe TagColumnOperation -> TransformOperation)
-> Lens
     TransformOperation
     TransformOperation
     (Maybe TagColumnOperation)
     (Maybe TagColumnOperation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransformOperation' {Maybe TagColumnOperation
tagColumnOperation :: Maybe TagColumnOperation
$sel:tagColumnOperation:TransformOperation' :: TransformOperation -> Maybe TagColumnOperation
tagColumnOperation} -> Maybe TagColumnOperation
tagColumnOperation) (\s :: TransformOperation
s@TransformOperation' {} Maybe TagColumnOperation
a -> TransformOperation
s {$sel:tagColumnOperation:TransformOperation' :: Maybe TagColumnOperation
tagColumnOperation = Maybe TagColumnOperation
a} :: TransformOperation)

-- | An operation that creates calculated columns. Columns created in one
-- such operation form a lexical closure.
transformOperation_createColumnsOperation :: Lens.Lens' TransformOperation (Prelude.Maybe CreateColumnsOperation)
transformOperation_createColumnsOperation :: (Maybe CreateColumnsOperation -> f (Maybe CreateColumnsOperation))
-> TransformOperation -> f TransformOperation
transformOperation_createColumnsOperation = (TransformOperation -> Maybe CreateColumnsOperation)
-> (TransformOperation
    -> Maybe CreateColumnsOperation -> TransformOperation)
-> Lens
     TransformOperation
     TransformOperation
     (Maybe CreateColumnsOperation)
     (Maybe CreateColumnsOperation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransformOperation' {Maybe CreateColumnsOperation
createColumnsOperation :: Maybe CreateColumnsOperation
$sel:createColumnsOperation:TransformOperation' :: TransformOperation -> Maybe CreateColumnsOperation
createColumnsOperation} -> Maybe CreateColumnsOperation
createColumnsOperation) (\s :: TransformOperation
s@TransformOperation' {} Maybe CreateColumnsOperation
a -> TransformOperation
s {$sel:createColumnsOperation:TransformOperation' :: Maybe CreateColumnsOperation
createColumnsOperation = Maybe CreateColumnsOperation
a} :: TransformOperation)

-- | Undocumented member.
transformOperation_untagColumnOperation :: Lens.Lens' TransformOperation (Prelude.Maybe UntagColumnOperation)
transformOperation_untagColumnOperation :: (Maybe UntagColumnOperation -> f (Maybe UntagColumnOperation))
-> TransformOperation -> f TransformOperation
transformOperation_untagColumnOperation = (TransformOperation -> Maybe UntagColumnOperation)
-> (TransformOperation
    -> Maybe UntagColumnOperation -> TransformOperation)
-> Lens
     TransformOperation
     TransformOperation
     (Maybe UntagColumnOperation)
     (Maybe UntagColumnOperation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransformOperation' {Maybe UntagColumnOperation
untagColumnOperation :: Maybe UntagColumnOperation
$sel:untagColumnOperation:TransformOperation' :: TransformOperation -> Maybe UntagColumnOperation
untagColumnOperation} -> Maybe UntagColumnOperation
untagColumnOperation) (\s :: TransformOperation
s@TransformOperation' {} Maybe UntagColumnOperation
a -> TransformOperation
s {$sel:untagColumnOperation:TransformOperation' :: Maybe UntagColumnOperation
untagColumnOperation = Maybe UntagColumnOperation
a} :: TransformOperation)

-- | An operation that filters rows based on some condition.
transformOperation_filterOperation :: Lens.Lens' TransformOperation (Prelude.Maybe FilterOperation)
transformOperation_filterOperation :: (Maybe FilterOperation -> f (Maybe FilterOperation))
-> TransformOperation -> f TransformOperation
transformOperation_filterOperation = (TransformOperation -> Maybe FilterOperation)
-> (TransformOperation
    -> Maybe FilterOperation -> TransformOperation)
-> Lens
     TransformOperation
     TransformOperation
     (Maybe FilterOperation)
     (Maybe FilterOperation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransformOperation' {Maybe FilterOperation
filterOperation :: Maybe FilterOperation
$sel:filterOperation:TransformOperation' :: TransformOperation -> Maybe FilterOperation
filterOperation} -> Maybe FilterOperation
filterOperation) (\s :: TransformOperation
s@TransformOperation' {} Maybe FilterOperation
a -> TransformOperation
s {$sel:filterOperation:TransformOperation' :: Maybe FilterOperation
filterOperation = Maybe FilterOperation
a} :: TransformOperation)

-- | An operation that projects columns. Operations that come after a
-- projection can only refer to projected columns.
transformOperation_projectOperation :: Lens.Lens' TransformOperation (Prelude.Maybe ProjectOperation)
transformOperation_projectOperation :: (Maybe ProjectOperation -> f (Maybe ProjectOperation))
-> TransformOperation -> f TransformOperation
transformOperation_projectOperation = (TransformOperation -> Maybe ProjectOperation)
-> (TransformOperation
    -> Maybe ProjectOperation -> TransformOperation)
-> Lens
     TransformOperation
     TransformOperation
     (Maybe ProjectOperation)
     (Maybe ProjectOperation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransformOperation' {Maybe ProjectOperation
projectOperation :: Maybe ProjectOperation
$sel:projectOperation:TransformOperation' :: TransformOperation -> Maybe ProjectOperation
projectOperation} -> Maybe ProjectOperation
projectOperation) (\s :: TransformOperation
s@TransformOperation' {} Maybe ProjectOperation
a -> TransformOperation
s {$sel:projectOperation:TransformOperation' :: Maybe ProjectOperation
projectOperation = Maybe ProjectOperation
a} :: TransformOperation)

-- | An operation that renames a column.
transformOperation_renameColumnOperation :: Lens.Lens' TransformOperation (Prelude.Maybe RenameColumnOperation)
transformOperation_renameColumnOperation :: (Maybe RenameColumnOperation -> f (Maybe RenameColumnOperation))
-> TransformOperation -> f TransformOperation
transformOperation_renameColumnOperation = (TransformOperation -> Maybe RenameColumnOperation)
-> (TransformOperation
    -> Maybe RenameColumnOperation -> TransformOperation)
-> Lens
     TransformOperation
     TransformOperation
     (Maybe RenameColumnOperation)
     (Maybe RenameColumnOperation)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\TransformOperation' {Maybe RenameColumnOperation
renameColumnOperation :: Maybe RenameColumnOperation
$sel:renameColumnOperation:TransformOperation' :: TransformOperation -> Maybe RenameColumnOperation
renameColumnOperation} -> Maybe RenameColumnOperation
renameColumnOperation) (\s :: TransformOperation
s@TransformOperation' {} Maybe RenameColumnOperation
a -> TransformOperation
s {$sel:renameColumnOperation:TransformOperation' :: Maybe RenameColumnOperation
renameColumnOperation = Maybe RenameColumnOperation
a} :: TransformOperation)

instance Core.FromJSON TransformOperation where
  parseJSON :: Value -> Parser TransformOperation
parseJSON =
    String
-> (Object -> Parser TransformOperation)
-> Value
-> Parser TransformOperation
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"TransformOperation"
      ( \Object
x ->
          Maybe CastColumnTypeOperation
-> Maybe TagColumnOperation
-> Maybe CreateColumnsOperation
-> Maybe UntagColumnOperation
-> Maybe FilterOperation
-> Maybe ProjectOperation
-> Maybe RenameColumnOperation
-> TransformOperation
TransformOperation'
            (Maybe CastColumnTypeOperation
 -> Maybe TagColumnOperation
 -> Maybe CreateColumnsOperation
 -> Maybe UntagColumnOperation
 -> Maybe FilterOperation
 -> Maybe ProjectOperation
 -> Maybe RenameColumnOperation
 -> TransformOperation)
-> Parser (Maybe CastColumnTypeOperation)
-> Parser
     (Maybe TagColumnOperation
      -> Maybe CreateColumnsOperation
      -> Maybe UntagColumnOperation
      -> Maybe FilterOperation
      -> Maybe ProjectOperation
      -> Maybe RenameColumnOperation
      -> TransformOperation)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe CastColumnTypeOperation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CastColumnTypeOperation")
            Parser
  (Maybe TagColumnOperation
   -> Maybe CreateColumnsOperation
   -> Maybe UntagColumnOperation
   -> Maybe FilterOperation
   -> Maybe ProjectOperation
   -> Maybe RenameColumnOperation
   -> TransformOperation)
-> Parser (Maybe TagColumnOperation)
-> Parser
     (Maybe CreateColumnsOperation
      -> Maybe UntagColumnOperation
      -> Maybe FilterOperation
      -> Maybe ProjectOperation
      -> Maybe RenameColumnOperation
      -> TransformOperation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe TagColumnOperation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TagColumnOperation")
            Parser
  (Maybe CreateColumnsOperation
   -> Maybe UntagColumnOperation
   -> Maybe FilterOperation
   -> Maybe ProjectOperation
   -> Maybe RenameColumnOperation
   -> TransformOperation)
-> Parser (Maybe CreateColumnsOperation)
-> Parser
     (Maybe UntagColumnOperation
      -> Maybe FilterOperation
      -> Maybe ProjectOperation
      -> Maybe RenameColumnOperation
      -> TransformOperation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CreateColumnsOperation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CreateColumnsOperation")
            Parser
  (Maybe UntagColumnOperation
   -> Maybe FilterOperation
   -> Maybe ProjectOperation
   -> Maybe RenameColumnOperation
   -> TransformOperation)
-> Parser (Maybe UntagColumnOperation)
-> Parser
     (Maybe FilterOperation
      -> Maybe ProjectOperation
      -> Maybe RenameColumnOperation
      -> TransformOperation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe UntagColumnOperation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"UntagColumnOperation")
            Parser
  (Maybe FilterOperation
   -> Maybe ProjectOperation
   -> Maybe RenameColumnOperation
   -> TransformOperation)
-> Parser (Maybe FilterOperation)
-> Parser
     (Maybe ProjectOperation
      -> Maybe RenameColumnOperation -> TransformOperation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe FilterOperation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FilterOperation")
            Parser
  (Maybe ProjectOperation
   -> Maybe RenameColumnOperation -> TransformOperation)
-> Parser (Maybe ProjectOperation)
-> Parser (Maybe RenameColumnOperation -> TransformOperation)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ProjectOperation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ProjectOperation")
            Parser (Maybe RenameColumnOperation -> TransformOperation)
-> Parser (Maybe RenameColumnOperation)
-> Parser TransformOperation
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe RenameColumnOperation)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"RenameColumnOperation")
      )

instance Prelude.Hashable TransformOperation

instance Prelude.NFData TransformOperation

instance Core.ToJSON TransformOperation where
  toJSON :: TransformOperation -> Value
toJSON TransformOperation' {Maybe CastColumnTypeOperation
Maybe CreateColumnsOperation
Maybe FilterOperation
Maybe ProjectOperation
Maybe RenameColumnOperation
Maybe TagColumnOperation
Maybe UntagColumnOperation
renameColumnOperation :: Maybe RenameColumnOperation
projectOperation :: Maybe ProjectOperation
filterOperation :: Maybe FilterOperation
untagColumnOperation :: Maybe UntagColumnOperation
createColumnsOperation :: Maybe CreateColumnsOperation
tagColumnOperation :: Maybe TagColumnOperation
castColumnTypeOperation :: Maybe CastColumnTypeOperation
$sel:renameColumnOperation:TransformOperation' :: TransformOperation -> Maybe RenameColumnOperation
$sel:projectOperation:TransformOperation' :: TransformOperation -> Maybe ProjectOperation
$sel:filterOperation:TransformOperation' :: TransformOperation -> Maybe FilterOperation
$sel:untagColumnOperation:TransformOperation' :: TransformOperation -> Maybe UntagColumnOperation
$sel:createColumnsOperation:TransformOperation' :: TransformOperation -> Maybe CreateColumnsOperation
$sel:tagColumnOperation:TransformOperation' :: TransformOperation -> Maybe TagColumnOperation
$sel:castColumnTypeOperation:TransformOperation' :: TransformOperation -> Maybe CastColumnTypeOperation
..} =
    [Pair] -> Value
Core.object
      ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Text
"CastColumnTypeOperation" Text -> CastColumnTypeOperation -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CastColumnTypeOperation -> Pair)
-> Maybe CastColumnTypeOperation -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CastColumnTypeOperation
castColumnTypeOperation,
            (Text
"TagColumnOperation" Text -> TagColumnOperation -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (TagColumnOperation -> Pair)
-> Maybe TagColumnOperation -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TagColumnOperation
tagColumnOperation,
            (Text
"CreateColumnsOperation" Text -> CreateColumnsOperation -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (CreateColumnsOperation -> Pair)
-> Maybe CreateColumnsOperation -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe CreateColumnsOperation
createColumnsOperation,
            (Text
"UntagColumnOperation" Text -> UntagColumnOperation -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (UntagColumnOperation -> Pair)
-> Maybe UntagColumnOperation -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe UntagColumnOperation
untagColumnOperation,
            (Text
"FilterOperation" Text -> FilterOperation -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (FilterOperation -> Pair) -> Maybe FilterOperation -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe FilterOperation
filterOperation,
            (Text
"ProjectOperation" Text -> ProjectOperation -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (ProjectOperation -> Pair) -> Maybe ProjectOperation -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ProjectOperation
projectOperation,
            (Text
"RenameColumnOperation" Text -> RenameColumnOperation -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
              (RenameColumnOperation -> Pair)
-> Maybe RenameColumnOperation -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe RenameColumnOperation
renameColumnOperation
          ]
      )