package api import ( "context" "net/http" "git.dubyatp.xyz/dubyatp/scannerbot/server/db" "github.com/go-chi/chi/v5" ) func Start() { ctx := context.Background() db.InitPostgres(ctx) defer db.ClosePostgres() r := chi.NewRouter() r.Get("/", func(w http.ResponseWriter, r *http.Request) { w.Write([]byte("hello world")) }) r.Route("/whoami", func(r chi.Router) { r.Use(SessionAuthMiddleware) r.Use(LoginCtx) r.Get("/", Whoami) }) r.Route("/channels", func(r chi.Router) { r.Use(SessionAuthMiddleware) r.Get("/", ListChannels) r.Post("/", NewChannel) r.Route("/{channelID}", func(r chi.Router) { r.Get("/", GetChannel) r.Delete("/", DeleteChannel) }) }) r.Route("/users", func(r chi.Router) { r.Use(SessionAuthMiddleware) r.Get("/", ListUsers) r.Route("/{userID}", func(r chi.Router) { r.Get("/", GetUser) }) }) r.Route("/login", func(r chi.Router) { r.Post("/", Login) }) r.Route("/logout", func(r chi.Router) { r.Use(SessionAuthMiddleware) r.Post("/", Logout) }) r.Route("/register", func(r chi.Router) { r.Post("/", NewUser) }) http.ListenAndServe(":3000", r) }