0.4.6 • Published 7 years ago

regql v0.4.6

Weekly downloads
5
License
MIT
Repository
github
Last release
7 years ago

Regql

version downloads MIT License

GraphQL Client in Pure ReasonML. Stupid simple, magic-free client backed by plain-old fetch. Inspired by reason-apollo.

RoadMap

In the near future these are the planned additional features:

  • integration with graphql_ppx
  • Cache queries/requests
  • Optimistic Updates

Install

yarn add regql

bsconfig

"bs-dependencies": [
  "reason-react",
  "bs-fetch",
  "bs-json",
  "regql"
]

Usage

Instantiate the client and pass it configuration:

// Gql.re
module Client = Regql.Create({
  let uri = "http://localhost:8000/graphql"
});

Create a query

let query = {|
    query getUser {
      name
    }
  |};

Define the response shape

type user = {name: string};
type data = {user: user};

Define Decoder for your response

let user = (json) =>
  Json.Decode.{
    name: json |> field("name", string),
  };

let data = (json) =>
  Json.Decode.{
    user: json |> field("user", user)
  };

Define Container configuration

module Container = {
  type shape = data;
  type variables; /* or some type `type variables = {"one": 1};` if used */
  let decoder = data;
};

Pass Container configuration to Gql.Client

module FetchUserName = Gql.Client(Container);

Use the FetchUserName Component

render: (_) =>
<FetchUserName query>
  ((response) => {
    switch response {
       | Loading => <div> (ReasonReact.stringToElement("Loading")) </div>
       | Failed(error) => <div> (ReasonReact.stringToElement(error)) </div>
       | Loaded(result) =><div> (ReasonReact.stringToElement(result.user.name)) </div>
  })
</FetchUserName>
0.5.0-beta.13

7 years ago

0.5.0-beta.12

7 years ago

0.5.0-beta.11

7 years ago

0.5.0-beta.10

7 years ago

0.5.0-beta.9

7 years ago

0.5.0-beta.8

7 years ago

0.5.0-beta.7

7 years ago

0.5.0-beta.6

7 years ago

0.5.0-beta.5

7 years ago

0.5.0-beta.4

7 years ago

0.5.0-beta.3

7 years ago

0.5.0-beta.2

7 years ago

0.5.0-beta.1

7 years ago

0.4.7-beta.5

8 years ago

0.4.7-beta.4

8 years ago

0.4.7-beta.3

8 years ago

0.4.7-beta.2

8 years ago

0.4.7-beta.1

8 years ago

0.4.7-beta

8 years ago

0.4.6

8 years ago

0.4.5

8 years ago

0.4.4

8 years ago

0.4.3

8 years ago

0.4.2

8 years ago

0.4.1

8 years ago

0.4.0

8 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.1

8 years ago

0.2.0

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago