packages feed

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

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

module Feature.Schema.API
  ( api
  ) where

import           Data.Morpheus       (interpreter)
import           Data.Morpheus.Kind  (OBJECT)
import           Data.Morpheus.Types (GQLRequest, GQLResponse, GQLRootResolver (..), GQLType (..), Undefined (..))
import           Data.Text           (Text)
import qualified Feature.Schema.A2   as A2 (A (..))
import           GHC.Generics        (Generic)

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

instance GQLType A where
  type KIND A = OBJECT

data Query (m :: * -> * ) = Query
  { a1 :: A
  , a2 :: A2.A
  } deriving (Generic, GQLType)

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

api :: GQLRequest -> IO GQLResponse
api = interpreter rootResolver