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
  • Query on polymorphic types

    Query on polymorphic types

    Hi, I have a situation like this:

    type Query {
      GetData: AbstractDataResponse
    }
    
    type AbstractDataResponse {
      field1: String!
      field2: String!
    }
    
    type DataResponseTypeA implements AbstractDataResponse {
      field3a: String!
    }
    
    type DataResponseTypeB implements AbstractDataResponse {
      field3:b String!
    }
    

    I run a query by:

    { 
      GetData {
        field3a
      }
    }
    

    The resolver, in such situation, returns an instance of DataResponseTypeA.

    I get the error:

    Validation error ([email protected][GetData/field3a]) : Field 'field3a' in type 'AbstractDataResponse' is undefined
    

    How could I fix it?

    Thank you so much! Antonio

    opened by antonio-petricca 0
  • unnecessary entity resolvers generated for stub types in Federation 2

    unnecessary entity resolvers generated for stub types in Federation 2

    What happened?

    Given the scenario where you have a subgraph that needs to reference a federated type that the local subgraph does not otherwise define or contribute to, it seems to be common practice to define a stub type for it with nothing but the @key with resolvable=false, and the field(s) mapping to the key directive. In federation 1 the field mapping to the key directive had to be explicitly marked as @external, but in Federation 2 it does not.

    With a valid Federation 2 schema, gqlgen is generating entity resolvers for these stub types even when resolvable: false is specified in their @key directives. This entity resolver is never utilized.

    What did you expect?

    no entity resolver to be generated for the stub types.

    Minimal graphql.schema and models to reproduce

    User subgraph/service:

    type User @key(fields: "id") {
      id: ID!
      name: String!
    }
    

    address subgraph/service:

    type Address @key(fields: "id") {
      id: ID!
      street1: String!
      city: String!
      state: String!
    
     user: User!
    }
    
    type User @key(fields: "id", resolvable: false) {
      id: ID!
    }
    
    type Query {
      address(id: String!): Address
    }
    
    

    query:

    query {
      address(id: "123) {
        street1,
        city,
        user {
          name
        }
      }
    }
    

    versions

    • go run github.com/99designs/gqlgen version?
      • v0.17.20
    • go version?
      • go version go1.19.1 darwin/amd64
    opened by jdavisclark 2
  • Subscriptions behave strange with slightly wrong query

    Subscriptions behave strange with slightly wrong query

    What happened?

    I replicated the example from the docs here for you to test it yourself.

    When sending the slightly wrong subscription (notice the brackets after subscription)

    subscription() {
          currentTime {
              unixTime
              timeStamp
          }
      }
    

    the server behaves strange:

    • it replies to the subscription the first time without any problem
    • it does NOT report any error
    • it then closes the channel without any comment so no further updates for that subscription are sent

    If instead the correct query

    subscription {
          currentTime {
              unixTime
              timeStamp
          }
      }
    

    is sent, the subscription works without problems.

    What did you expect?

    I expected that either everything is working normally or it is not working at all and some error gets reported. This strange mix of both leads to hours of debugging.

    Minimal graphql.schema and models to reproduce

    A ready-to-run replication can be found here: https://github.com/JoshuaDietz/gqlgen-subscription-example

    versions

    • go run github.com/99designs/gqlgen version? v0.17.20
    • go version? go version go1.19.1 darwin/arm64
    opened by JoshuaDietz 0
  • consider goField directive for getters generation

    consider goField directive for getters generation

    Fixes #2439

    When you have an interface and override generated models fields name with goField directive. This PR makes it so getters generated by gqlgen will access field values using the field that was specified in the goField directive.

    I have:

    • [x] Added tests covering the bug / feature (see testing)
    • [x] Updated any relevant documentation (see docs)
    opened by darkLord19 1
  • Interface getters are not using goField directive

    Interface getters are not using goField directive

    What happened?

    Create an interface with few types implementing it. Override generated models fields name with goField directive. Notice that getters generated by gqlgen don't use goField directive to access fields inside getters.

    What did you expect?

    Getters should use correct field names.

    Minimal graphql.schema and models to reproduce

    Schema:

    interface Resource {
      id: String!
      createdById: String! @goField(name: "CreatedById")
      updatedById: String @goField(name: "UpdatedById")
      createdAt: String!
      updatedAt: String!
    }
    
    type ResourceImpl1 implements Resource {
      id: String! @goTag(key: "copier", value: "XId")
      createdById: String! @goField(name: "CreatedById")
      updatedById: String @goField(name: "UpdatedById")
      createdAt: String!
      updatedAt: String!
      type: String!
      shared: Boolean!
    }
    

    Generated getter functions:

    func (this ResourceImpl1) GetCreatedByID() string  { return this.CreatedByID }
    func (this ResourceImpl1) GetUpdatedByID() *string { return &this.UpdatedByID }
    

    versions

    • go run github.com/99designs/gqlgen version? v0.17.20
    • go version? go version go1.19.3 darwin/arm64
    opened by darkLord19 0
  • fix: safe http error response

    fix: safe http error response

    I cannot intercept the error of an invalid request using the hooks. I always get:

    {
      "errors": [
        {
          "message": "json body could not be decoded: json: cannot unmarshal array into Go value of type graphql.RawParams"
        }
      ],
      "data": null
    }
    

    This change removes from the response the details of a decoding error, and instead returns a StatusBadRequest with a more generic decoding error. The more specific error is instead logged.

    Before:

    {"errors":[{"message":"json body could not be decoded: invalid character 'o' in literal null (expecting 'u')"}],"data":null}
    

    After:

    {"errors":[{"message":"json body could not be decoded"}],"data":null}
    

    I have:

    • [x] Added tests covering the bug / feature (see testing)
    • [x] Updated any relevant documentation (see docs)

    Solved: https://github.com/99designs/gqlgen/issues/2430

    opened by koniuszy 4
Releases(v0.17.20)
  • 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)

  • v0.12.0(Aug 14, 2020)

    Added

    • Support for the OBJECT directive - https://github.com/99designs/gqlgen/pull/1117 thanks @s-ichikawa
    • "PGP" added to list of common initialisms - https://github.com/99designs/gqlgen/pull/1198 thanks @ddevault
    • Add input path in unmarshaling errors - https://github.com/99designs/gqlgen/pull/1115 thanks @bowd
    • Support for pointers in custom un/marshal functions - https://github.com/99designs/gqlgen/pull/1277

    Updated

    • Websocket dependency version bumped to v1.4.2 to resolve vulnerability - https://github.com/99designs/gqlgen/pull/1207 thanks @k-yomo
    • Updated to go 1.14 in CI - https://github.com/99designs/gqlgen/pull/1264
    • A heap of documentation improvements - https://github.com/99designs/gqlgen/pull/1104, https://github.com/99designs/gqlgen/pull/1119 https://github.com/99designs/gqlgen/pull/1124, https://github.com/99designs/gqlgen/pull/1131, https://github.com/99designs/gqlgen/pull/1147, https://github.com/99designs/gqlgen/pull/1161, https://github.com/99designs/gqlgen/pull/1181, https://github.com/99designs/gqlgen/pull/1202, https://github.com/99designs/gqlgen/pull/1188, https://github.com/99designs/gqlgen/pull/1189, https://github.com/99designs/gqlgen/pull/1218, https://github.com/99designs/gqlgen/pull/1221, https://github.com/99designs/gqlgen/pull/1224, https://github.com/99designs/gqlgen/pull/1276

    Fixed

    • gqlgen now works in paths containing a ~ - https://github.com/99designs/gqlgen/pull/1137 thanks @ddevault
    • Redundant type warning in generated code - https://github.com/99designs/gqlgen/pull/1163 thanks @fwojciec
    • POST transport now correctly has OperationContext - https://github.com/99designs/gqlgen/pull/1154 thanks @gsgalloway
    • Fix panic when tracing subscriptions - https://github.com/99designs/gqlgen/pull/1170 thanks @alexsn
    • [Federation] Do not require a resolver for "empty" extended types - https://github.com/99designs/gqlgen/pull/1121 thanks @csilvers
    • Don't point to named maps & slices - https://github.com/99designs/gqlgen/pull/1242
    • GET transport now correctly sets a content type - https://github.com/99designs/gqlgen/pull/1215 thanks @ddouglas
    • Removed a bunch of unneeded nil checks from codegen - https://github.com/99designs/gqlgen/pull/1243
    • Fixed potential memory leak when processing uploads - https://github.com/99designs/gqlgen/pull/1246 thanks @arkhvoid
    • Fixed leaking file descriptors when subscription clients hangup - https://github.com/99designs/gqlgen/pull/1248 thanks @sotoslammer
    • Fixed incorrect gqlparser import path - https://github.com/99designs/gqlgen/pull/1262 thanks @sateeshpnv
    • Load source based on default config in gqlgen gen - https://github.com/99designs/gqlgen/pull/1134 thanks @seriousben
    • Fixed OBJECT directive to fire when there are no field directives - https://github.com/99designs/gqlgen/pull/1255 thanks @s-ichikawa

    Thanks to everyone who contributed to this massive release!

    Source code(tar.gz)
    Source code(zip)
  • v0.11.3(Mar 13, 2020)

Owner
99designs
Global creative platform for designers and clients
99designs
The easiest way to make API documents for GraphQL

Document Generator for GraphQL gqldoc is now alpha gqldoc is command line tool to generate documents from GraphQL schema or your GraphQL endpoint. the

Kei Kamikawa 161 Nov 17, 2022
A port of the parser from graphql-js into golang

gqlparser This is a parser for graphql, written to mirror the graphql-js reference implementation as closely while remaining idiomatic and easy to use

Adam Scarr 396 Nov 23, 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 36 Nov 1, 2022
libraries for various programming languages that make it easy to generate per-process trace files that can be loaded into chrome://tracing

chrometracing: chrome://tracing trace_event files The chrometracing directory contains libraries for various programming languages that make it easy t

Google 23 Oct 6, 2022
Go package to generate and manage color palettes & schemes 🎨

Go package to generate and manage color palettes & schemes

Christian Muehlhaeuser 498 Nov 19, 2022
Generate Go clients from anchor IDLs for Solana blockchain programs

usage anchor-go --src=/path/to/idl.json Generated Code will be generated and saved to ./generated/. TODO instructions accounts types events errors han

Slavomir 86 Nov 25, 2022
Utilities to generate (reference) documentation for the docker CLI

About This is a library containing utilities to generate (reference) documentation for the docker CLI on docs.docker.com. Disclaimer This library is i

Docker 15 Oct 30, 2022
generate random data like name, email, uuid, address, images and etc.

gg-rand generate random data like name, email, uuid, address, images and etc. build and install: make run: gg-rand $ gg-rand SillyName : Knavesa

bingoohuang 3 Nov 16, 2022
Generate simple CHANGELOG

changelog Generate simple CHANGELOG Install Download the one that suits your environment and place it in a location that is in your PATH. https://gith

tricot 2 Oct 10, 2021
Generate some random data

fake-data-generator-api generate some random data installing and using

Miguel 2 Jul 14, 2022
A utility to generate SPDX-compliant Bill of Materials manifests

Kubernetes Template Project The Kubernetes Template Project is a template for starting new projects in the GitHub organizations owned by Kubernetes. A

Kubernetes SIGs 165 Nov 27, 2022
Generate signal for a thing for golang

go_kafka_signal generate signal for a thing go build producer.go ./producer -f ~

null 0 Dec 24, 2021
Protoc-gen-fieldmask - Generate FieldMask utility functions for protobuf

protoc-gen-fieldmask Generate FieldMask utility functions for protobuf Generated

yeqown 29 Aug 20, 2022
An application written in Go to generate fractals like the Mandelbrot set and the Julia set.

Fractals An application written in Go to generate fractals like the Mandelbrot set and the Julia set. Screenshots Mandelbrot set Julia set Prerequisit

null 0 May 9, 2022
Fully featured, spec-compliant HTML5 server-sent events library

go-sse Lightweight, fully spec-compliant HTML5 server-sent events library. Table of contents go-sse Table of contents Installation and usage Implement

Teodor Maxim 163 Nov 2, 2022
A concurrent rate limiter library for Golang based on Sliding-Window rate limiter algorithm.

ratelimiter A generic concurrent rate limiter library for Golang based on Sliding-window rate limitng algorithm. The implementation of rate-limiter al

Narasimha Prasanna HN 220 Nov 10, 2022
The main goal of this code is to create a basic dnstap printing tool based on the golang-dnstap library.

dnstap-parse The main goal of this code is to create a basic dnstap printing tool based on the golang-dnstap library. The output is supposed to mimic

Patrik Lundin 1 Nov 14, 2021
squirrelbyte is a "proof of concept" document / search server backed by sqlite.

??️ squirrelbyte is a "proof of concept" document / search server backed by sqlite.

null 135 May 20, 2022
Hotswap provides a solution for reloading your go code without restarting your server, interrupting or blocking any ongoing procedure.

Hotswap provides a solution for reloading your go code without restarting your server, interrupting or blocking any ongoing procedure. Hotswap is built upon the plugin mechanism.

Edwin 151 Nov 23, 2022