PureScript GraphQL is a GraphQL implementation written in PureScript. It features a powerful DSL that makes building GraphQL servers as typesafe as possible.
This is a complete rewrite of PureScript GraphQL. If you are looking for version 1 of PureScript GraphQL make sure to check out the 1.0.2 tag.
To follow the roadmap to version 2 check out the milestone
If you are new to PureScript GraphQL I highly recommend to follow the tutorial. If you know what you are doing you can simply install (Not in the package set yet, will be done as soon as beta is out)purescript-graphql
with spago.
spago install graphql
This code creates a simple schema with one query field.
The field takes one argument name
and returns a string.
module Main where
import Prelude
import Data.Argonaut (stringify)
import Data.Map as Map
import Effect (Effect)
import Effect.Console as Console
import GraphQL ((!>), (.>), (:>), (?>), graphql)
import GraphQL as GraphQL
main :: Effect Unit
main = do
result <- graphql schema """{ hello(name: "world") }""" Map.empty Nothing unit
Console.log $ stringify result -- {"data":{"hello":"world"}}
schema :: GraphQL.Schema Effect Unit
schema = GraphQL.Schema { query: queryType, mutation: Nothing }
queryType :: GraphQL.ObjectType (ReaderT String Effect) Unit
queryType =
GraphQL.objectType "Query"
:> "The root query type."
.> GraphQL.field "hello" GraphQL.string
?> GraphQL.arg @"name" GraphQL.string
:> "A simple field that returns a greeting."
!> (\{ name } _ -> pure $ "Hello, " <> name <> "!")