packages feed

morpheus-graphql-0.1.0: test/Feature/Schema/API.hs

{-# LANGUAGE DeriveAnyClass    #-}
{-# LANGUAGE DeriveGeneric     #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeFamilies      #-}
{-# LANGUAGE TypeOperators     #-}

module Feature.Schema.API
  ( api
  ) where

import           Data.ByteString.Lazy.Char8 (ByteString)
import           Data.Morpheus              (interpreter)
import           Data.Morpheus.Kind         (KIND, OBJECT)
import           Data.Morpheus.Types        (GQLRootResolver (..), GQLType (..))
import           Data.Text                  (Text)
import qualified Feature.Schema.A2          as A2 (A (..))
import           GHC.Generics               (Generic)

type instance KIND A = OBJECT

data A = A
  { aText :: Text
  , aInt  :: Int
  } deriving (Generic, GQLType)

data Query = Query
  { a1 :: A
  , a2 :: A2.A
  } deriving (Generic)

rootResolver :: GQLRootResolver IO Query () ()
rootResolver =
  GQLRootResolver
    { queryResolver = return Query {a1 = A "" 0, a2 = A2.A 0}
    , mutationResolver = return ()
    , subscriptionResolver = return ()
    }

api :: ByteString -> IO ByteString
api = interpreter rootResolver