Coder Social home page Coder Social logo

aeyaey / graphql-schemagenerator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from holm0563/graphql-schemagenerator

0.0 0.0 0.0 3.37 MB

Graph Ql Schema Generator - Use existing c# model to generate graph ql

License: MIT License

C# 99.46% PowerShell 0.54%

graphql-schemagenerator's Introduction

Schema Generator - GraphQL for .NET

This uses GraphQL for .NET and wraps it to easily generate a GraphQL schema based on C# models. The schema generator will automatically create a schema from existing C# models. This includes every response model, request model, and composed class in these models. This can save a lot of time with an existing SDK or API project that is adding GraphQL support.

Installation

*Todo

Configuration

Define your routes with the GraphRoute attribute:

/// <summary>
///     An example of the sdk that could be exposed. This is decorated with
///     attributes to self generate a graph schema. 
/// </summary>
public class StarWarsAttributeSchema
{
    private readonly StarWarsData _data = new StarWarsData();

    /// <summary>
    ///     Get the current hero.
    /// </summary>
    /// <remarks>
    ///     Example of graph ql attribute using the defaults.
    /// </remarks>
    /// <returns>Droid.</returns>
    [GraphRoute]
    public Droid Hero()
    {
        var item = _data.GetDroidByIdAsync("3").Result;

        return item;
    }
}

Example Usage

IServiceProvider provider = new MockServiceProvider(); //Resolves your classes
var schemaGenerator = new SchemaGenerator(provider);
//See the readme.md in the schema generator project for more details on what this is doing.
var schema = schemaGenerator.CreateSchema(typeof(StarWarsAttributeSchema));

//Standard GraphQL execution
var query = @"
                query HeroNameQuery {
                  hero {
                    name
                  }
                }
            ";
var exec = new DocumentExecuter(new AntlrDocumentBuilder(), new DocumentValidator());
var result = exec.ExecuteAsync(schema, null, query, null).Result;

Roadmap

Supported Data Types

  • Enums
  • Dictionaries
  • IEnumerable
  • DateTime, DateTimeOffset
  • Timespan
  • Byte Array
  • Key value pair

Supported Conversions

  • Mutations
  • Queries
  • Interfaces
  • Descriptions (via description attribute)
  • Descriptions (via summary text)
  • Enumerations
  • Input Objects
  • Mutations
  • Unions
  • Async execution
  • Methods converting to inner queries
  • Void return types are not supported, doesn't make sense per the graph spec.

graphql-schemagenerator's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.