This is the Golang version of the article — Building GraphQL Server Using Schema-first Approach in Python.
Exploring the Golang GraphQL server with CRUD operations
It uses the exact same schema implementations in Golang.
The schema-first approach means we will write our schema first, using the GraphQL schema definition language. In the code-first approach, we will construct our schema using the library APIs.
We will be using
gqlgen as our schema-first GraphQL library for Golang.
Overview of the Project
We are going to build the GraphQL server that handles the CRUD operation of
Book in the
Simply, we will be storing the book’s information in our database. To simplify this project, I haven’t used any kind of database; I just used an in-memory store and focused more on the GraphQL part.
- Add books
- Get book by ID
- List books by genre
- List all the books
- Update the book
- Delete the book
Building the GraphQL Server with Golang
- Let’s create our project dir.
- Initialize the Go module with
go mod init <dirname>.
- Get our package by
go get github.com/99designs/gqlgen
- Initialize gqlgen by
go run github.com/99designs/gqlgen init
go mod tidyto get the required packages
At this point, we could see various files and folders under the directory graphql. The directory graph was generated by gqlgen after we typed the
model/model_gen.go — this is a file with structs generated by gqlgen and defined by the schema file
generated/generated.go — this is a file with generated code that injects context and middleware for each query and mutation.
You should not modify either of those files since they will be modified by gqlgen as we update our schema and generate.
graph/resolver.go — is the root graph resolver type. This file won’t get regenerated. This is the file where we declare our app’s dependencies, like our database.
schema.graphqls — is a GraphQL schema file that defines types, queries, and mutations. The schema file uses schema-definition-language (SDL) to describe data types and operations (queries/mutations) in a human-readable way.
schema.resolvers.go — is a Go file with wrapper code for queries and mutations defined in
Defining our GraphQL Schema
I invite you to define the schema and implement the code in your own way and requirement.