{-# 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.DataSync.Types.OverwriteMode
-- 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.DataSync.Types.OverwriteMode
  ( OverwriteMode
      ( ..,
        OverwriteMode_ALWAYS,
        OverwriteMode_NEVER
      ),
  )
where

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

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

pattern OverwriteMode_ALWAYS :: OverwriteMode
pattern $bOverwriteMode_ALWAYS :: OverwriteMode
$mOverwriteMode_ALWAYS :: forall r. OverwriteMode -> (Void# -> r) -> (Void# -> r) -> r
OverwriteMode_ALWAYS = OverwriteMode' "ALWAYS"

pattern OverwriteMode_NEVER :: OverwriteMode
pattern $bOverwriteMode_NEVER :: OverwriteMode
$mOverwriteMode_NEVER :: forall r. OverwriteMode -> (Void# -> r) -> (Void# -> r) -> r
OverwriteMode_NEVER = OverwriteMode' "NEVER"

{-# COMPLETE
  OverwriteMode_ALWAYS,
  OverwriteMode_NEVER,
  OverwriteMode'
  #-}