module Faktory.JobFailure ( JobFailure (..) ) where import Faktory.Prelude import Data.Aeson import Data.Time (UTCTime) data JobFailure = JobFailure { JobFailure -> Int jfRetryCount :: Int , JobFailure -> UTCTime jfFailedAt :: UTCTime , JobFailure -> Maybe UTCTime jfNextAt :: Maybe UTCTime , JobFailure -> Maybe Text jfErrorMessage :: Maybe Text , JobFailure -> Maybe Text jfErrorType :: Maybe Text , JobFailure -> Maybe [Text] jfBacktrace :: Maybe [Text] } deriving stock (Int -> JobFailure -> ShowS [JobFailure] -> ShowS JobFailure -> String (Int -> JobFailure -> ShowS) -> (JobFailure -> String) -> ([JobFailure] -> ShowS) -> Show JobFailure forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> JobFailure -> ShowS showsPrec :: Int -> JobFailure -> ShowS $cshow :: JobFailure -> String show :: JobFailure -> String $cshowList :: [JobFailure] -> ShowS showList :: [JobFailure] -> ShowS Show) instance FromJSON JobFailure where parseJSON :: Value -> Parser JobFailure parseJSON = String -> (Object -> Parser JobFailure) -> Value -> Parser JobFailure forall a. String -> (Object -> Parser a) -> Value -> Parser a withObject String "Failure" ((Object -> Parser JobFailure) -> Value -> Parser JobFailure) -> (Object -> Parser JobFailure) -> Value -> Parser JobFailure forall a b. (a -> b) -> a -> b $ \Object o -> Int -> UTCTime -> Maybe UTCTime -> Maybe Text -> Maybe Text -> Maybe [Text] -> JobFailure JobFailure (Int -> UTCTime -> Maybe UTCTime -> Maybe Text -> Maybe Text -> Maybe [Text] -> JobFailure) -> Parser Int -> Parser (UTCTime -> Maybe UTCTime -> Maybe Text -> Maybe Text -> Maybe [Text] -> JobFailure) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Object o Object -> Key -> Parser Int forall a. FromJSON a => Object -> Key -> Parser a .: Key "retry_count" Parser (UTCTime -> Maybe UTCTime -> Maybe Text -> Maybe Text -> Maybe [Text] -> JobFailure) -> Parser UTCTime -> Parser (Maybe UTCTime -> Maybe Text -> Maybe Text -> Maybe [Text] -> JobFailure) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object o Object -> Key -> Parser UTCTime forall a. FromJSON a => Object -> Key -> Parser a .: Key "failed_at" Parser (Maybe UTCTime -> Maybe Text -> Maybe Text -> Maybe [Text] -> JobFailure) -> Parser (Maybe UTCTime) -> Parser (Maybe Text -> Maybe Text -> Maybe [Text] -> JobFailure) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object o Object -> Key -> Parser (Maybe UTCTime) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "next_at" Parser (Maybe Text -> Maybe Text -> Maybe [Text] -> JobFailure) -> Parser (Maybe Text) -> Parser (Maybe Text -> Maybe [Text] -> JobFailure) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object o Object -> Key -> Parser (Maybe Text) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "error_message" Parser (Maybe Text -> Maybe [Text] -> JobFailure) -> Parser (Maybe Text) -> Parser (Maybe [Text] -> JobFailure) forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object o Object -> Key -> Parser (Maybe Text) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "error_type" Parser (Maybe [Text] -> JobFailure) -> Parser (Maybe [Text]) -> Parser JobFailure forall a b. Parser (a -> b) -> Parser a -> Parser b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Object o Object -> Key -> Parser (Maybe [Text]) forall a. FromJSON a => Object -> Key -> Parser (Maybe a) .:? Key "backtrace"