package main import ( "log" "net/http" "os" "os/signal" "syscall" "git.xenrox.net/~xenrox/10man-api/config" "git.xenrox.net/~xenrox/10man-api/database" "git.xenrox.net/~xenrox/10man-api/graph" "git.xenrox.net/~xenrox/10man-api/graph/generated" "github.com/99designs/gqlgen/graphql/handler" ) func main() { port := os.Getenv("PORT") if port == "" { port = config.Port } sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) err := database.Open() if err != nil { log.Fatal(err) } srv := handler.NewDefaultServer(generated.NewExecutableSchema(generated.Config{Resolvers: &graph.Resolver{}})) http.Handle("/query", srv) go func() { log.Fatal(http.ListenAndServe(":"+port, nil)) }() shutdown(<-sigs) } func shutdown(sig os.Signal) { database.Close() log.Println("API was shut down") }