{-# LANGUAGE DeriveAnyClass #-}

module Hercules.API.TaskStatus where

import Hercules.API.Prelude

-- | Similar to a process exit code.
--
-- User feedback in case of an error must be communicated out of band
data TaskStatus
  = -- | Everything was ok.
    Successful ()
  | -- | We did what we could but dependents can not continue.
    Terminated ()
  | -- | Some assumption in the software failed.
    Exceptional Text
  deriving ((forall x. TaskStatus -> Rep TaskStatus x)
-> (forall x. Rep TaskStatus x -> TaskStatus) -> Generic TaskStatus
forall x. Rep TaskStatus x -> TaskStatus
forall x. TaskStatus -> Rep TaskStatus x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep TaskStatus x -> TaskStatus
$cfrom :: forall x. TaskStatus -> Rep TaskStatus x
Generic, Int -> TaskStatus -> ShowS
[TaskStatus] -> ShowS
TaskStatus -> String
(Int -> TaskStatus -> ShowS)
-> (TaskStatus -> String)
-> ([TaskStatus] -> ShowS)
-> Show TaskStatus
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [TaskStatus] -> ShowS
$cshowList :: [TaskStatus] -> ShowS
show :: TaskStatus -> String
$cshow :: TaskStatus -> String
showsPrec :: Int -> TaskStatus -> ShowS
$cshowsPrec :: Int -> TaskStatus -> ShowS
Show, TaskStatus -> TaskStatus -> Bool
(TaskStatus -> TaskStatus -> Bool)
-> (TaskStatus -> TaskStatus -> Bool) -> Eq TaskStatus
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: TaskStatus -> TaskStatus -> Bool
$c/= :: TaskStatus -> TaskStatus -> Bool
== :: TaskStatus -> TaskStatus -> Bool
$c== :: TaskStatus -> TaskStatus -> Bool
Eq, TaskStatus -> ()
(TaskStatus -> ()) -> NFData TaskStatus
forall a. (a -> ()) -> NFData a
rnf :: TaskStatus -> ()
$crnf :: TaskStatus -> ()
NFData, [TaskStatus] -> Encoding
[TaskStatus] -> Value
TaskStatus -> Encoding
TaskStatus -> Value
(TaskStatus -> Value)
-> (TaskStatus -> Encoding)
-> ([TaskStatus] -> Value)
-> ([TaskStatus] -> Encoding)
-> ToJSON TaskStatus
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [TaskStatus] -> Encoding
$ctoEncodingList :: [TaskStatus] -> Encoding
toJSONList :: [TaskStatus] -> Value
$ctoJSONList :: [TaskStatus] -> Value
toEncoding :: TaskStatus -> Encoding
$ctoEncoding :: TaskStatus -> Encoding
toJSON :: TaskStatus -> Value
$ctoJSON :: TaskStatus -> Value
ToJSON, Value -> Parser [TaskStatus]
Value -> Parser TaskStatus
(Value -> Parser TaskStatus)
-> (Value -> Parser [TaskStatus]) -> FromJSON TaskStatus
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [TaskStatus]
$cparseJSONList :: Value -> Parser [TaskStatus]
parseJSON :: Value -> Parser TaskStatus
$cparseJSON :: Value -> Parser TaskStatus
FromJSON)