package main import ( "log" "net/http" "os" "os/signal" "syscall" "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" ) const defaultPort = "8080" func main() { port := os.Getenv("PORT") if port == "" { port = defaultPort } 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") }