{-# LANGUAGE DeriveGeneric     #-}
{-# LANGUAGE OverloadedStrings #-}

module Data.Morpheus.Types.Response where

import           Data.Aeson                 (ToJSON (..), pairs, (.=))
import           Data.Morpheus.Types.Error  (JSONError (..))
import           Data.Morpheus.Types.JSType (JSType)
import           GHC.Generics               (Generic)

data GQLResponse
  = Data JSType
  | Errors [JSONError]
  deriving (Show, Generic)

instance ToJSON GQLResponse where
  toEncoding (Data _data)     = pairs $ "data" .= _data
  toEncoding (Errors _errors) = pairs $ "errors" .= _errors