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
+21 -6
View File
@@ -21,8 +21,18 @@ import (
func main() { func main() {
_ = godotenv.Load() _ = 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")) databaseURL := strings.TrimSpace(os.Getenv("DATABASE_URL"))
if databaseURL == "" { if databaseURL == "" {
log.Fatal("DATABASE_URL is required") log.Fatal("DATABASE_URL is required")
@@ -31,16 +41,19 @@ func main() {
if err != nil { if err != nil {
log.Fatalf("database: %v", err) log.Fatalf("database: %v", err)
} }
defer st.Close()
log.Printf("database: postgres") log.Printf("database: postgres")
return st
}
uploader := spacesUploader() func logSpaces(uploader blob.Uploader) {
if uploader.Enabled() { if uploader.Enabled() {
log.Printf("avatars: digitalocean spaces") log.Printf("avatars: digitalocean spaces")
} else { return
}
log.Printf("avatars: uploads disabled (set SPACES_* to enable)") 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{ srv, err := web.New(st, st.SessionStore(), plumber.TemplateFS, plumber.StaticFS, web.Config{
AdminUsername: os.Getenv("ADMIN_USERNAME"), AdminUsername: os.Getenv("ADMIN_USERNAME"),
SecureCookie: os.Getenv("SECURE_COOKIE") == "1", SecureCookie: os.Getenv("SECURE_COOKIE") == "1",
@@ -49,11 +62,13 @@ func main() {
if err != nil { if err != nil {
log.Fatalf("server: %v", err) 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) errCh := make(chan error, 1)
go func() { go func() {
log.Printf("listening on %s", listen) log.Printf("listening on %s", httpSrv.Addr)
errCh <- httpSrv.ListenAndServe() errCh <- httpSrv.ListenAndServe()
}() }()