Skip to content

Instantly share code, notes, and snippets.

@fwojciec
Created January 20, 2020 16:01
Show Gist options
  • Save fwojciec/84a3020ad91ab083fd22d386af5dea15 to your computer and use it in GitHub Desktop.
Save fwojciec/84a3020ad91ab083fd22d386af5dea15 to your computer and use it in GitHub Desktop.
gqlserver2: dataloaders6
package main
import (
"fmt"
"net/http"
"os"
"github.com/[username]/gqlgen-sqlc-example/dataloaders" // update the username
"github.com/[username]/gqlgen-sqlc-example/gqlgen" // update the username
"github.com/[username]/gqlgen-sqlc-example/pg" // update the username
)
func main() {
// initialize the db
db, err := pg.Open("dbname=gqlgen_sqlc_example_db sslmode=disable")
if err != nil {
panic(err)
}
defer db.Close()
// initialize the repository
repo := pg.NewRepository(db)
// initialize the dataloaders
dl := dataloaders.NewRetriever() // <- here we initialize the dataloader.Retriever
// configure the server
mux := http.NewServeMux()
mux.Handle("/", gqlgen.NewPlaygroundHandler("/query"))
dlMiddleware := dataloaders.Middleware(repo) // <- here we initialize the middleware
queryHandler := gqlgen.NewHandler(repo, dl) // <- use dataloader.Retriever here
mux.Handle("/query", dlMiddleware(queryHandler)) // <- use dataloader.Middleware here
// run the server
port := ":8080"
fmt.Fprintf(os.Stdout, "🚀 Server ready at http://localhost%s\n", port)
fmt.Fprintln(os.Stderr, http.ListenAndServe(port, mux))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment