Split main into openStore, newHandler, and run helpers.

This commit is contained in:
2026-08-21 23:43:01 -07:00
parent 3391cce7bd
commit 3eb75cfd80
+22 -7
View File
@@ -21,8 +21,18 @@ import (
func main() {
_ = godotenv.Load()
listen := listenAddr()
st := openStore()
defer st.Close()
uploader := spacesUploader()
logSpaces(uploader)
handler := newHandler(st, uploader)
run(&http.Server{Addr: listenAddr(), Handler: handler})
}
func openStore() *store.Store {
databaseURL := strings.TrimSpace(os.Getenv("DATABASE_URL"))
if databaseURL == "" {
log.Fatal("DATABASE_URL is required")
@@ -31,16 +41,19 @@ func main() {
if err != nil {
log.Fatalf("database: %v", err)
}
defer st.Close()
log.Printf("database: postgres")
return st
}
uploader := spacesUploader()
func logSpaces(uploader blob.Uploader) {
if uploader.Enabled() {
log.Printf("avatars: digitalocean spaces")
} else {
log.Printf("avatars: uploads disabled (set SPACES_* to enable)")
return
}
log.Printf("avatars: uploads disabled (set SPACES_* to enable)")
}
func newHandler(st *store.Store, uploader blob.Uploader) http.Handler {
srv, err := web.New(st, st.SessionStore(), plumber.TemplateFS, plumber.StaticFS, web.Config{
AdminUsername: os.Getenv("ADMIN_USERNAME"),
SecureCookie: os.Getenv("SECURE_COOKIE") == "1",
@@ -49,11 +62,13 @@ func main() {
if err != nil {
log.Fatalf("server: %v", err)
}
return srv.Handler()
}
httpSrv := &http.Server{Addr: listen, Handler: srv.Handler()}
func run(httpSrv *http.Server) {
errCh := make(chan error, 1)
go func() {
log.Printf("listening on %s", listen)
log.Printf("listening on %s", httpSrv.Addr)
errCh <- httpSrv.ListenAndServe()
}()