{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE TypeSynonymInstances #-} module HaskellWorks.Error.Types.RenderedError ( RenderedError (..), ToRenderedError (..), ) where import Data.Aeson import HaskellWorks.Prelude data RenderedError = RenderedError { RenderedError -> Text error :: Text , RenderedError -> Value payload :: Value } deriving (RenderedError -> RenderedError -> Bool (RenderedError -> RenderedError -> Bool) -> (RenderedError -> RenderedError -> Bool) -> Eq RenderedError forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: RenderedError -> RenderedError -> Bool == :: RenderedError -> RenderedError -> Bool $c/= :: RenderedError -> RenderedError -> Bool /= :: RenderedError -> RenderedError -> Bool Eq, (forall x. RenderedError -> Rep RenderedError x) -> (forall x. Rep RenderedError x -> RenderedError) -> Generic RenderedError forall x. Rep RenderedError x -> RenderedError forall x. RenderedError -> Rep RenderedError x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cfrom :: forall x. RenderedError -> Rep RenderedError x from :: forall x. RenderedError -> Rep RenderedError x $cto :: forall x. Rep RenderedError x -> RenderedError to :: forall x. Rep RenderedError x -> RenderedError Generic, Int -> RenderedError -> ShowS [RenderedError] -> ShowS RenderedError -> String (Int -> RenderedError -> ShowS) -> (RenderedError -> String) -> ([RenderedError] -> ShowS) -> Show RenderedError forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> RenderedError -> ShowS showsPrec :: Int -> RenderedError -> ShowS $cshow :: RenderedError -> String show :: RenderedError -> String $cshowList :: [RenderedError] -> ShowS showList :: [RenderedError] -> ShowS Show) instance ToJSON RenderedError where toJSON :: RenderedError -> Value toJSON RenderedError e = [Pair] -> Value object [ Key "error" Key -> Text -> Pair forall v. ToJSON v => Key -> v -> Pair forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv .= RenderedError -> Text error RenderedError e , Key "payload" Key -> Value -> Pair forall v. ToJSON v => Key -> v -> Pair forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv .= RenderedError -> Value payload RenderedError e ] class ToRenderedError a where toRenderedError :: a -> RenderedError instance ToRenderedError RenderedError where toRenderedError :: RenderedError -> RenderedError toRenderedError = RenderedError -> RenderedError forall a. a -> a id