morpheus-graphql-app: Morpheus GraphQL App

[ graphql, library, mit, web ] [ Propose Tags ]

Build GraphQL APIs with your favourite functional language!


[Skip to Readme]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.17.0, 0.18.0, 0.19.0, 0.19.1, 0.19.2, 0.19.3, 0.20.0
Change log changelog.md
Dependencies aeson (>=1.4.4 && <3.0.0), base (>=4.7.0 && <5.0.0), bytestring (>=0.10.4 && <0.12.0), containers (>=0.4.2.1 && <0.7.0), hashable (>=1.0.0 && <2.0.0), megaparsec (>=7.0.0 && <10.0.0), morpheus-graphql-core (>=0.20.0 && <0.21.0), mtl (>=2.0.0 && <3.0.0), relude (>=0.3.0 && <2.0.0), scientific (>=0.3.6.2 && <0.4.0), template-haskell (>=2.0.0 && <3.0.0), text (>=1.2.3 && <1.3.0), th-lift-instances (>=0.1.1 && <0.3.0), transformers (>=0.3.0 && <0.6.0), unordered-containers (>=0.2.8 && <0.3.0), vector (>=0.12.0.1 && <0.13.0) [details]
License MIT
Copyright (c) 2019 Daviti Nalchevanidze
Author Daviti Nalchevanidze
Maintainer d.nalchevanidze@gmail.com
Category web, graphql
Home page https://morpheusgraphql.com
Bug tracker https://github.com/nalchevanidze/morpheus-graphql-app/issues
Source repo head: git clone https://github.com/nalchevanidze/morpheus-graphql-app
Uploaded by nalchevanidze at 2022-05-03T19:54:04Z
Distributions NixOS:0.20.0
Downloads 805 total (101 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2022-05-03 [all 1 reports]

Readme for morpheus-graphql-app-0.20.0

[back to package description]

Morpheus GraphQL App

provides utilities for creating executable GraphQL applications for servers. You can use it to create a schema-first GraphQL server with dynamic typings.

Build schema-first GraphQL App with dynamic typings

schema.gql
type Deity {
  name: String
  power: [String!]
}

type Query {
  deity(id: ID): Deity
}
App.hs
deityResolver :: Monad m => NamedResolverFunction QUERY e m
deityResolver arg =
  object
    [ ("name", pure "Morpheus"),
      ("power", pure $ list [enum "Shapeshifting"])
    ]

resolver :: Monad m => RootResolverValue e m
resolver =
  queryResolvers
    [ ( "Query", const $ object [("deity", ref "Deity" <$> getArgument "id")]),
      ("Deity", deityResolver)
    ]

api :: ByteString -> IO  ByteString
api query = do
  schema <- LBS.readFile "./schema.gql" >>= resultOr (fail . show) pure . parseSchema
  runApp (mkApp schema resolver) query