|
|
package main
import ( "context" "fmt" "log" "net/http" "runtime/debug"
"git.aiterp.net/rpdata/api/graph2" "git.aiterp.net/rpdata/api/internal/auth" "git.aiterp.net/rpdata/api/internal/loader" "git.aiterp.net/rpdata/api/internal/store" logModel "git.aiterp.net/rpdata/api/model/log" "github.com/99designs/gqlgen/handler" )
func main() { err := store.Init() if err != nil { log.Fatalln("Failed to init store:", err) }
http.Handle("/", handler.Playground("RPData API", "/query")) http.Handle("/query", queryHandler())
go updateCharacters()
log.Fatal(http.ListenAndServe(":8081", nil)) }
func queryHandler() http.HandlerFunc { handler := handler.GraphQL( graph2.New(), handler.RecoverFunc(func(ctx context.Context, err interface{}) error { // send this panic somewhere
log.Println(err) log.Println(string(debug.Stack()))
return fmt.Errorf("shit") }), )
return func(w http.ResponseWriter, r *http.Request) { l := loader.New() r = r.WithContext(l.ToContext(r.Context()))
r = auth.RequestWithToken(r)
handler.ServeHTTP(w, r) } }
func updateCharacters() { n, err := logModel.UpdateAllCharacters() if err != nil { log.Println("Charcter updated stopped:", err) }
log.Println("Updated characters on", n, "logs") }
|