8000 GitHub - scala-steward/gql: A functional GraphQL implementation for Scala. https://valdemargr.github.io/gql/
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

scala-steward/gql

 
 

Repository files navigation

gql Cats friendly

gql is a functional server and client GraphQL implementation for Scala.

It enables succintly exposing and consuming GraphQL APIs in a purely functional way.

  • Statically typed. Statically typed through and through.
  • Purely functional. Uses the simplest and most precise abstractions.
  • Extensible. Ability to add features on top of gql ranging from lightweight utility to spec-compliant schema transformations.
  • And so much more!

To learn more, check out the docs.

Installation

gql is available for Scala 2.13 and 3.3. The available modules are listed on the modules page.

Example

import gql.dsl.all._
import gql.ast._
import cats.effect._
import cats.implicits._

case class Human(name: String, friends: List[String])

def getFriend(name: String): IO[Human] = ???

implicit val human: Type[IO, Human] = tpe[IO, Human](
  "Human",
  "name" -> lift(h => h.name),
  "friends" -> eff(_.friends.traverse(getFriend))
)

Developing and using gql

gql features decriptive and precise error messages, to aid the developer in writing a correct implementation.

gql provides descriptive messages in case of query errors.

| query MyQuery {
|     test.,test
| >>>>>^^^^^^^ line:2, column:16, offset:41, character code:46
| }

And also when the schema has been defined incorrectly.

// Argument 'myArg' was defined in field 'myField' in type `MyType` but was not defined in interface `MyInterface`. at root.Query.myField
// Invalid field name '0hey', the field name must match /[_A-Za-z][_0-9A-Za-z]*/ at root.Query.0hey
632D

About

A functional GraphQL implementation for Scala. https://valdemargr.github.io/gql/

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Scala 97.1%
  • TypeScript 1.7%
  • Other 1.2%
0