{-# 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.LakeFormation.Types.DataLakeResourceType
-- 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.LakeFormation.Types.DataLakeResourceType
  ( DataLakeResourceType
      ( ..,
        DataLakeResourceType_CATALOG,
        DataLakeResourceType_DATABASE,
        DataLakeResourceType_DATA_LOCATION,
        DataLakeResourceType_LF_TAG,
        DataLakeResourceType_LF_TAG_POLICY,
        DataLakeResourceType_LF_TAG_POLICY_DATABASE,
        DataLakeResourceType_LF_TAG_POLICY_TABLE,
        DataLakeResourceType_TABLE
      ),
  )
where

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

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

pattern DataLakeResourceType_CATALOG :: DataLakeResourceType
pattern $bDataLakeResourceType_CATALOG :: DataLakeResourceType
$mDataLakeResourceType_CATALOG :: forall r. DataLakeResourceType -> (Void# -> r) -> (Void# -> r) -> r
DataLakeResourceType_CATALOG = DataLakeResourceType' "CATALOG"

pattern DataLakeResourceType_DATABASE :: DataLakeResourceType
pattern $bDataLakeResourceType_DATABASE :: DataLakeResourceType
$mDataLakeResourceType_DATABASE :: forall r. DataLakeResourceType -> (Void# -> r) -> (Void# -> r) -> r
DataLakeResourceType_DATABASE = DataLakeResourceType' "DATABASE"

pattern DataLakeResourceType_DATA_LOCATION :: DataLakeResourceType
pattern $bDataLakeResourceType_DATA_LOCATION :: DataLakeResourceType
$mDataLakeResourceType_DATA_LOCATION :: forall r. DataLakeResourceType -> (Void# -> r) -> (Void# -> r) -> r
DataLakeResourceType_DATA_LOCATION = DataLakeResourceType' "DATA_LOCATION"

pattern DataLakeResourceType_LF_TAG :: DataLakeResourceType
pattern $bDataLakeResourceType_LF_TAG :: DataLakeResourceType
$mDataLakeResourceType_LF_TAG :: forall r. DataLakeResourceType -> (Void# -> r) -> (Void# -> r) -> r
DataLakeResourceType_LF_TAG = DataLakeResourceType' "LF_TAG"

pattern DataLakeResourceType_LF_TAG_POLICY :: DataLakeResourceType
pattern $bDataLakeResourceType_LF_TAG_POLICY :: DataLakeResourceType
$mDataLakeResourceType_LF_TAG_POLICY :: forall r. DataLakeResourceType -> (Void# -> r) -> (Void# -> r) -> r
DataLakeResourceType_LF_TAG_POLICY = DataLakeResourceType' "LF_TAG_POLICY"

pattern DataLakeResourceType_LF_TAG_POLICY_DATABASE :: DataLakeResourceType
pattern $bDataLakeResourceType_LF_TAG_POLICY_DATABASE :: DataLakeResourceType
$mDataLakeResourceType_LF_TAG_POLICY_DATABASE :: forall r. DataLakeResourceType -> (Void# -> r) -> (Void# -> r) -> r
DataLakeResourceType_LF_TAG_POLICY_DATABASE = DataLakeResourceType' "LF_TAG_POLICY_DATABASE"

pattern DataLakeResourceType_LF_TAG_POLICY_TABLE :: DataLakeResourceType
pattern $bDataLakeResourceType_LF_TAG_POLICY_TABLE :: DataLakeResourceType
$mDataLakeResourceType_LF_TAG_POLICY_TABLE :: forall r. DataLakeResourceType -> (Void# -> r) -> (Void# -> r) -> r
DataLakeResourceType_LF_TAG_POLICY_TABLE = DataLakeResourceType' "LF_TAG_POLICY_TABLE"

pattern DataLakeResourceType_TABLE :: DataLakeResourceType
pattern $bDataLakeResourceType_TABLE :: DataLakeResourceType
$mDataLakeResourceType_TABLE :: forall r. DataLakeResourceType -> (Void# -> r) -> (Void# -> r) -> r
DataLakeResourceType_TABLE = DataLakeResourceType' "TABLE"

{-# COMPLETE
  DataLakeResourceType_CATALOG,
  DataLakeResourceType_DATABASE,
  DataLakeResourceType_DATA_LOCATION,
  DataLakeResourceType_LF_TAG,
  DataLakeResourceType_LF_TAG_POLICY,
  DataLakeResourceType_LF_TAG_POLICY_DATABASE,
  DataLakeResourceType_LF_TAG_POLICY_TABLE,
  DataLakeResourceType_TABLE,
  DataLakeResourceType'
  #-}