{-# LANGUAGE OverloadedStrings, NoMonomorphismRestriction, FlexibleContexts, MultiParamTypeClasses, ScopedTypeVariables, DeriveDataTypeable, DeriveGeneric #-}
module EZCouch.Model.Error where

import Prelude ()
import ClassyPrelude
import GHC.Generics
import Data.Aeson hiding (Error)

data Error = 
  Error {
    error :: Text, 
    reason :: Maybe Text, 
    stack :: Maybe [Text]
  } 
  deriving (Show, Eq, Generic)

instance FromJSON Error where
  parseJSON = withObject "Error" $ \o -> 
    Error <$> o .: "error" <*> o .:? "reason" <*> o .:? "stack"