{-# 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
$cfrom :: forall x. TaskStatus -> Rep TaskStatus x
from :: forall x. TaskStatus -> Rep TaskStatus x
$cto :: forall x. Rep TaskStatus x -> TaskStatus
to :: forall x. Rep TaskStatus x -> TaskStatus
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
$cshowsPrec :: Int -> TaskStatus -> ShowS
showsPrec :: Int -> TaskStatus -> ShowS
$cshow :: TaskStatus -> String
show :: TaskStatus -> String
$cshowList :: [TaskStatus] -> ShowS
showList :: [TaskStatus] -> ShowS
Show, TaskStatus -> TaskStatus -> Bool
(TaskStatus -> TaskStatus -> Bool)
-> (TaskStatus -> TaskStatus -> Bool) -> Eq TaskStatus
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TaskStatus -> TaskStatus -> Bool
== :: TaskStatus -> TaskStatus -> Bool
$c/= :: TaskStatus -> TaskStatus -> Bool
/= :: TaskStatus -> TaskStatus -> Bool
Eq, TaskStatus -> ()
(TaskStatus -> ()) -> NFData TaskStatus
forall a. (a -> ()) -> NFData a
$crnf :: TaskStatus -> ()
rnf :: TaskStatus -> ()
NFData, [TaskStatus] -> Value
[TaskStatus] -> Encoding
TaskStatus -> Value
TaskStatus -> Encoding
(TaskStatus -> Value)
-> (TaskStatus -> Encoding)
-> ([TaskStatus] -> Value)
-> ([TaskStatus] -> Encoding)
-> ToJSON TaskStatus
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: TaskStatus -> Value
toJSON :: TaskStatus -> Value
$ctoEncoding :: TaskStatus -> Encoding
toEncoding :: TaskStatus -> Encoding
$ctoJSONList :: [TaskStatus] -> Value
toJSONList :: [TaskStatus] -> Value
$ctoEncodingList :: [TaskStatus] -> Encoding
toEncodingList :: [TaskStatus] -> Encoding
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
$cparseJSON :: Value -> Parser TaskStatus
parseJSON :: Value -> Parser TaskStatus
$cparseJSONList :: Value -> Parser [TaskStatus]
parseJSONList :: Value -> Parser [TaskStatus]
FromJSON)