go generate based graphql server library

Overview

gqlgen Continuous Integration Read the Docs GoDoc

gqlgen

What is gqlgen?

gqlgen is a Go library for building GraphQL servers without any fuss.

  • gqlgen is based on a Schema first approach — You get to Define your API using the GraphQL Schema Definition Language.
  • gqlgen prioritizes Type safety — You should never see map[string]interface{} here.
  • gqlgen enables Codegen — We generate the boring bits, so you can focus on building your app quickly.

Still not convinced enough to use gqlgen? Compare gqlgen with other Go graphql implementations

Getting Started

  • To install gqlgen run the command go get github.com/99designs/gqlgen in your project directory.
  • You could initialize a new project using the recommended folder structure by running this command go run github.com/99designs/gqlgen init.

You could find a more comprehensive guide to help you get started here.
We also have a couple of real-world examples that show how to GraphQL applications with gqlgen seamlessly, You can see these examples here or visit godoc.

Reporting Issues

If you think you've found a bug, or something isn't behaving the way you think it should, please raise an issue on GitHub.

Contributing

We welcome contributions, Read our Contribution Guidelines to learn more about contributing to gqlgen

Frequently asked questions

How do I prevent fetching child objects that might not be used?

When you have nested or recursive schema like this:

type User {
  id: ID!
  name: String!
  friends: [User!]!
}

You need to tell gqlgen that it should only fetch friends if the user requested it. There are two ways to do this;

  • Using Custom Models

Write a custom model that omits the friends field:

type User struct {
  ID int
  Name string
}

And reference the model in gqlgen.yml:

# gqlgen.yml
models:
  User:
    model: github.com/you/pkg/model.User # go import path to the User struct above
  • Using Explicit Resolvers

If you want to Keep using the generated model, mark the field as requiring a resolver explicitly in gqlgen.yml like this:

# gqlgen.yml
models:
  User:
    fields:
      friends:
        resolver: true # force a resolver to be generated

After doing either of the above and running generate we will need to provide a resolver for friends:

func (r *userResolver) Friends(ctx context.Context, obj *User) ([]*User, error) {
  // select * from user where friendid = obj.ID
  return friends,  nil
}

You can also use inline config with directives to achieve the same result

directive @goModel(model: String, models: [String!]) on OBJECT
    | INPUT_OBJECT
    | SCALAR
    | ENUM
    | INTERFACE
    | UNION

directive @goField(forceResolver: Boolean, name: String) on INPUT_FIELD_DEFINITION
    | FIELD_DEFINITION

type User @goModel(model: "github.com/you/pkg/model.User") {
    id: ID!         @goField(name: "todoId")
    friends: [User!]!   @goField(forceResolver: true)
}

Can I change the type of the ID from type String to Type Int?

Yes! You can by remapping it in config as seen below:

models:
  ID: # The GraphQL type ID is backed by
    model:
      - github.com/99designs/gqlgen/graphql.IntID # An go integer
      - github.com/99designs/gqlgen/graphql.ID # or a go string

This means gqlgen will be able to automatically bind to strings or ints for models you have written yourself, but the first model in this list is used as the default type and it will always be used when:

  • Generating models based on schema
  • As arguments in resolvers

There isn't any way around this, gqlgen has no way to know what you want in a given context.

Other Resources

Comments
  • Who's using gqlgen in production?

    Who's using gqlgen in production?

    We are preparing a blog post and would like to get a feel for who is currently using gqlgen?

    Might as well go first; 99designs has been running gqlgen for several months now.

    question accepted 
    opened by vektah 75
  • Is this project still maintained?

    Is this project still maintained?

    What happened?

    I recently used gqlgen to build a GraphQL API for https://crossplane.io, but I'm now a little worried that the project might be unmaintained. I notice no PRs have been merged for a little over 3 months, and there has not been a new release for almost a year. I maintain a large open source project myself so I know business priorities change and that sometimes things slow down for a while; mostly what I am looking for here is reassurance that there are still folks investing in this project and that it makes sense to continue relying on it to build GraphQL APIs.

    opened by negz 55
  • Make Input Schema optional

    Make Input Schema optional

    What happened?

    I have some minimal apps using gqlgen that need to update the User Model, updating the using

    But when regenerate gqlgen it should use pointers for the password where the password are not inputed from user and then causing (nil pointer)

    What did you expect?

    So when updating the User , the user can optionally input password or not.

    Minimal graphql.schema and models to reproduce

    type Mutation {
        updateUser(input: UpdateUser!): User!
    }
    
    input UpdateUser {
        id: ID!
        name: String!
        password: String
    }
    

    versions

    • gqlgen version? V.0.9.3
    • go version? 1.12.9
    • dep or go modules? gomod
    question stale 
    opened by mlazuardy-dyned 35
  • Input types: null vs unspecified

    Input types: null vs unspecified

    Expected Behaviour

    Per spec:

    If the value null was provided for an input object field, and the field’s type is not a non‐null type, an entry in the coerced unordered map is given the value null. In other words, there is a semantic difference between the explicitly provided value null versus having not provided a value.

    Actual Behavior

    Right now its not possible (as far as I know) to differentiate between null and not having provided a value.

    Minimal graphql.schema and models to reproduce

    input UpdateUserInput {
      id: ID!
      name: String
      age: Int
    }
    

    produces

    type UpdateUserInput struct {
    	ID   string  `json:"id"`
    	Name *string `json:"name"`
    	Age  *int    `json:"age"`
    }
    

    If the user now submits the input with only id and name, I don't know what to do with the age. Did the user want to clear his age (i.e. set it to null) or did he not want to update it (i.e. not specified)?

    opened by danilobuerger 34
  • Split generated stubs into multiple files

    Split generated stubs into multiple files

    can we generate go-code based on schema to multiple files and if the file is already exist, then just update the files ?

    may be like bellow :

    schema.graphql

    schema {
        query: MyQuery
        mutation: MyMutation
    }
    
    type MyQuery {
        todo(id: Int!): Todo
        lastTodo: Todo
        todos: [Todo!]!
    }
    
    type MyMutation {
        createTodo(todo: TodoInput!): Todo!
        updateTodo(id: Int!, changes: Map!): Todo
    }
    
    type Todo {
        id: Int!
        text: String!
        done: Boolean!
    }
    
    input TodoInput {
        text: String!
        done: Boolean
    }
    

    gqlgen.yml

    schema: schema/schema.graphql
    exec:
      filename: generated/generated.go
      package: generated
    model:
      filename: models/model.go
    #  multiple_files: true ## maybe we can add this config
    resolver:
      filename: resolvers/resolver.go
      package: resolvers
    #  multiple_files: true ## maybe we can add this config
      type: Resolver
    struct_tag: json
    

    generated files

    models/
         model.go
         todo.go
         todoInput.go
    resolvers/
         resolver.go
         queryResolver.go
         mutationResolver.go
         todoResolver.go
    

    it would be nice if we can work on specific file.

    Thank you.

    enhancement stale 
    opened by ariffebr 29
  • Apollo Federation MVP

    Apollo Federation MVP

    This PR is mostly to get some eyes on the current architecture and what can be improved/re-written.

    Once that looks good, I'll move on to adding unit/e2e tests

    Fixes https://github.com/99designs/gqlgen/issues/740

    opened by marwan-at-work 26
  • 0.17.14 generate getters for interfaces problem

    0.17.14 generate getters for interfaces problem

    What happened?

    When upgrading to 0.17.14 my code generation started to fail due to the new generation of getters for interfaces. It's due to interfaces returning other interfaces I think.

    What did you expect?

    Code generation to result in valid code

    Minimal graphql.schema and models to reproduce

    Reproduction repo: https://github.com/argoyle/gqlgen-implements

    versions

    • go run github.com/99designs/gqlgen version? 0.17.14
    • go version? 1.19
    opened by argoyle 24
  • go generate gives missing go sum entry for module errors

    go generate gives missing go sum entry for module errors

    What happened?

    running go generate ./... gives go package errors

    ../../../../../go/pkg/mod/github.com/99designs/[email protected]/cmd/gen.go:9:2: missing go.sum entry for module providing package github.com/urfave/cli/v2
    ../../../../../go/pkg/mod/github.com/99designs/[email protected]/internal/imports/prune.go:15:2: missing go.sum entry for module providing package golang.org/x/tools/go/ast/astutil
    ../../../../../go/pkg/mod/github.com/99designs/[email protected]/internal/code/packages.go:8:2: missing go.sum entry for module providing package golang.org/x/tools/go/packages
    ../../../../../go/pkg/mod/github.com/99designs/[email protected]/internal/imports/prune.go:16:2: missing go.sum entry for module providing package golang.org/x/tools/imports
    graph/resolver.go:3: running "go": exit status 1
    

    if i run go get on each of these dependencies the error goes away and i can generate files just fine, but they come back after 1-2 days. so its quite annoying to keep having to run these.

    I've spoken to a couple of people who used gqlgen before and none of them had any problems so I'm sure its not a super big deal. But just looking to get some help to get rid of these errors.

    What did you expect?

    go generate to generate the files without these errors

    Minimal graphql.schema and models to reproduce

    this happens with even the default generated schema

    versions

    • gqlgen version? v0.13.0
    • go version? go1.16beta1 darwin/arm64
    • dep or go modules? go modules
    opened by peter9207 24
  • Could not connect to websocket

    Could not connect to websocket

    Could not connect to websocket endpoint wss://127.0.0.1:4000/api/query. Please check if the endpoint url is correct.

    Im using mux.

    resolver.go

    var TicketSub struct {
    	sync.RWMutex
    	Subscribers map[string]chan *gqlapi.TicketStatusChangePayload
    }
    
    func (r *subscriptionRootResolver) TicketStatusChanged(ctx context.Context) (<-chan *gqlapi.TicketStatusChangePayload, error) {
    	user := &models.User{
    		UUID: "e70e78bb-9d08-405d-a0ed-266ec703de19",
    	}
    	events := make(chan *gqlapi.TicketStatusChangePayload, 1)
    
    	go func() {
    		<-ctx.Done()
    		TicketSub.Lock()
    		delete(TicketSub.Subscribers, user.UUID)
    		TicketSub.Unlock()
    	}()
    
    	TicketSub.Lock()
    	TicketSub.Subscribers[user.UUID] = events
    	TicketSub.Unlock()
    
    	return events, nil
    }
    
    func (r *queryRootResolver) SubscriptionTest(ctx context.Context) (err error) {
    	id := uuid.New().String()
    	notifyTicketStatusChange("e70e78bb-9d08-405d-a0ed-266ec703de19", id, fmt.Sprintf("Ticket (uuid=%s) status changed.", id))
    	return
    }
    

    main.go

    func main() {
    	ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
    	Start(ctx)
    
    	// Wait for interrupt signal to gracefully shutdown the server with
    	// a timeout of 10 seconds.
    	sigs := make(chan os.Signal, 1)
    	signal.Notify(sigs,
    		os.Kill,
    		os.Interrupt,
    		syscall.SIGHUP,
    		syscall.SIGINT,
    		syscall.SIGTERM,
    		syscall.SIGQUIT)
    	<-sigs
    
    	defer func() {
    		cancel()
    	}()
    
    }
    
    func Start(ctx context.Context) {
    	go start(ctx)
    }
    
    func start(ctx context.Context) {
    	cfg := gqlapi.Config{
    		Resolvers: &resolvers.Resolver{},
    		Directives: gqlapi.DirectiveRoot{
    			Auth:    directives.Auth,
    		},
    	}
    	r := mux.NewRouter()
    	r.HandleFunc("/", handler.Playground("GraphQL playground", "/api/query"))
    
    	upgrader := websocket.Upgrader{
    		CheckOrigin: func(r *http.Request) bool {
    			return true
    		},
    		EnableCompression: true,
    	}
    
    	options := []handler.Option{
    		handler.RecoverFunc(func(ctx context.Context, err interface{}) error {
    			// notify bug tracker...
    			return fmt.Errorf("Internel server error.")
    		}),
    		handler.WebsocketUpgrader(upgrader),
    	}
    
    	r.HandleFunc("/api/query", handler.GraphQL(
    		gqlapi.NewExecutableSchema(cfg),
    		options...,
    	))
    	srv := &http.Server{
    		Handler: r,              //
    		Addr:    "0.0.0.0:4000", //
    	}
    	srv.SetKeepAlivesEnabled(true)
    	log.Fatal(srv.ListenAndServeTLS("cert.pem", "key.pem"))
    }
    

    Screenshot from 2019-03-19 18 56 02

    I can push message via websocket tunnel as you can see on the attached screenshot, but it closed after about 10-15 seconds.

    v0.9.2 
    opened by mia0x75 24
  • Support for apollo batching

    Support for apollo batching

    It would be awesome if we could detect batch operations based on a header and then parse the incoming request as an array of operations or a single operation.

    enhancement transport 
    opened by macnibblet 24
  • use

    use "embed" in generated code

    I work in a codebase that uses gqlgen heavily for a large graphql monolith. There are 384k lines of code in the files generated by gqlgen. We check in all these files into git because it takes a long time to generate them (and because it's a lot simpler to work that way).

    This PR changes the generated files to use the embed feature of go to reduce the size of the generated files and reduce the chance of having to resolve PR conflicts.

    I think that the complexity of the change is fairly low and there is no down side to introducing it. I made sure it has reasonable test coverage. It should be backwards compatible and doesn't change any behaviour.

    I have:

    • [x] Added tests covering the bug / feature (see testing)
    • [n/a] Updated any relevant documentation (see docs)
    opened by vikstrous 23
  • how to limit the amount of the alias

    how to limit the amount of the alias

    What happened?

    I can't limit the amount of the alias. FixedComplexityLimit limits the complexity of the query.

    What did you expect?

    I want to limit the amount of the alias to prevent the batching attack. Let's try to explain by giving an example.

    query {
      productsByIds(productIds: "353573855") {
        active {
          id
          path
          title
      }
      productsByIds2: productsByIds(productIds: "353573855") {
        active {
          id
          path
          title
        }
      }
    
    

    The above query should give an error. However, the below should work. This is just an example I have more complex schemas that's why the complexity limit didn't work for me.

    query {
     productsByIds(productIds: "353573855") {
       active {
         id
         path
         title
     }
     products {
       active {
         id
         path
         title
       }
     }
    }
    

    Minimal graphql.schema and models to reproduce

    versions

    • go run github.com/99designs/gqlgen version v0.17.22
    • go version 1.19
    opened by frkntplglu 0
  • Federation does not honor extend on `type Query` when introspecting

    Federation does not honor extend on `type Query` when introspecting

    What happened?

    After running generate and running the service, I use introspection (rover graph introspect http://localhost:8888/query) to generate a schema.gql (SDL). The output for type Query{} does not carry over the extend prefix from the schema. My Apollo federated server will not resolve queries to my subgraph unless the Query type is extended. Is this a bug or is there an alternate way to generate a Federated SDL?

    What did you expect?

    Introspected SDL should contain extend type Query { instead of type Query {

    Minimal graphql.schema and models to reproduce

    type CheckIssue {id: Int}
    
    extend type Query {
        issue: CheckIssue!
    }
    

    versions

    • go run github.com/99designs/gqlgen version v0.17.22
    • go version 1.19.4 darwin/arm64
    opened by roycamp 0
  • Non-convenient go enum value

    Non-convenient go enum value

    What happened?

    I tried to generate enum, but one value after generation seems non-convenient :)

    Interesting that it only occurred with SLACK value. I've used bunch of other names and it's fine. I've did several tests and seems like problem in SLA inside of SLACK. It processes it like abbreviation :)

    What did you expect?

    I'm expecting PlatformIDSlack instead of PlatformIDSLACk.

    Minimal graphql.schema and models to reproduce

    Schema:

    enum PlatformID {
      ASANA
      SLACK
    }
    
    type Query {
      myUser(email: String!): User!
    }
    
    type User {
      id: String!
      email: String!
    }
    

    Generated models:

    type PlatformID string
    
    const (
    	PlatformIDAsana PlatformID = "ASANA"
    	PlatformIDSLACk PlatformID = "SLACK"
    )
    
    var AllPlatformID = []PlatformID{
    	PlatformIDAsana,
    	PlatformIDSLACk,
    }
    

    gclgen.yml:

    # Where are all the schema files located? globs are supported eg  src/**/*.graphqls
    schema:
      - graph/*.graphqls
    
    # Where should the generated server code go?
    exec:
      filename: graph/generated.go
      package: graph
    
    # Uncomment to enable federation
    # federation:
    #   filename: graph/federation.go
    #   package: graph
    
    # Where should any generated models go?
    model:
      filename: graph/model/models_gen.go
      package: model
    
    # Where should the resolver implementations go?
    resolver:
      layout: follow-schema
      dir: graph
      package: graph
    
    # Optional: turn on use ` + "`" + `gqlgen:"fieldName"` + "`" + ` tags in your models
    # struct_tag: json
    
    # Optional: turn on to use []Thing instead of []*Thing
    # omit_slice_element_pointers: false
    
    # Optional: turn off to make struct-type struct fields not use pointers
    # e.g. type Thing struct { FieldA OtherThing } instead of { FieldA *OtherThing }
    # struct_fields_always_pointers: true
    
    # Optional: turn off to make resolvers return values instead of pointers for structs
    # resolvers_always_return_pointers: true
    
    # Optional: set to speed up generation time by not performing a final validation pass.
    # skip_validation: true
    
    # gqlgen will search for any type names in the schema in these go packages
    # if they match it will use them, otherwise it will generate them.
    autobind:
    #  - "github.com/bynov/test-graphql/graph/model"
    
    # This section declares type mapping between the GraphQL and go type systems
    #
    # The first line in each type will be used as defaults for resolver arguments and
    # modelgen, the others will be allowed when binding to fields. Configure them to
    # your liking
    models:
      ID:
        model:
          - github.com/99designs/gqlgen/graphql.ID
          - github.com/99designs/gqlgen/graphql.Int
          - github.com/99designs/gqlgen/graphql.Int64
          - github.com/99designs/gqlgen/graphql.Int32
      Int:
        model:
          - github.com/99designs/gqlgen/graphql.Int
          - github.com/99designs/gqlgen/graphql.Int64
          - github.com/99designs/gqlgen/graphql.Int32
    
    

    versions

    • go run github.com/99designs/gqlgen version v0.17.22
    • go version go1.19.4 darwin/amd64
    opened by bynov 0
  • WithStack not declared by package errors

    WithStack not declared by package errors

    What happened?

    I generated models & resolvers and implemented several resolver's methods. In these methods I used errors.WithStack(err) from github.com/pkg/errors package.

    When I run generate one more time, it automatically replaces github.com/pkg/errors with errors and after that complaining that method not declared.

    What did you expect?

    I expect that it won't change import for github.com/pkg/errors package.

    Minimal graphql.schema and models to reproduce

    Schema:

    type Query {
      myUser(email: String!): User!
    }
    
    type User {
      id: String!
      email: String!
    }
    

    Resolvers with implementation

    package graph
    
    // This file will be automatically regenerated based on the schema, any resolver implementations
    // will be copied through when generating and any unknown code will be moved to the end.
    // Code generated by github.com/99designs/gqlgen version v0.17.22
    
    import (
    	"context"
    	"github.com/pkg/errors"
    
    	"github.com/bynov/test-graphql/graph/model"
    )
    
    // MyUser is the resolver for the myUser field.
    func (r *queryResolver) MyUser(ctx context.Context, email string) (*model.User, error) {
    	if email == "1" {
    		return nil, errors.WithStack(errors.New("test"))
    	}
    
    	return &model.User{
    		ID:    "1",
    		Email: email,
    	}, nil
    }
    
    // Query returns QueryResolver implementation.
    func (r *Resolver) Query() QueryResolver { return &queryResolver{r} }
    
    type queryResolver struct{ *Resolver }
    

    gclgen.yml

    # Where are all the schema files located? globs are supported eg  src/**/*.graphqls
    schema:
      - graph/*.graphqls
    
    # Where should the generated server code go?
    exec:
      filename: graph/generated.go
      package: graph
    
    # Uncomment to enable federation
    # federation:
    #   filename: graph/federation.go
    #   package: graph
    
    # Where should any generated models go?
    model:
      filename: graph/model/models_gen.go
      package: model
    
    # Where should the resolver implementations go?
    resolver:
      layout: follow-schema
      dir: graph
      package: graph
    
    # Optional: turn on use ` + "`" + `gqlgen:"fieldName"` + "`" + ` tags in your models
    # struct_tag: json
    
    # Optional: turn on to use []Thing instead of []*Thing
    # omit_slice_element_pointers: false
    
    # Optional: turn off to make struct-type struct fields not use pointers
    # e.g. type Thing struct { FieldA OtherThing } instead of { FieldA *OtherThing }
    # struct_fields_always_pointers: true
    
    # Optional: turn off to make resolvers return values instead of pointers for structs
    # resolvers_always_return_pointers: true
    
    # Optional: set to speed up generation time by not performing a final validation pass.
    # skip_validation: true
    
    # gqlgen will search for any type names in the schema in these go packages
    # if they match it will use them, otherwise it will generate them.
    autobind:
    #  - "github.com/bynov/test-graphql/graph/model"
    
    # This section declares type mapping between the GraphQL and go type systems
    #
    # The first line in each type will be used as defaults for resolver arguments and
    # modelgen, the others will be allowed when binding to fields. Configure them to
    # your liking
    models:
      ID:
        model:
          - github.com/99designs/gqlgen/graphql.ID
          - github.com/99designs/gqlgen/graphql.Int
          - github.com/99designs/gqlgen/graphql.Int64
          - github.com/99designs/gqlgen/graphql.Int32
      Int:
        model:
          - github.com/99designs/gqlgen/graphql.Int
          - github.com/99designs/gqlgen/graphql.Int64
          - github.com/99designs/gqlgen/graphql.Int32
    

    Adding new type:

    type NewUser {
      id: String!
    }
    

    Run generate go run github.com/99designs/gqlgen generate and got error: validation failed: packages.Load: /Users/bynov/go/src/github.com/bynov/test-graphql/graph/schema.resolvers.go:17:22: WithStack not declared by package errors

    versions

    • go run github.com/99designs/gqlgen version v0.17.22
    • go version go1.19.4 darwin/amd64
    opened by bynov 0
  • gqlgen only return 200 error

    gqlgen only return 200 error

    I want to return Http status code errors(400,500) in gqlgen Graphql Query

    I tried

    "github.com/vektah/gqlparser/v2/gqlerror"
    
    err := gqlerror.Error{
    		Message: "Invalid Data",
    		Extensions: map[string]interface{}{
    			"code": 400,
    		},
    	}
    

    this method.But its return 200 APi response with this error body.

    How to change this 200 error to 400 error in GQL API?

    opened by meghavinam 0
  • fix #2485 remote named basics should not need scalar

    fix #2485 remote named basics should not need scalar

    Fixes #2485

    Running go generate when remote named basics (string, int, boolean, float) are used in go struct will display an error message saying <type> is incompatible with <named_type>. We then need to create a scalar with its related MarshalFunc and UnmarshalFunc to remove the error message. This will lead to many copy-paste of the same MarshalFunc and UnmarshalFunc with only the type being changed.

    I have:

    • [x] Added tests covering the bug / feature (see testing)
    • [ ] Updated any relevant documentation (see docs)
    opened by mstephano 2
Releases(v0.17.22)
  • v0.17.22(Dec 8, 2022)

    What's Changed

    • Implicit external check by @jclyons52 in https://github.com/99designs/gqlgen/pull/2449
    • Ability to return multiple errors from resolvers raise than add it to stack. by @atzedus in https://github.com/99designs/gqlgen/pull/2454
    • graphql.Error is not deprecated anymore by @atzedus in https://github.com/99designs/gqlgen/pull/2455

    New Contributors

    • @jclyons52 made their first contribution in https://github.com/99designs/gqlgen/pull/2449
    • @atzedus made their first contribution in https://github.com/99designs/gqlgen/pull/2454

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.21...v0.17.22

    Source code(tar.gz)
    Source code(zip)
  • v0.17.21(Dec 3, 2022)

    What's Changed

    • Update module mitchellh/mapstructure to 1.5.0 by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2111
    • Bump jsdom and jest in /integration by @dependabot in https://github.com/99designs/gqlgen/pull/2388
    • Add global typescript in CI integration check by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2390
    • Bump got and @graphql-codegen/cli in /integration by @dependabot in https://github.com/99designs/gqlgen/pull/2389
    • Update README.md by @rentiansheng in https://github.com/99designs/gqlgen/pull/2391
    • Add json.Number support to UnmarshalString by @Desuuuu in https://github.com/99designs/gqlgen/pull/2396
    • optional return pointers in unmarshalInput by @LuciferInLove in https://github.com/99designs/gqlgen/pull/2397
    • Fix for #1274. by @chaitanyamaili in https://github.com/99designs/gqlgen/pull/2411
    • Add resolver commit by @voslartomas in https://github.com/99designs/gqlgen/pull/2434
    • Check if go.mod exists while init by @soeti in https://github.com/99designs/gqlgen/pull/2432
    • docs : embedding schema in generated code by @schafle in https://github.com/99designs/gqlgen/pull/2351
    • Bump minimatch from 3.0.4 to 3.1.2 in /integration by @dependabot in https://github.com/99designs/gqlgen/pull/2435
    • Bump decode-uri-component from 0.2.0 to 0.2.2 in /integration by @dependabot in https://github.com/99designs/gqlgen/pull/2445
    • fix: safe http error response by @koniuszy in https://github.com/99designs/gqlgen/pull/2438
    • use goField directive for getters generation by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2447

    New Contributors

    • @rentiansheng made their first contribution in https://github.com/99designs/gqlgen/pull/2391
    • @LuciferInLove made their first contribution in https://github.com/99designs/gqlgen/pull/2397
    • @chaitanyamaili made their first contribution in https://github.com/99designs/gqlgen/pull/2411
    • @voslartomas made their first contribution in https://github.com/99designs/gqlgen/pull/2434
    • @soeti made their first contribution in https://github.com/99designs/gqlgen/pull/2432
    • @koniuszy made their first contribution in https://github.com/99designs/gqlgen/pull/2438

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.20...v0.17.21

    Source code(tar.gz)
    Source code(zip)
  • v0.17.20(Sep 19, 2022)

    What's Changed

    • Fix field merging behavior for fragments on interfaces by @kxfang in https://github.com/99designs/gqlgen/pull/2380
    • Update diagram in documentation by @bcspragu in https://github.com/99designs/gqlgen/pull/2381
    • Update go-colorable and x/tools. by @tjni in https://github.com/99designs/gqlgen/pull/2382

    New Contributors

    • @kxfang made their first contribution in https://github.com/99designs/gqlgen/pull/2380
    • @bcspragu made their first contribution in https://github.com/99designs/gqlgen/pull/2381
    • @tjni made their first contribution in https://github.com/99designs/gqlgen/pull/2382

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.19...v0.17.20

    Source code(tar.gz)
    Source code(zip)
  • v0.17.19(Sep 15, 2022)

    What's Changed

    • Update the @tag and @key directives to be valid with the Federation v2 spec by @shawnhugginsjr in https://github.com/99designs/gqlgen/pull/2371
    • testfix: make apollo federated tracer test more consistent by @roeest in https://github.com/99designs/gqlgen/pull/2374
    • Update graphiql to 2.0.7 by @devalecs in https://github.com/99designs/gqlgen/pull/2375

    New Contributors

    • @shawnhugginsjr made their first contribution in https://github.com/99designs/gqlgen/pull/2371
    • @devalecs made their first contribution in https://github.com/99designs/gqlgen/pull/2375

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.17...v0.17.19

    Source code(tar.gz)
    Source code(zip)
  • v0.17.18(Sep 15, 2022)

    What's Changed

    • Update the @tag and @key directives to be valid with the Federation v2 spec by @shawnhugginsjr in https://github.com/99designs/gqlgen/pull/2371
    • testfix: make apollo federated tracer test more consistent by @roeest in https://github.com/99designs/gqlgen/pull/2374
    • Update graphiql to 2.0.7 by @devalecs in https://github.com/99designs/gqlgen/pull/2375

    New Contributors

    • @shawnhugginsjr made their first contribution in https://github.com/99designs/gqlgen/pull/2371
    • @devalecs made their first contribution in https://github.com/99designs/gqlgen/pull/2375

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.17...v0.17.18

    Source code(tar.gz)
    Source code(zip)
  • v0.17.17(Sep 13, 2022)

    What's Changed

    • Add omit_getters config option by @neptoess in https://github.com/99designs/gqlgen/pull/2348
    • Add subscriptions.md recipe to docs by @Unkn0wnCat in https://github.com/99designs/gqlgen/pull/2346
    • feat: make Playground HTML content compatible with UTF-8 charset by @nekomeowww in https://github.com/99designs/gqlgen/pull/2355
    • Update gqlparser to v2.5.1 by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2363
    • fix: apollo federation tracer was race prone by @roeest in https://github.com/99designs/gqlgen/pull/2366
    • nil check error before type assertion follow-up from #2341 by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2368

    New Contributors

    • @Unkn0wnCat made their first contribution in https://github.com/99designs/gqlgen/pull/2346
    • @nekomeowww made their first contribution in https://github.com/99designs/gqlgen/pull/2355
    • @roeest made their first contribution in https://github.com/99designs/gqlgen/pull/2366

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.16...v0.17.17

    Source code(tar.gz)
    Source code(zip)
  • v0.17.16(Aug 26, 2022)

    What's Changed

    • Update yaml to v3 by @CoreFloDev in https://github.com/99designs/gqlgen/pull/2339
    • feat: update Graphiql to version 2 by @robertmarsal in https://github.com/99designs/gqlgen/pull/2340
    • Update gqlparser to v2.5.0 by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2341

    New Contributors

    • @CoreFloDev made their first contribution in https://github.com/99designs/gqlgen/pull/2339

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.15...v0.17.16

    Source code(tar.gz)
    Source code(zip)
  • v0.17.15(Aug 23, 2022)

    What's Changed

    • Correct boolean logic in name collision patch by @dcarbone in https://github.com/99designs/gqlgen/pull/2330
    • Fix Interface Slice Getter Generation by @neptoess in https://github.com/99designs/gqlgen/pull/2332
    • Name collision markdown formatting fixes by @dcarbone in https://github.com/99designs/gqlgen/pull/2335

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.14...v0.17.15

    Source code(tar.gz)
    Source code(zip)
  • v0.17.14(Aug 18, 2022)

    What's Changed

    • Add support for KeepAlive message in websocket client by @alexvelea in https://github.com/99designs/gqlgen/pull/2293
    • #2298: fix gqlgen extracting module name from comment line by @mobiletoly in https://github.com/99designs/gqlgen/pull/2299
    • Update gqlparser to v2.4.7 by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2300
    • Add hackernews graphql api tutorial to other resources by @Glyphack in https://github.com/99designs/gqlgen/pull/2305
    • Generate getters for interface fields by @neptoess in https://github.com/99designs/gqlgen/pull/2314
    • Leverage (*Imports).LookupType when generating interface field getters by @neptoess in https://github.com/99designs/gqlgen/pull/2315
    • Include docstrings on interface getters by @neptoess in https://github.com/99designs/gqlgen/pull/2317
    • Avoid GraphQL to Go Naming Collision with "ToGoModelName" func by @dcarbone in https://github.com/99designs/gqlgen/pull/2322
    • More descriptive not implemented stubs by @lintaba in https://github.com/99designs/gqlgen/pull/2328

    New Contributors

    • @alexvelea made their first contribution in https://github.com/99designs/gqlgen/pull/2293
    • @mobiletoly made their first contribution in https://github.com/99designs/gqlgen/pull/2299
    • @Glyphack made their first contribution in https://github.com/99designs/gqlgen/pull/2305
    • @neptoess made their first contribution in https://github.com/99designs/gqlgen/pull/2314
    • @dcarbone made their first contribution in https://github.com/99designs/gqlgen/pull/2322
    • @lintaba made their first contribution in https://github.com/99designs/gqlgen/pull/2328

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.13...v0.17.14

    Source code(tar.gz)
    Source code(zip)
  • v0.17.13(Jul 15, 2022)

    What's Changed

    • updated WebSocket InitFunc recipe for issue #2243 by @SebLKMa in https://github.com/99designs/gqlgen/pull/2275
    • fix: return the original error by @giautm in https://github.com/99designs/gqlgen/pull/2288
    • support named interface to Field.CallArgs by @vvakame in https://github.com/99designs/gqlgen/pull/2289
    • Hide github.com/matryer/moq dependency in tools.go from importers by @danielwhite in https://github.com/99designs/gqlgen/pull/2287

    New Contributors

    • @SebLKMa made their first contribution in https://github.com/99designs/gqlgen/pull/2275
    • @danielwhite made their first contribution in https://github.com/99designs/gqlgen/pull/2287

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.12...v0.17.13

    Source code(tar.gz)
    Source code(zip)
  • v0.17.12(Jul 5, 2022)

    What's Changed

    • Make GET.Do() use ParseQuery() instead of URL.Query() by @ameyarao98 in https://github.com/99designs/gqlgen/pull/2269
    • Replace use of strings.Title with cases.Title by @tmc in https://github.com/99designs/gqlgen/pull/2268
    • Fix CreateTodo by @sj14 in https://github.com/99designs/gqlgen/pull/2256

    New Contributors

    • @ameyarao98 made their first contribution in https://github.com/99designs/gqlgen/pull/2269
    • @sj14 made their first contribution in https://github.com/99designs/gqlgen/pull/2256

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.11...v0.17.12

    Source code(tar.gz)
    Source code(zip)
  • v0.17.11(Jul 3, 2022)

    What's Changed

    • Replace deprecated ioutil pkg with os & io by @abhinavnair in https://github.com/99designs/gqlgen/pull/2254
    • Fix PR links in CHANGELOG.md by @skaji in https://github.com/99designs/gqlgen/pull/2257
    • Use the go:embed API to lookup templates by @clayne11 in https://github.com/99designs/gqlgen/pull/2262
    • Make uploads content seekable by @Desuuuu in https://github.com/99designs/gqlgen/pull/2247
    • gqlgen: Add resolver comment generation and preservation by @tmc in https://github.com/99designs/gqlgen/pull/2263
    • codegen: fix the run order of resolvers by @giautm in https://github.com/99designs/gqlgen/pull/2267
    • github: Fix CI pipelines by @tmc in https://github.com/99designs/gqlgen/pull/2266
    • Update gqlparser to v2.4.6 by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2270

    New Contributors

    • @abhinavnair made their first contribution in https://github.com/99designs/gqlgen/pull/2254
    • @clayne11 made their first contribution in https://github.com/99designs/gqlgen/pull/2262

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.10...v0.17.11

    Source code(tar.gz)
    Source code(zip)
  • v0.17.10(Jun 13, 2022)

    What's Changed

    • fix: chat example frontend race condition by @MoofMonkey in https://github.com/99designs/gqlgen/pull/2219
    • Update dataloaders.MD by @mimol91 in https://github.com/99designs/gqlgen/pull/2221
    • Respect options in WebsocketOnce by @crossworth in https://github.com/99designs/gqlgen/pull/2223
    • Config option to only make cyclical struct fields pointers by @ianling in https://github.com/99designs/gqlgen/pull/2174
    • Config option to make resolvers return values instead of pointers by @ianling in https://github.com/99designs/gqlgen/pull/2175
    • fix #1876: Optional Any type should allow nil values by @vediatoni in https://github.com/99designs/gqlgen/pull/2231
    • fix: #2234 Response.Errors in DispatchError function is not PresentedError by @oikyn in https://github.com/99designs/gqlgen/pull/2235
    • Use exact capitalization from field names overridden in config by @ianling in https://github.com/99designs/gqlgen/pull/2237
    • update gqlparser to v2.4.5 by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2239

    New Contributors

    • @mimol91 made their first contribution in https://github.com/99designs/gqlgen/pull/2221
    • @crossworth made their first contribution in https://github.com/99designs/gqlgen/pull/2223
    • @ianling made their first contribution in https://github.com/99designs/gqlgen/pull/2174
    • @vediatoni made their first contribution in https://github.com/99designs/gqlgen/pull/2231
    • @oikyn made their first contribution in https://github.com/99designs/gqlgen/pull/2235

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.9...v0.17.10

    Source code(tar.gz)
    Source code(zip)
  • v0.17.9(May 26, 2022)

    What's Changed

    • Check only direct dependencies by @ubiuser in https://github.com/99designs/gqlgen/pull/2205
    • fix #2204 - don't try to embed builtin sources by @vikstrous in https://github.com/99designs/gqlgen/pull/2214
    • fix: prevent goroutine leak and CPU spinning at websocket transport by @MoofMonkey in https://github.com/99designs/gqlgen/pull/2209
    • Update gqlparser by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2216

    New Contributors

    • @MoofMonkey made their first contribution in https://github.com/99designs/gqlgen/pull/2209

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.8...v0.17.9

    Source code(tar.gz)
    Source code(zip)
  • v0.17.8(May 25, 2022)

    What's Changed

    • This works on Windows too! by @frederikhors in https://github.com/99designs/gqlgen/pull/2197
    • Run CI tests on windows by @mtibben in https://github.com/99designs/gqlgen/pull/2199
    • Add security workflow with nancy by @ubiuser in https://github.com/99designs/gqlgen/pull/2202

    New Contributors

    • @ubiuser made their first contribution in https://github.com/99designs/gqlgen/pull/2202

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.7...v0.17.8

    Source code(tar.gz)
    Source code(zip)
  • v0.17.7(May 24, 2022)

    What's Changed

    • fix #2190 - don't use backslash for "embed" paths on windows by @vikstrous in https://github.com/99designs/gqlgen/pull/2191
    • Fix misprint by @frederikhors in https://github.com/99designs/gqlgen/pull/2187
    • Update module dependencies by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2192

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.6...v0.17.7

    Source code(tar.gz)
    Source code(zip)
  • v0.17.6(May 23, 2022)

    What's Changed

    • Use MultipartReader to parse file uploads by @emersion in https://github.com/99designs/gqlgen/pull/2135
    • Update package.json by @b5710546232 in https://github.com/99designs/gqlgen/pull/2138
    • Update getting-started.md by @alan890104 in https://github.com/99designs/gqlgen/pull/2140
    • Allow absolute URLs to the GraphQL playground by @marcusirgens in https://github.com/99designs/gqlgen/pull/2142
    • use "embed" in generated code by @vikstrous in https://github.com/99designs/gqlgen/pull/2119
    • Fix invalid relative playground subscription URL by @marcusirgens in https://github.com/99designs/gqlgen/pull/2148
    • Add argument to WebsocketErrorFunc by @foreverest in https://github.com/99designs/gqlgen/pull/2124
    • Fix docs bug in field collection by @V1def in https://github.com/99designs/gqlgen/pull/2141
    • go: update gqlparser to latest by @a8m in https://github.com/99designs/gqlgen/pull/2149
    • fix: prevents goroutine leak at websocket transport #2167 by @fletcherist in https://github.com/99designs/gqlgen/pull/2168
    • Fix getting-started docs missing fields resolver config & Todo struct UserID field by @a70537952 in https://github.com/99designs/gqlgen/pull/2157
    • Bump dset from 3.1.1 to 3.1.2 in /integration by @dependabot in https://github.com/99designs/gqlgen/pull/2176
    • Correct identation by @ndthanhdev in https://github.com/99designs/gqlgen/pull/2182
    • Improve operation error handling by @Desuuuu in https://github.com/99designs/gqlgen/pull/2184

    New Contributors

    • @emersion made their first contribution in https://github.com/99designs/gqlgen/pull/2135
    • @b5710546232 made their first contribution in https://github.com/99designs/gqlgen/pull/2138
    • @alan890104 made their first contribution in https://github.com/99designs/gqlgen/pull/2140
    • @marcusirgens made their first contribution in https://github.com/99designs/gqlgen/pull/2142
    • @V1def made their first contribution in https://github.com/99designs/gqlgen/pull/2141
    • @fletcherist made their first contribution in https://github.com/99designs/gqlgen/pull/2168
    • @a70537952 made their first contribution in https://github.com/99designs/gqlgen/pull/2157
    • @ndthanhdev made their first contribution in https://github.com/99designs/gqlgen/pull/2182
    • @Desuuuu made their first contribution in https://github.com/99designs/gqlgen/pull/2184

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.5...v0.17.6

    Source code(tar.gz)
    Source code(zip)
  • v0.17.5(Apr 29, 2022)

    What's Changed

    • Docs: Update federation.md by @lleadbet in https://github.com/99designs/gqlgen/pull/2129
    • Ignore protobuf files in coverage by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2133
    • update instructions to specify package of Role by @prankymat in https://github.com/99designs/gqlgen/pull/2130
    • feat: added graphql.UnmarshalInputFromContext by @giautm in https://github.com/99designs/gqlgen/pull/2131
    • Feature: Add FTV1 Support via Handler by @lleadbet in https://github.com/99designs/gqlgen/pull/2132

    New Contributors

    • @prankymat made their first contribution in https://github.com/99designs/gqlgen/pull/2130
    • @giautm made their first contribution in https://github.com/99designs/gqlgen/pull/2131

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.4...v0.17.5

    Source code(tar.gz)
    Source code(zip)
  • v0.17.4(Apr 25, 2022)

    What's Changed

    • update modules except mapstructure by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2118
    • shorten some generated code by @vikstrous in https://github.com/99designs/gqlgen/pull/2120
    • Feature: Adds Federation 2 Support by @lleadbet in https://github.com/99designs/gqlgen/pull/2115

    New Contributors

    • @lleadbet made their first contribution in https://github.com/99designs/gqlgen/pull/2115

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.3...v0.17.4

    Source code(tar.gz)
    Source code(zip)
  • v0.17.3(Apr 20, 2022)

    What's Changed

    • codegen: allow binding methods with optional variadic arguments by @a8m in https://github.com/99designs/gqlgen/pull/2066
    • graphql: add FieldContext.Child field function and enable it in codegen by @a8m in https://github.com/99designs/gqlgen/pull/2062
    • Bump Playground version by @qhenkart in https://github.com/99designs/gqlgen/pull/2078
    • Add instructions for enabling autobinding by @jpwilliams in https://github.com/99designs/gqlgen/pull/2079
    • Add AllowedMethods field to transport.Options by @morikuni in https://github.com/99designs/gqlgen/pull/2080
    • Bump minimist from 1.2.5 to 1.2.6 in /integration by @dependabot in https://github.com/99designs/gqlgen/pull/2085
    • Fix misprint by @frederikhors in https://github.com/99designs/gqlgen/pull/2102
    • Update golangci-lint action by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2103
    • Use Github API to update the docs by @frankywahl in https://github.com/99designs/gqlgen/pull/2101
    • Fix websocket subscriptions to not double complete by @telemenar in https://github.com/99designs/gqlgen/pull/2095
    • Change the error message to be consumer targeted by @telemenar in https://github.com/99designs/gqlgen/pull/2096
    • Fix the ability of websockets to get errors by @telemenar in https://github.com/99designs/gqlgen/pull/2097
    • Update gqlparser by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2109

    New Contributors

    • @jpwilliams made their first contribution in https://github.com/99designs/gqlgen/pull/2079
    • @morikuni made their first contribution in https://github.com/99designs/gqlgen/pull/2080
    • @telemenar made their first contribution in https://github.com/99designs/gqlgen/pull/2095

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.2...v0.17.3

    Source code(tar.gz)
    Source code(zip)
  • v0.17.2(Mar 21, 2022)

    What's Changed

    • fixed modelgen test schema by @Code-Hex in https://github.com/99designs/gqlgen/pull/2032
    • Fix #1961 for Go 1.18 by @StevenACoffman in https://github.com/99designs/gqlgen/pull/2052

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.1...v0.17.2

    Source code(tar.gz)
    Source code(zip)
  • v0.17.1(Mar 2, 2022)

    What's Changed

    • fixed model gen for multiple implemented type by @Code-Hex in https://github.com/99designs/gqlgen/pull/2021
    • Update golangci-lint and fix resource leak by @mtibben in https://github.com/99designs/gqlgen/pull/2024

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.17.0...v0.17.1

    Source code(tar.gz)
    Source code(zip)
  • v0.17.0(Mar 2, 2022)

    What's Changed

    • Fix #1777 by updating version constant and adding release checklist by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1848
    • Update quickstart by @ipfans in https://github.com/99designs/gqlgen/pull/1850
    • Remove outdated version reference so example is always for latest by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1851
    • fix #1770 minor error in getting-started.md by @fulviodenza in https://github.com/99designs/gqlgen/pull/1771
    • Fix #1636 by updating gqlparser by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1857
    • Fix #1862 entityResolver directive breaks resolving of required nested fields by @chedom in https://github.com/99designs/gqlgen/pull/1863
    • Fix #1776 : Edit and persist headers in GraphiQL by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1856
    • Bump node-fetch from 2.6.1 to 2.6.7 in /integration by @dependabot in https://github.com/99designs/gqlgen/pull/1859
    • Bump gopkg.in/yaml.v2 from 2.2.4 to 2.2.8 by @dependabot in https://github.com/99designs/gqlgen/pull/1858
    • fix: whitelist VERSION and CURRENT_VERSION env vars by @zenyui in https://github.com/99designs/gqlgen/pull/1870
    • Comment out autobind in the sample config file by @frederikhors in https://github.com/99designs/gqlgen/pull/1872
    • docs: migrate dataloaders sample to graph-gophers/dataloader by @zenyui in https://github.com/99designs/gqlgen/pull/1871
    • remove autobind example from init commands by @zachsmith1 in https://github.com/99designs/gqlgen/pull/1949
    • fix: typo in dataloader code sample by @plog3050 in https://github.com/99designs/gqlgen/pull/1954
    • rename "example" dir to "_examples" by @frederikhors in https://github.com/99designs/gqlgen/pull/1734
    • Fix 1955: only print message on @key found on interfaces by @carldunham in https://github.com/99designs/gqlgen/pull/1956
    • Upate init CI step by @mtibben in https://github.com/99designs/gqlgen/pull/1957
    • Cleanup main by @mtibben in https://github.com/99designs/gqlgen/pull/1958
    • Websocket i/o timeout fix by @RobinCPel in https://github.com/99designs/gqlgen/pull/1973
    • generate resolvers for input types by @FanFani4 in https://github.com/99designs/gqlgen/pull/1950
    • Websocket Error Handling by @RobinCPel in https://github.com/99designs/gqlgen/pull/1975
    • Fix broken links in docs by @trenton42 in https://github.com/99designs/gqlgen/pull/1983
    • fixed introspection for schema description and specifiedByURL by @Code-Hex in https://github.com/99designs/gqlgen/pull/1986
    • Web Socket initialization message timeout by @RobinCPel in https://github.com/99designs/gqlgen/pull/2006
    • Bump ajv from 6.10.2 to 6.12.6 in /integration by @dependabot in https://github.com/99designs/gqlgen/pull/2007
    • support to generate model for intermediate interface by @Code-Hex in https://github.com/99designs/gqlgen/pull/1982
    • fix introspection for description to be nullable by @Code-Hex in https://github.com/99designs/gqlgen/pull/2008
    • Clean up docs to clarify how to use a particular version by @mtibben in https://github.com/99designs/gqlgen/pull/2015
    • Remove ambient imports by @mtibben in https://github.com/99designs/gqlgen/pull/2016
    • Test gqlgen generate in CI by @mtibben in https://github.com/99designs/gqlgen/pull/2017
    • Embed templates instead of inlining them by @mtibben in https://github.com/99designs/gqlgen/pull/2019
    • Revert "Update quickstart" by @mtibben in https://github.com/99designs/gqlgen/pull/2014

    New Contributors

    • @fulviodenza made their first contribution in https://github.com/99designs/gqlgen/pull/1771
    • @zenyui made their first contribution in https://github.com/99designs/gqlgen/pull/1870
    • @zachsmith1 made their first contribution in https://github.com/99designs/gqlgen/pull/1949
    • @plog3050 made their first contribution in https://github.com/99designs/gqlgen/pull/1954
    • @FanFani4 made their first contribution in https://github.com/99designs/gqlgen/pull/1950
    • @trenton42 made their first contribution in https://github.com/99designs/gqlgen/pull/1983

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.16.0...v0.17.0

    Source code(tar.gz)
    Source code(zip)
  • v0.16.0(Jan 24, 2022)

    What's Changed

    • Bump gqlgen.com version list by @ipfans in https://github.com/99designs/gqlgen/pull/1778
    • Imporve gqlgen test cases by @ipfans in https://github.com/99designs/gqlgen/pull/1773
    • Fix #1834: Implement federation correctly by @newerbie in https://github.com/99designs/gqlgen/pull/1835
    • Update README.md by @patriotphoenix in https://github.com/99designs/gqlgen/pull/1836
    • Fix #1832 @requires directive when @entityResolver is used by @chedom in https://github.com/99designs/gqlgen/pull/1833
    • Breaking: Revert "Breaking: Fix plugin addition" by @Code-Hex in https://github.com/99designs/gqlgen/pull/1838
    • add PrependPlugin by @Code-Hex in https://github.com/99designs/gqlgen/pull/1839
    • Prepare for v0.16.0 release by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1842

    New Contributors

    • @newerbie made their first contribution in https://github.com/99designs/gqlgen/pull/1835
    • @patriotphoenix made their first contribution in https://github.com/99designs/gqlgen/pull/1836
    • @chedom made their first contribution in https://github.com/99designs/gqlgen/pull/1833

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.15.1...v0.16.0

    Source code(tar.gz)
    Source code(zip)
  • v0.15.1(Jan 16, 2022)

    What's Changed

    • Fixed broken link by @mkusaka in https://github.com/99designs/gqlgen/pull/1768
    • Fix #1765: Sometimes module info not exists or not loaded. by @ipfans in https://github.com/99designs/gqlgen/pull/1767

    New Contributors

    • @mkusaka made their first contribution in https://github.com/99designs/gqlgen/pull/1768

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.15.0...v0.15.1

    Source code(tar.gz)
    Source code(zip)
  • v0.15.0(Jan 15, 2022)

    What's Changed

    • Resolve requests for federation entities in parallel by @benjaminjkraft in https://github.com/99designs/gqlgen/pull/1285
    • serialize ID just like String by @bickyeric in https://github.com/99designs/gqlgen/pull/1340
    • Return type loading errors in config.Binder.FindObject by @mathieupost in https://github.com/99designs/gqlgen/pull/1529
    • subscriptions: send complete message on resolver panic by @alexsn in https://github.com/99designs/gqlgen/pull/1405
    • allow more than 10 different import sources with types by @simborg in https://github.com/99designs/gqlgen/pull/1526
    • support input object directive by @Code-Hex in https://github.com/99designs/gqlgen/pull/1525
    • Bypass complexity limit on __Schema queries. by @tsh96 in https://github.com/99designs/gqlgen/pull/1581
    • fix Options response header by @jjmengze in https://github.com/99designs/gqlgen/pull/1608
    • Update to go 1.17 by @mtibben in https://github.com/99designs/gqlgen/pull/1610
    • Update errors to use go1.13 semantics by @mtibben in https://github.com/99designs/gqlgen/pull/1606
    • [POC/RFC] Split examples into separate go module by @lwc in https://github.com/99designs/gqlgen/pull/1607
    • Update golangci linter by @mtibben in https://github.com/99designs/gqlgen/pull/1612
    • Clean up non-module deps by @mtibben in https://github.com/99designs/gqlgen/pull/1613
    • Also test against 1.16 by @mtibben in https://github.com/99designs/gqlgen/pull/1614
    • Update docs for getting started by @mtibben in https://github.com/99designs/gqlgen/pull/1617
    • Update disabling Introspection by @FlymeDllVa in https://github.com/99designs/gqlgen/pull/1624
    • Fix typo in the getting-started docs by @robertmarsal in https://github.com/99designs/gqlgen/pull/1628
    • Appropriately Handle Falsy Default Field Values by @wilhelmeek in https://github.com/99designs/gqlgen/pull/1623
    • remove redundant favicon by @ash99d in https://github.com/99designs/gqlgen/pull/1638
    • Marshaling & Unmarshaling time return initial value by @frankywahl in https://github.com/99designs/gqlgen/pull/1515
    • Forward go mod tidy stdout/stderr by @benjaminjkraft in https://github.com/99designs/gqlgen/pull/1619
    • Fix example run instructions by @minus7 in https://github.com/99designs/gqlgen/pull/1640
    • Update time format for Time scalar by @cameronbrill in https://github.com/99designs/gqlgen/pull/1648
    • Add QR and KVK to common initialisms by @RichardLindhout in https://github.com/99designs/gqlgen/pull/1419
    • Bump tmpl from 1.0.4 to 1.0.5 in /integration by @dependabot in https://github.com/99designs/gqlgen/pull/1627
    • Fixes #1653: update docs and wrap error if not *gqlerror.Error by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1654
    • Enable lowercase type names in GraphQL schema to properly render by @tkuhlman in https://github.com/99designs/gqlgen/pull/1359
    • adding support for sending extension with gqlgen client by @schafle in https://github.com/99designs/gqlgen/pull/1633
    • add extraTag directive by @j75689 in https://github.com/99designs/gqlgen/pull/1173
    • handling unconventional naming used in type names by @vnj-uber in https://github.com/99designs/gqlgen/pull/1549
    • Add graphql schema aware field level hook to modelgen by @tprebs in https://github.com/99designs/gqlgen/pull/1650
    • Reload config packages after generating models by @wendorf in https://github.com/99designs/gqlgen/pull/1491
    • codegen: ensure Elem present before using by @tmc in https://github.com/99designs/gqlgen/pull/1317
    • remove redundant WithOperationContext call by @bickyeric in https://github.com/99designs/gqlgen/pull/1641
    • fix double indirect bug by @carldunham in https://github.com/99designs/gqlgen/pull/1604
    • Add ReplacePlugin option to replace a specific plugin by @tprebs in https://github.com/99designs/gqlgen/pull/1657
    • raise panic when nested @requires are used on federation by @vvakame in https://github.com/99designs/gqlgen/pull/1655
    • Update GQLgen test client to work with multipart form data by @Sonna in https://github.com/99designs/gqlgen/pull/1418
    • Allow custom websocket upgrader by @foreverest in https://github.com/99designs/gqlgen/pull/1595
    • Revert 1595 by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1658
    • Revert "Update GQLgen test client to work with multipart form data" by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1659
    • Add a config option to skip running "go mod tidy" on code generation by @yar00001 in https://github.com/99designs/gqlgen/pull/1644
    • Adds RootFieldInterceptor to extension interfaces by @CoreyWinkelmann in https://github.com/99designs/gqlgen/pull/1647
    • Update GQLgen test client to work with multipart form data (take 2) by @Sonna in https://github.com/99designs/gqlgen/pull/1661
    • Add follow-schema layout for exec by @kevinmbeaulieu in https://github.com/99designs/gqlgen/pull/1309
    • Update directives doc page by @JohnMaguire in https://github.com/99designs/gqlgen/pull/1660
    • Merge Inline Fragment Nested Interface Fields by @wilhelmeek in https://github.com/99designs/gqlgen/pull/1663
    • Add ICMP to common initialisms by @JohnMaguire in https://github.com/99designs/gqlgen/pull/1666
    • ContextMarshaler by @duckbrain in https://github.com/99designs/gqlgen/pull/1652
    • Fix 1138: nested fieldset support by @carldunham in https://github.com/99designs/gqlgen/pull/1669
    • feat: generate resolvers for inputs if fields are missing by @danielvladco in https://github.com/99designs/gqlgen/pull/1404
    • Update getting-started.md by @wejafoo in https://github.com/99designs/gqlgen/pull/1674
    • Fix nil pointer dereference when an invalid import is bound to a model by @JohnMaguire in https://github.com/99designs/gqlgen/pull/1676
    • Rename @extraTag directive to @goTag and make repeatable by @wilhelmeek in https://github.com/99designs/gqlgen/pull/1680
    • Reimplement goTag using FieldMutateHook by @tprebs in https://github.com/99designs/gqlgen/pull/1682
    • Support for multiple @key directives in federation by @carldunham in https://github.com/99designs/gqlgen/pull/1684
    • DOC: Fixed indention in example code. by @hsblhsn in https://github.com/99designs/gqlgen/pull/1693
    • Revert "Support for multiple @key directives in federation" by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1698
    • Entity resolver tests by @MiguelCastillo in https://github.com/99designs/gqlgen/pull/1697
    • Ignore generated files from test coverage by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1699
    • transport: implement graphql-transport-ws ws sub-protocol by @jordanabderrachid in https://github.com/99designs/gqlgen/pull/1507
    • Replace ! with _ in root.generated file to avoid build conflicts by @yar00001 in https://github.com/99designs/gqlgen/pull/1701
    • Adding entity resolver tests for errors, entities with different type… by @MiguelCastillo in https://github.com/99designs/gqlgen/pull/1708
    • Resolve multiple federated entities in a single entityResolve call by @MiguelCastillo in https://github.com/99designs/gqlgen/pull/1709
    • Separate golangci-lint from other jobs by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1712
    • Optimize performance for binder, imports and packages (Rebased from sbalabanov/master) by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1711
    • Cleaning up extra return in federation generated code by @MiguelCastillo in https://github.com/99designs/gqlgen/pull/1713
    • Fix #1704: handle @required nested fields as in @key by @carldunham in https://github.com/99designs/gqlgen/pull/1706
    • Fix plugin addition by @erwin-k in https://github.com/99designs/gqlgen/pull/1717
    • add federation tests by @carldunham in https://github.com/99designs/gqlgen/pull/1719
    • Add support for graphql-transport-ws with duplex ping-pong by @zdraganov in https://github.com/99designs/gqlgen/pull/1578
    • Don't overwrite field arguments when none match by @edigaryev in https://github.com/99designs/gqlgen/pull/1725
    • Close Websocket Connection on Context close/cancel by @RobinCPel in https://github.com/99designs/gqlgen/pull/1728
    • fix: automatically register built-in directive goTag by @tprebs in https://github.com/99designs/gqlgen/pull/1737
    • Fix list coercion when using graphql variables by @tprebs in https://github.com/99designs/gqlgen/pull/1740
    • Add CSV and PDF to common initialisms by @s-takehana in https://github.com/99designs/gqlgen/pull/1741
    • Support for multiple @key directives in federation (reworked) by @carldunham in https://github.com/99designs/gqlgen/pull/1723
    • Downgrade to Go 1.16 by @StevenACoffman in https://github.com/99designs/gqlgen/pull/1743
    • Added pointer to a solution for no Go files err by @aircliff in https://github.com/99designs/gqlgen/pull/1747
    • Avoid problems with val being undefined in the federation template. by @csilvers in https://github.com/99designs/gqlgen/pull/1760
    • Migrate playgrounds to GraphiQL by @kirkbyo in https://github.com/99designs/gqlgen/pull/1751
    • Improve performance of MarshalBoolean by @tsh96 in https://github.com/99designs/gqlgen/pull/1757
    • Fix #1762: Reload packages before merging type systems by @ipfans in https://github.com/99designs/gqlgen/pull/1763

    New Contributors

    • @bickyeric made their first contribution in https://github.com/99designs/gqlgen/pull/1340
    • @mathieupost made their first contribution in https://github.com/99designs/gqlgen/pull/1529
    • @simborg made their first contribution in https://github.com/99designs/gqlgen/pull/1526
    • @Code-Hex made their first contribution in https://github.com/99designs/gqlgen/pull/1525
    • @tsh96 made their first contribution in https://github.com/99designs/gqlgen/pull/1581
    • @jjmengze made their first contribution in https://github.com/99designs/gqlgen/pull/1608
    • @FlymeDllVa made their first contribution in https://github.com/99designs/gqlgen/pull/1624
    • @robertmarsal made their first contribution in https://github.com/99designs/gqlgen/pull/1628
    • @ash99d made their first contribution in https://github.com/99designs/gqlgen/pull/1638
    • @minus7 made their first contribution in https://github.com/99designs/gqlgen/pull/1640
    • @cameronbrill made their first contribution in https://github.com/99designs/gqlgen/pull/1648
    • @tkuhlman made their first contribution in https://github.com/99designs/gqlgen/pull/1359
    • @schafle made their first contribution in https://github.com/99designs/gqlgen/pull/1633
    • @j75689 made their first contribution in https://github.com/99designs/gqlgen/pull/1173
    • @vnj-uber made their first contribution in https://github.com/99designs/gqlgen/pull/1549
    • @tprebs made their first contribution in https://github.com/99designs/gqlgen/pull/1650
    • @wendorf made their first contribution in https://github.com/99designs/gqlgen/pull/1491
    • @carldunham made their first contribution in https://github.com/99designs/gqlgen/pull/1604
    • @foreverest made their first contribution in https://github.com/99designs/gqlgen/pull/1595
    • @yar00001 made their first contribution in https://github.com/99designs/gqlgen/pull/1644
    • @CoreyWinkelmann made their first contribution in https://github.com/99designs/gqlgen/pull/1647
    • @kevinmbeaulieu made their first contribution in https://github.com/99designs/gqlgen/pull/1309
    • @JohnMaguire made their first contribution in https://github.com/99designs/gqlgen/pull/1660
    • @duckbrain made their first contribution in https://github.com/99designs/gqlgen/pull/1652
    • @danielvladco made their first contribution in https://github.com/99designs/gqlgen/pull/1404
    • @wejafoo made their first contribution in https://github.com/99designs/gqlgen/pull/1674
    • @hsblhsn made their first contribution in https://github.com/99designs/gqlgen/pull/1693
    • @MiguelCastillo made their first contribution in https://github.com/99designs/gqlgen/pull/1697
    • @jordanabderrachid made their first contribution in https://github.com/99designs/gqlgen/pull/1507
    • @erwin-k made their first contribution in https://github.com/99designs/gqlgen/pull/1717
    • @zdraganov made their first contribution in https://github.com/99designs/gqlgen/pull/1578
    • @edigaryev made their first contribution in https://github.com/99designs/gqlgen/pull/1725
    • @RobinCPel made their first contribution in https://github.com/99designs/gqlgen/pull/1728
    • @s-takehana made their first contribution in https://github.com/99designs/gqlgen/pull/1741
    • @aircliff made their first contribution in https://github.com/99designs/gqlgen/pull/1747
    • @kirkbyo made their first contribution in https://github.com/99designs/gqlgen/pull/1751
    • @ipfans made their first contribution in https://github.com/99designs/gqlgen/pull/1763

    Full Changelog: https://github.com/99designs/gqlgen/compare/v0.14.0...v0.15.0

    Source code(tar.gz)
    Source code(zip)
  • v0.14.0(Sep 8, 2021)

    Added

    • Added a changelog :-) Following the same style as Apollo Client because that feels like it gives good thanks to the community contributors. By @MichaelJCompton in #1512
    • Added support for methods returning (v, ok) shaped values to support Prisma Go client. By @steebchen in #1449
    • Added a new API to finish an already validated config
      By @benjaminjkraft in #1387

    Changed

    Fixed

    • Removed a data race by copying when input fields have default values. By @skaji in #1456
    • v0.12.2 broke the handling of pointers to slices by calling the custom Marshal and Unmarshal functions on the entire slice. It now correctly calls the custom Marshal and Unmarshal methods for each element in the slice. By @ananyasaxena in #1363
    • Changes in go1.16 that mean go.mod and go.sum aren't always up to date. Now go mod tidy is run after code generation. By @lwc in #1501
    • Errors in resolving non-nullable arrays were not correctly bubbling up to the next nullable field. By @wilhelmeek in #1480
    • Fixed a potential deadlock in calling error presenters.
      By @vektah in #1399
    • Fixed collectFields not correctly respecting alias fields in fragments.
      By @vmrajas in #1341
    • Return introspection document in stable order.
    • By @nyergler in #1497
    Source code(tar.gz)
    Source code(zip)
  • v0.13.0(Sep 21, 2020)

    Added

    • IsResolver added to FieldContext - https://github.com/99designs/gqlgen/pull/1316

    Updated

    • BC break: User errors returned from directives & resolvers are now consistently wrapped in gqlerror.Errors internally by the runtime, which has been updated to support go 1.13 unwrapping - #1312
      • Since #1115 was merged, errors from inputs have been wrapped, but didn't support unwrapping, leading to #1291
      • With all errors now wrapped before the error presenter is called, custom error presenters that use type assertions will be broken.
      • errors.As must instead be used to assert/convert error types in custom error presenters.
      • See the updated docs on customising the error presenter and the blog post on go 1.13 errors for more details.
    • Typos & tweaks to docs - #1295, #1324
    Source code(tar.gz)
    Source code(zip)
  • v0.12.2(Aug 18, 2020)

    Fixed

    • Fixed error during gqlgen init that was making starting a new project via the getting started guide impossible
    • Fix for selecting fragments on different types with overlapping fields - https://github.com/99designs/gqlgen/issues/1280 thanks @JatinDevDG

    Updated

    • Avoid computing field path if not needed during field errors - https://github.com/99designs/gqlgen/pull/1288 thanks @alexsn
    Source code(tar.gz)
    Source code(zip)
  • v0.12.1(Aug 14, 2020)

Owner
99designs
Global creative platform for designers and clients
99designs
GraphQL server with a focus on ease of use

graphql-go The goal of this project is to provide full support of the GraphQL draft specification with a set of idiomatic, easy to use Go packages. Wh

null 4.3k Dec 31, 2022
GraphQL server with a focus on ease of use

graphql-go The goal of this project is to provide full support of the GraphQL draft specification with a set of idiomatic, easy to use Go packages. Wh

null 4.3k Dec 25, 2022
GQLEngine is the best productive solution for implementing a GraphQL server 🚀

GQLEngine is the best productive solution for implementing a graphql server for highest formance examples starwars: https://github.com/gqlengine/starw

null 88 Apr 24, 2022
Fast :zap: reverse proxy in front of any GraphQL server for caching, securing and monitoring.

Fast ⚡ reverse proxy in front of any GraphQL server for caching, securing and monitoring. Features ?? Caching RFC7234 compliant HTTP Cache. Cache quer

GBox Proxy 25 Nov 5, 2022
A collection of Go packages for creating robust GraphQL APIs

api-fu api-fu (noun) (informal) Mastery of APIs. ?? Packages The top level apifu package is an opinionated library that aims to make it as easy as pos

Chris 45 Dec 28, 2022
graphql parser + utilities

graphql utilities for dealing with GraphQL queries in Go. This package focuses on actually creating GraphQL servers and expects you to describe your s

Travis Cline 58 Dec 20, 2022
An implementation of GraphQL for Go / Golang

graphql An implementation of GraphQL in Go. Follows the official reference implementation graphql-js. Supports: queries, mutations & subscriptions. Do

null 9k Dec 26, 2022
Convert Golang Struct To GraphQL Object On The Fly

Straf Convert Golang Struct To GraphQL Object On The Fly Easily Create GraphQL Schemas Example Converting struct to GraphQL Object type UserExtra stru

Roshan Mehta 34 Oct 26, 2022
⚡️ A Go framework for rapidly building powerful graphql services

Thunder is a Go framework for rapidly building powerful graphql servers. Thunder has support for schemas automatically generated from Go types, live q

null 1.6k Dec 24, 2022
gqlanalysis makes easy to develop static analysis tools for GraphQL in Go.

gqlanalysis gqlanalysis defines the interface between a modular static analysis for GraphQL in Go. gqlanalysis is inspired by go/analysis. gqlanalysis

null 38 Dec 14, 2022
Tools to write high performance GraphQL applications using Go/Golang.

graphql-go-tools Sponsors WunderGraph Are you looking for a GraphQL e2e data fetching solution? Supports frameworks like NextJS, type safety with gene

Jens Neuse 427 Dec 27, 2022
Go monolith with embedded microservices including GRPC,REST,GraphQL and The Clean Architecture.

GoArcc - Go monolith with embedded microservices including GRPC,REST, graphQL and The Clean Architecture. Description When you start writing a Go proj

Deqode 83 Dec 21, 2022
GraphQL implementation for click house in Go.

clickhouse-graphql-go GraphQL implementation for clickhouse in Go. This package stores real time streaming websocket data in clickhouse and uses Graph

Rakesh R 12 Nov 20, 2022
GraphQL parser comparison in different languages

graphql-parser-bench Parsing a schema or document can be a critical part of the application, especially if you have to care about latency. This is the

Dustin Deus 22 Jul 10, 2022
A simple Go, GraphQL, and PostgreSQL starter template

Simple Go/GraphQL/PostgreSQL template Purpose Have a good starting point for any project that needs a graphql, go, and postgres backend. It's a very l

Chris 0 Jan 8, 2022
A GraphQL complete example using Golang And PostgreSQL

GraphQL with Golang A GraphQL complete example using Golang & PostgreSQL Installation Install the dependencies go get github.com/graphql-go/graphql go

Santo Shakil 3 Dec 6, 2022
This app is an attempt towards using go lang with graphql data fetch in react front end.

go_movies _A React js + GraphQL supported with backend in GoLang. This app is an attempt towards using go lang with graphql data fetch in react front

Abhijit Mukherjee 0 Dec 7, 2021
proof-of-concept minimal GraphQL service for LTV

LTV GraphQL Proof-of-Concept This is a barebones proof-of-concept of a possible GraphQL implementation that interacts with Core. It includes a few ver

Nick Kelley 1 Jan 4, 2022
Learn GraphQL with THE IDOLM@STER SHINY COLORS.

faaaar Learn GraphQL with THE IDOLM@STER SHINY COLORS. Getting Started The following is a simple example which get information about 20-year-old idols

tokizo 0 Dec 11, 2022