Files
rooms/main.go

51 lines
979 B
Go
Raw Normal View History

package main
import (
"database/sql"
_ "embed"
"fmt"
"log"
"net/http"
"os"
_ "github.com/lib/pq"
)
//go:embed schema.sql
var schema string
func main() {
dsn := os.Getenv("PGCONN")
if dsn == "" {
log.Fatal("PGCONN environment variable is required")
}
db, err := sql.Open("postgres", dsn)
if err != nil {
log.Fatalf("failed to open database: %v", err)
}
defer db.Close()
if err := db.Ping(); err != nil {
log.Fatalf("failed to connect to database: %v", err)
}
log.Println("connected to database")
if _, err := db.Exec(schema); err != nil {
log.Fatalf("failed to apply schema: %v", err)
}
http.Handle("/", http.FileServer(http.Dir("static")))
http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
if err := db.Ping(); err != nil {
http.Error(w, "db unhealthy", http.StatusServiceUnavailable)
return
}
fmt.Fprintln(w, "ok")
})
log.Println("listening on :8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}