Skip to content

devnet-io/TypeGraph

Repository files navigation

!> Note: this library is under active development, breaking changes may occur

TypeGraph

TypeGraph generates GraphQL queries from decorated TypeScript classes, eliminating the need to write both queries to get data and interfaces to describe the results.

Getting Started

Install

npm install typegraph --save

Decorate your classes / entities

Using a class instead of a typescript interface allows access during runtime

import { Entity } from 'typegraph';

@Entity({one: "company", many: "companies"})
class Company {

    @Field()
    id: number;

    @Field()
    name: string;

    @Field()
    industry: string;
}

Getting the query

You can get the query as a string using the generateQuery function.

One

import { generateQuery, QueryType } from 'typegraph';

const queryOne: string = generateQuery(Company, QueryType.ONE);

Produces:

{ 
    company {
        id
        name
        industry
    }
}

Many

import { generateQuery, QueryType } from 'typegraph';

const queryMany: string = generateQuery(Company, QueryType.MANY);

Produces:

{
    companies {
        id
        name
        industry
    }
}

With Params

import { generateQuery, QueryType } from 'typegraph';

const queryOneWithProps: string = generateQuery(Company, QueryType.ONE, {name: "doge", industry: "dogs"});

Produces:

{
    company(name: "doge", industry: "dogs") {
        id
        name
        industry
    }
}

Upcoming improvements

  • Support for mutations
  • Support for params on sub fields
  • Support for GraphQL Variables
  • Connect components to data! See NEXT.md

About

Dynamically generate GraphQL queries from TypeScript decorators

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •