{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.QuickSight.Types.ColumnDataType
-- 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.ColumnDataType
  ( ColumnDataType
      ( ..,
        ColumnDataType_DATETIME,
        ColumnDataType_DECIMAL,
        ColumnDataType_INTEGER,
        ColumnDataType_STRING
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

newtype ColumnDataType = ColumnDataType'
  { ColumnDataType -> Text
fromColumnDataType ::
      Core.Text
  }
  deriving stock
    ( Int -> ColumnDataType -> ShowS
[ColumnDataType] -> ShowS
ColumnDataType -> String
(Int -> ColumnDataType -> ShowS)
-> (ColumnDataType -> String)
-> ([ColumnDataType] -> ShowS)
-> Show ColumnDataType
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ColumnDataType] -> ShowS
$cshowList :: [ColumnDataType] -> ShowS
show :: ColumnDataType -> String
$cshow :: ColumnDataType -> String
showsPrec :: Int -> ColumnDataType -> ShowS
$cshowsPrec :: Int -> ColumnDataType -> ShowS
Prelude.Show,
      ReadPrec [ColumnDataType]
ReadPrec ColumnDataType
Int -> ReadS ColumnDataType
ReadS [ColumnDataType]
(Int -> ReadS ColumnDataType)
-> ReadS [ColumnDataType]
-> ReadPrec ColumnDataType
-> ReadPrec [ColumnDataType]
-> Read ColumnDataType
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ColumnDataType]
$creadListPrec :: ReadPrec [ColumnDataType]
readPrec :: ReadPrec ColumnDataType
$creadPrec :: ReadPrec ColumnDataType
readList :: ReadS [ColumnDataType]
$creadList :: ReadS [ColumnDataType]
readsPrec :: Int -> ReadS ColumnDataType
$creadsPrec :: Int -> ReadS ColumnDataType
Prelude.Read,
      ColumnDataType -> ColumnDataType -> Bool
(ColumnDataType -> ColumnDataType -> Bool)
-> (ColumnDataType -> ColumnDataType -> Bool) -> Eq ColumnDataType
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ColumnDataType -> ColumnDataType -> Bool
$c/= :: ColumnDataType -> ColumnDataType -> Bool
== :: ColumnDataType -> ColumnDataType -> Bool
$c== :: ColumnDataType -> ColumnDataType -> Bool
Prelude.Eq,
      Eq ColumnDataType
Eq ColumnDataType
-> (ColumnDataType -> ColumnDataType -> Ordering)
-> (ColumnDataType -> ColumnDataType -> Bool)
-> (ColumnDataType -> ColumnDataType -> Bool)
-> (ColumnDataType -> ColumnDataType -> Bool)
-> (ColumnDataType -> ColumnDataType -> Bool)
-> (ColumnDataType -> ColumnDataType -> ColumnDataType)
-> (ColumnDataType -> ColumnDataType -> ColumnDataType)
-> Ord ColumnDataType
ColumnDataType -> ColumnDataType -> Bool
ColumnDataType -> ColumnDataType -> Ordering
ColumnDataType -> ColumnDataType -> ColumnDataType
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ColumnDataType -> ColumnDataType -> ColumnDataType
$cmin :: ColumnDataType -> ColumnDataType -> ColumnDataType
max :: ColumnDataType -> ColumnDataType -> ColumnDataType
$cmax :: ColumnDataType -> ColumnDataType -> ColumnDataType
>= :: ColumnDataType -> ColumnDataType -> Bool
$c>= :: ColumnDataType -> ColumnDataType -> Bool
> :: ColumnDataType -> ColumnDataType -> Bool
$c> :: ColumnDataType -> ColumnDataType -> Bool
<= :: ColumnDataType -> ColumnDataType -> Bool
$c<= :: ColumnDataType -> ColumnDataType -> Bool
< :: ColumnDataType -> ColumnDataType -> Bool
$c< :: ColumnDataType -> ColumnDataType -> Bool
compare :: ColumnDataType -> ColumnDataType -> Ordering
$ccompare :: ColumnDataType -> ColumnDataType -> Ordering
$cp1Ord :: Eq ColumnDataType
Prelude.Ord,
      (forall x. ColumnDataType -> Rep ColumnDataType x)
-> (forall x. Rep ColumnDataType x -> ColumnDataType)
-> Generic ColumnDataType
forall x. Rep ColumnDataType x -> ColumnDataType
forall x. ColumnDataType -> Rep ColumnDataType x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ColumnDataType x -> ColumnDataType
$cfrom :: forall x. ColumnDataType -> Rep ColumnDataType x
Prelude.Generic
    )
  deriving newtype
    ( Int -> ColumnDataType -> Int
ColumnDataType -> Int
(Int -> ColumnDataType -> Int)
-> (ColumnDataType -> Int) -> Hashable ColumnDataType
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: ColumnDataType -> Int
$chash :: ColumnDataType -> Int
hashWithSalt :: Int -> ColumnDataType -> Int
$chashWithSalt :: Int -> ColumnDataType -> Int
Prelude.Hashable,
      ColumnDataType -> ()
(ColumnDataType -> ()) -> NFData ColumnDataType
forall a. (a -> ()) -> NFData a
rnf :: ColumnDataType -> ()
$crnf :: ColumnDataType -> ()
Prelude.NFData,
      Text -> Either String ColumnDataType
(Text -> Either String ColumnDataType) -> FromText ColumnDataType
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String ColumnDataType
$cfromText :: Text -> Either String ColumnDataType
Core.FromText,
      ColumnDataType -> Text
(ColumnDataType -> Text) -> ToText ColumnDataType
forall a. (a -> Text) -> ToText a
toText :: ColumnDataType -> Text
$ctoText :: ColumnDataType -> Text
Core.ToText,
      ColumnDataType -> ByteString
(ColumnDataType -> ByteString) -> ToByteString ColumnDataType
forall a. (a -> ByteString) -> ToByteString a
toBS :: ColumnDataType -> ByteString
$ctoBS :: ColumnDataType -> ByteString
Core.ToByteString,
      ColumnDataType -> ByteStringBuilder
(ColumnDataType -> ByteStringBuilder) -> ToLog ColumnDataType
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: ColumnDataType -> ByteStringBuilder
$cbuild :: ColumnDataType -> ByteStringBuilder
Core.ToLog,
      HeaderName -> ColumnDataType -> [Header]
(HeaderName -> ColumnDataType -> [Header])
-> ToHeader ColumnDataType
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> ColumnDataType -> [Header]
$ctoHeader :: HeaderName -> ColumnDataType -> [Header]
Core.ToHeader,
      ColumnDataType -> QueryString
(ColumnDataType -> QueryString) -> ToQuery ColumnDataType
forall a. (a -> QueryString) -> ToQuery a
toQuery :: ColumnDataType -> QueryString
$ctoQuery :: ColumnDataType -> QueryString
Core.ToQuery,
      Value -> Parser [ColumnDataType]
Value -> Parser ColumnDataType
(Value -> Parser ColumnDataType)
-> (Value -> Parser [ColumnDataType]) -> FromJSON ColumnDataType
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [ColumnDataType]
$cparseJSONList :: Value -> Parser [ColumnDataType]
parseJSON :: Value -> Parser ColumnDataType
$cparseJSON :: Value -> Parser ColumnDataType
Core.FromJSON,
      FromJSONKeyFunction [ColumnDataType]
FromJSONKeyFunction ColumnDataType
FromJSONKeyFunction ColumnDataType
-> FromJSONKeyFunction [ColumnDataType]
-> FromJSONKey ColumnDataType
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [ColumnDataType]
$cfromJSONKeyList :: FromJSONKeyFunction [ColumnDataType]
fromJSONKey :: FromJSONKeyFunction ColumnDataType
$cfromJSONKey :: FromJSONKeyFunction ColumnDataType
Core.FromJSONKey,
      [ColumnDataType] -> Encoding
[ColumnDataType] -> Value
ColumnDataType -> Encoding
ColumnDataType -> Value
(ColumnDataType -> Value)
-> (ColumnDataType -> Encoding)
-> ([ColumnDataType] -> Value)
-> ([ColumnDataType] -> Encoding)
-> ToJSON ColumnDataType
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [ColumnDataType] -> Encoding
$ctoEncodingList :: [ColumnDataType] -> Encoding
toJSONList :: [ColumnDataType] -> Value
$ctoJSONList :: [ColumnDataType] -> Value
toEncoding :: ColumnDataType -> Encoding
$ctoEncoding :: ColumnDataType -> Encoding
toJSON :: ColumnDataType -> Value
$ctoJSON :: ColumnDataType -> Value
Core.ToJSON,
      ToJSONKeyFunction [ColumnDataType]
ToJSONKeyFunction ColumnDataType
ToJSONKeyFunction ColumnDataType
-> ToJSONKeyFunction [ColumnDataType] -> ToJSONKey ColumnDataType
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [ColumnDataType]
$ctoJSONKeyList :: ToJSONKeyFunction [ColumnDataType]
toJSONKey :: ToJSONKeyFunction ColumnDataType
$ctoJSONKey :: ToJSONKeyFunction ColumnDataType
Core.ToJSONKey,
      [Node] -> Either String ColumnDataType
([Node] -> Either String ColumnDataType) -> FromXML ColumnDataType
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String ColumnDataType
$cparseXML :: [Node] -> Either String ColumnDataType
Core.FromXML,
      ColumnDataType -> XML
(ColumnDataType -> XML) -> ToXML ColumnDataType
forall a. (a -> XML) -> ToXML a
toXML :: ColumnDataType -> XML
$ctoXML :: ColumnDataType -> XML
Core.ToXML
    )

pattern ColumnDataType_DATETIME :: ColumnDataType
pattern $bColumnDataType_DATETIME :: ColumnDataType
$mColumnDataType_DATETIME :: forall r. ColumnDataType -> (Void# -> r) -> (Void# -> r) -> r
ColumnDataType_DATETIME = ColumnDataType' "DATETIME"

pattern ColumnDataType_DECIMAL :: ColumnDataType
pattern $bColumnDataType_DECIMAL :: ColumnDataType
$mColumnDataType_DECIMAL :: forall r. ColumnDataType -> (Void# -> r) -> (Void# -> r) -> r
ColumnDataType_DECIMAL = ColumnDataType' "DECIMAL"

pattern ColumnDataType_INTEGER :: ColumnDataType
pattern $bColumnDataType_INTEGER :: ColumnDataType
$mColumnDataType_INTEGER :: forall r. ColumnDataType -> (Void# -> r) -> (Void# -> r) -> r
ColumnDataType_INTEGER = ColumnDataType' "INTEGER"

pattern ColumnDataType_STRING :: ColumnDataType
pattern $bColumnDataType_STRING :: ColumnDataType
$mColumnDataType_STRING :: forall r. ColumnDataType -> (Void# -> r) -> (Void# -> r) -> r
ColumnDataType_STRING = ColumnDataType' "STRING"

{-# COMPLETE
  ColumnDataType_DATETIME,
  ColumnDataType_DECIMAL,
  ColumnDataType_INTEGER,
  ColumnDataType_STRING,
  ColumnDataType'
  #-}