nidus-sync/main.go

73 lines
1.6 KiB
Go
Raw Normal View History

package main
import (
2025-11-04 23:11:32 +00:00
"context"
"log"
"net/http"
"os"
"time"
"github.com/alexedwards/scs/pgxstore"
"github.com/alexedwards/scs/v2"
"github.com/go-chi/chi/v5"
"github.com/go-chi/chi/v5/middleware"
)
var sessionManager *scs.SessionManager
var BaseURL, ClientID, ClientSecret string
func main() {
ClientID = os.Getenv("ARCGIS_CLIENT_ID")
if ClientID == "" {
2025-11-04 23:11:32 +00:00
log.Println("You must specify a non-empty ARCGIS_CLIENT_ID")
os.Exit(1)
}
ClientSecret = os.Getenv("ARCGIS_CLIENT_SECRET")
if ClientSecret == "" {
2025-11-04 23:11:32 +00:00
log.Println("You must specify a non-empty ARCGIS_CLIENT_SECRET")
os.Exit(1)
}
BaseURL = os.Getenv("BASE_URL")
if BaseURL == "" {
log.Println("You must specify a non-empty BASE_URL")
os.Exit(1)
}
bind := os.Getenv("BIND")
if bind == "" {
bind = ":9001"
}
2025-11-04 23:11:32 +00:00
pg_dsn := os.Getenv("POSTGRES_DSN")
if pg_dsn == "" {
log.Println("You must specify a non-empty POSTGRES_DSN")
os.Exit(1)
}
log.Println("Starting...")
2025-11-04 23:11:32 +00:00
err := initializeDatabase(context.TODO(), pg_dsn)
if err != nil {
log.Printf("Failed to connect to database: %v", err)
os.Exit(2)
}
sessionManager = scs.New()
sessionManager.Store = pgxstore.New(PGInstance.PGXPool)
sessionManager.Lifetime = 24 * time.Hour
r := chi.NewRouter()
r.Use(middleware.Logger)
r.Use(sessionManager.LoadAndSave)
r.Get("/", getRoot)
2025-11-05 21:05:10 +00:00
r.Get("/report", getReport)
r.Post("/signin", postSignin)
2025-11-04 00:02:51 +00:00
r.Get("/signup", getSignup)
r.Post("/signup", postSignup)
r.Get("/favicon.ico", getFavicon)
localFS := http.Dir("./static")
FileServer(r, "/static", localFS, embeddedStaticFS, "static")
log.Printf("Serving on %s", bind)
log.Fatal(http.ListenAndServe(bind, r))
}