package main import ( "context" "log/slog" "net/http" "os" "github.com/go-chi/chi/v5" "gitlab.com/zephyrtronium/sq" "git.sunturtle.xyz/studio/shotgun/lobby" "git.sunturtle.xyz/studio/shotgun/player" "git.sunturtle.xyz/studio/shotgun/serve" _ "modernc.org/sqlite" ) var ( addr = os.Getenv("SHOTGUN_HTTP") public = os.Getenv("SHOTGUN_PUBLIC") ) func main() { sessiondb, err := sq.Open("sqlite", ":memory:") if err != nil { panic(err) } sessions, err := sessiondb.Conn(context.Background()) if err != nil { panic(err) } if err := player.InitSessions(context.Background(), sessions); err != nil { panic(err) } if err := player.InitUsers(context.Background(), sessions); err != nil { panic(err) } s := Server{ l: lobby.New(), creds: sessions, sessions: sessions, } r := chi.NewRouter() r.Post("/user/register", s.Register) r.Post("/user/login", s.Login) r.With(serve.WithSession(sessions)).Get("/user/me", s.Me) r.With(serve.WithSession(sessions)).Get("/queue", s.Queue) r.Method("GET", "/*", http.FileServer(http.Dir(public))) slog.Info("listening", "addr", addr, "public", public) http.ListenAndServe(addr, r) }