1.0.2 • Published 6 years ago

@lifeomic/graphql-directive-retry v1.0.2

Weekly downloads
23
License
MIT
Repository
-
Last release
6 years ago

graphql-directive-retry

npm Greenkeeper badge Build Status Coverage Status

Instead of adding retry logic inside the resolver implementation, use this schema directive to add retry declaratively

Usage

const { retryDirective, retryDeclaration } = require('@lifeomic/graphql-directive-retry');
const { makeExecutableSchema } = require('graphql-tools');
const { graphql } = require('graphql');

const typeDefs = `
  ${retryDeclaration('retry')}

  type Query {
    flakyFunction(arg: String!): String! @retry(maxTimeout: 100)
  }
`;

Customizing timeout behavior

This directive is based on promise-retry and you can use the same configuration options.

Field Config

You can configure retry behavior on a per-field basis like this:

type Query {
  flakyFunction(arg: String!): String!
    @retry(retries: 1, minTimeout: 100, maxTimeout: 200, factor: 1.1)
}

Global Config

You can configure the default retry behavior for all resovlers with a retry directive by providing the configuration in the execution context. Here is an example:

const response = await graphql(
  yourSchema,
  yourQuery,
  rootObject,
  {
    ... yourContext
    retryDirectiveConfig: {
      retries: 0
    }
  },
  {}
);