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
  • 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
  • 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 21
  • Add omitempty json tags for nullable fields

    Add omitempty json tags for nullable fields

    Per @joshpauline in #2325

    There is already an open pr for this feature however it had merge conficts so I would like to fix those and merge this. This feature helps a lot when you are using the generated structs with external services. e.g Saving data to an DB

    I have rebased that PR, and regenerated it

    opened by StevenACoffman 0
  • Adding directive to specific field

    Adding directive to specific field

    What happened?

    I created an Auth directive and passed it to just one query but seems like no query works if that single one fails. This is not the given expectation

    What did you expect?

    I wan only the only query to reflect this directive

    Minimal graphql.schema and models to reproduce

    directive @auth on FIELD_DEFINITION
    
    type Data {
    	code: Int!     
    	status: String!  
    	message: String!   
    	packages: [String!]!
    }
    
    type PackageData {
    	code: Int!     
    	status: String!  
    	message: String!   
    	package: String!
    }
    
    type Query {
      completedPackages(limit: Int!, page: Int!): Data!
      getPackage(id: ID!): PackageData!
      activePackages(limit: Int!, page: Int!): Data! @auth
    }
    
    func Auth(ctx context.Context, obj interface{}, next graphql.Resolver) (interface{}, error) {
    	tokenData, err := middleware.CtxValue(ctx)
    	if err != nil {
    		return nil, err
    	}
    	if tokenData == nil {
    		return nil, &gqlerror.Error{
    			Message: "Access Denied",
    		}
    	}
    
    	return next(ctx)
    }
    
    func GraphqlHandler(db *mongo.Database) gin.HandlerFunc {
    	// NewExecutableSchema and Config are in the generated.go file
    	// Resolver is in the resolver.go file
    	c := generated.Config{Resolvers: &graph.Resolver{Collection: db.Collection("deliveries")}}
    	c.Directives.Auth = directives.Auth
    	h := handler.NewDefaultServer(
    		generated.NewExecutableSchema(c))
    
    	return func(c *gin.Context) {
    		h.ServeHTTP(c.Writer, c.Request)
    	}
    }
    

    versions

    • go run github.com/99designs/gqlgen 0.17.20?
    • go version 1.19?
    opened by AdieOlami 0
  • Error handling for malformed body

    Error handling for malformed body

    What happened?

    I cannot intercept the error 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}
    

    What did you expect?

    Possibility to overwrite the error. I want to return Internal server error or wrong body/query error instead of revealing the genuine error.

    Minimal graphql.schema and models to reproduce

    just any will work, your request needs to include invalid json, not matching graphql.RawParams, for example: --data-raw '[]'

    versions

    • go run github.com/99designs/gqlgen version? 0.17.20
    • go version?: 1.19
    opened by koniuszy 0
  • Golang - lru found but does not contain package erro

    Golang - lru found but does not contain package erro

    Hey All, Whenever I run go run github.com/99designs/gqlgen generate I'm getting the following error: go: finding module for package github.com/hashicorp/golang-lru test imports github.com/99designs/gqlgen/graphql/handler imports github.com/99designs/gqlgen/graphql/handler/lru imports github.com/hashicorp/golang-lru: module github.com/hashicorp/[email protected] found (v1.0.1), but does not contain package github.com/hashicorp/golang-lru tidy failed: go mod tidy failed: exit status 1 exit status 1 This only started happening as of today. Any thoughts on what I'm doing wrong here?

    versions

    • v0.17.20
    • go version go1.19.2 darwin/amd64
    opened by SambhavAnand 0
  • Custom struct tags on directives

    Custom struct tags on directives

    Hello,

    I would like to generate types from a graphql schema with neo4j graphql directives, and convert those to gogm-compatible struct tags. For instance:

    Example of graphql with neo4j directives:

      interface ResourceEntity {
        id: ID! @id(autogenerate: false)
        name: String
      }
      
      type Resource implements ResourceEntity {
        id: ID! @id(autogenerate: false)
        name: String
        containedBy: [ResourceEntity!]! @relationship(type: "CONTAINS", direction: IN)
      }
    

    Example of generated code:

    type ResourceEntity struct {
    	// provides required node fields
    	gogm.BaseNode
    
        Name         string                `gogm:"name=name"`
    }
    
    type Resource struct {
    	// provides required node fields
    	gogm.BaseNode
    
    	Name  string     `gogm:"name=name"`
    	ContainedBy  []*ResourceEntity   `gogm:"direction=incoming;relationship=..."`
    }
    

    Is there any path to achieving this with the current functionality?

    opened by nettrino 0
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
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 Nov 23, 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 Nov 29, 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 Sep 27, 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 57 Sep 27, 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 8.9k Nov 23, 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 Nov 29, 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
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 420 Nov 30, 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 81 Nov 11, 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 2 Aug 25, 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 [email protected] SHINY COLORS.

faaaar Learn GraphQL with THE [email protected] SHINY COLORS. Getting Started The following is a simple example which get information about 20-year-old idols

tokizo 0 Nov 26, 2022