{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveGeneric      #-}
{-# LANGUAGE LambdaCase         #-}
{-# LANGUAGE OverloadedStrings  #-}

{-# OPTIONS_GHC -fno-warn-unused-imports #-}

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

-- |
-- Module      : Network.AWS.DataPipeline.Types.Sum
-- Copyright   : (c) 2013-2016 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
module Network.AWS.DataPipeline.Types.Sum where

import           Network.AWS.Prelude

data OperatorType
    = OperatorBetween
    | OperatorEQ'
    | OperatorGE
    | OperatorLE
    | OperatorRefEQ
    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)

instance FromText OperatorType where
    parser = takeLowerText >>= \case
        "between" -> pure OperatorBetween
        "eq" -> pure OperatorEQ'
        "ge" -> pure OperatorGE
        "le" -> pure OperatorLE
        "ref_eq" -> pure OperatorRefEQ
        e -> fromTextError $ "Failure parsing OperatorType from value: '" <> e
           <> "'. Accepted values: BETWEEN, EQ, GE, LE, REF_EQ"

instance ToText OperatorType where
    toText = \case
        OperatorBetween -> "BETWEEN"
        OperatorEQ' -> "EQ"
        OperatorGE -> "GE"
        OperatorLE -> "LE"
        OperatorRefEQ -> "REF_EQ"

instance Hashable     OperatorType
instance NFData       OperatorType
instance ToByteString OperatorType
instance ToQuery      OperatorType
instance ToHeader     OperatorType

instance ToJSON OperatorType where
    toJSON = toJSONText

data TaskStatus
    = Failed
    | False'
    | Finished
    deriving (Eq,Ord,Read,Show,Enum,Bounded,Data,Typeable,Generic)

instance FromText TaskStatus where
    parser = takeLowerText >>= \case
        "failed" -> pure Failed
        "false" -> pure False'
        "finished" -> pure Finished
        e -> fromTextError $ "Failure parsing TaskStatus from value: '" <> e
           <> "'. Accepted values: FAILED, FALSE, FINISHED"

instance ToText TaskStatus where
    toText = \case
        Failed -> "FAILED"
        False' -> "FALSE"
        Finished -> "FINISHED"

instance Hashable     TaskStatus
instance NFData       TaskStatus
instance ToByteString TaskStatus
instance ToQuery      TaskStatus
instance ToHeader     TaskStatus

instance ToJSON TaskStatus where
    toJSON = toJSONText