gqlgenc

command module
v0.0.16 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2022 License: MIT Imports: 8 Imported by: 0

README

Our Doc

This is a fork of gqlgenc. We have made custom changes to

  • Handle BigFloat
  • Handle nested types
  • Allow injecting custom GraphQL client

The changes we made can be viewed here

How to use this package

Run go get github.com/TripleMint/gqlgenc to install the executable and update your go.mod and go.sum files.

To prevent go mod tidy from removing this library, add a tools.go file with the following code:

// +build tools

package tools

import (
	_ "github.com/TripleMint/gqlgenc"
)

Add a .gqlgenc.yml configuration file in the directory where queries are stored. Then run GRAPHQL_HOST=$HOST gqlgenc. You should see files generated in the directories you have specified in the configuration file.

Upstream Repo Doc

The rest of this doc is from the original repo.

This is a fork of gqlgenc. We have made custom changes to

  • Handle BigFloat
  • Handle nested types
  • Allow injecting custom GraphQL client

The changes we made can be viewed here or as diff.

The rest of this doc is from the original repo.

What is gqlgenc ?

This is Go library for building GraphQL client with gqlgen

Motivation

Now, if you build GraphQL api client for Go, have choice:

These libraries are very simple and easy to handle. However, as I work with gqlgen and graphql-code-generator every day, I find out the beauty of automatic generation. So I want to automatically generate types.

Installation

go get -u github.com/TripleMint/gqlgenc

How to use

Client Codes Only

gqlgenc base is gqlgen with plugins. So the setting is yaml in each format. gqlgenc can be configured using a .gqlgenc.yml file

Load a schema from a remote server:

model:
  package: generated
  filename: ./models_gen.go # https://github.com/99designs/gqlgen/tree/master/plugin/modelgen
client:
  package: generated
  filename: ./client.go # Where should any generated client go?
models:
  Int:
    model: github.com/99designs/gqlgen/graphql.Int64
  Date:
    model: github.com/99designs/gqlgen/graphql.Time
endpoint:
  url: https://api.annict.com/graphql # Where do you want to send your request?
  headers: # If you need header for getting introspection query, set it
    Authorization: "Bearer ${ANNICT_KEY}" # support environment variables
query:
  - "./query/*.graphql" # Where are all the query files located?

Load a schema from a local file:

model:
  package: generated
  filename: ./models_gen.go # https://github.com/99designs/gqlgen/tree/master/plugin/modelgen
client:
  package: generated
  filename: ./client.go # Where should any generated client go?
models:
  Int:
    model: github.com/99designs/gqlgen/graphql.Int64
  Date:
    model: github.com/99designs/gqlgen/graphql.Time
schema:
  - "schema/**/*.graphql" # Where are all the schema files located?
query:
  - "./query/*.graphql" # Where are all the query files located?

Execute the following command on same directory for .gqlgenc.yml

gqlgenc
With gqlgen

Do this when creating a server and client for Go. You create your own entrypoint for gqlgen. This use case is very useful for testing your server.

package main

import (
	"fmt"
	"os"

	"github.com/TripleMint/gqlgenc/clientgen"

	"github.com/99designs/gqlgen/api"
	"github.com/99designs/gqlgen/codegen/config"
)

func main() {
	cfg, err := config.LoadConfigFromDefaultLocations()
	if err != nil {
		fmt.Fprintln(os.Stderr, "failed to load config", err.Error())
		os.Exit(2)
	}
	queries := []string{"client.query", "fragemt.query"}
	clientPackage := config.PackageConfig{
		Filename: "./client.go",
		Package:  "gen",
	}

	clientPlugin := clientgen.New(queries, clientPackage)
	err = api.Generate(cfg,
		api.AddPlugin(clientPlugin),
	)
	if err != nil {
		fmt.Fprintln(os.Stderr, err.Error())
		os.Exit(3)
	}
}

Documents

Comments

Japanese Comments

These codes have Japanese comments. Replace with English.

Subscription

This client does not support subscription. If you need a subscription, please create an issue or pull request.

Pre-conditions

clientgen is created based on modelgen. So if you don't have a modelgen, it may be a mysterious move.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
example
Package graphqljson provides a function for decoding JSON into a GraphQL query data structure.
Package graphqljson provides a function for decoding JSON into a GraphQL query data structure.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL