{-# 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.Athena.Types.StatementType
-- 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.Athena.Types.StatementType
  ( StatementType
      ( ..,
        StatementType_DDL,
        StatementType_DML,
        StatementType_UTILITY
      ),
  )
where

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

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

pattern StatementType_DDL :: StatementType
pattern $bStatementType_DDL :: StatementType
$mStatementType_DDL :: forall r. StatementType -> (Void# -> r) -> (Void# -> r) -> r
StatementType_DDL = StatementType' "DDL"

pattern StatementType_DML :: StatementType
pattern $bStatementType_DML :: StatementType
$mStatementType_DML :: forall r. StatementType -> (Void# -> r) -> (Void# -> r) -> r
StatementType_DML = StatementType' "DML"

pattern StatementType_UTILITY :: StatementType
pattern $bStatementType_UTILITY :: StatementType
$mStatementType_UTILITY :: forall r. StatementType -> (Void# -> r) -> (Void# -> r) -> r
StatementType_UTILITY = StatementType' "UTILITY"

{-# COMPLETE
  StatementType_DDL,
  StatementType_DML,
  StatementType_UTILITY,
  StatementType'
  #-}