package main import ( "log" "net/http" "os" "github.com/joho/godotenv" "workorders/internal/api" "workorders/internal/config" "workorders/internal/repository" ) func main() { // Load .env if present (ignored in production containers where env is injected) if _, err := os.Stat(".env"); err == nil { if err := godotenv.Load(); err != nil { log.Printf("warning: could not load .env: %v", err) } } cfg := config.Load() log.Printf("connecting to database...") db, err := repository.Connect(cfg.DBDSN) if err != nil { log.Fatalf("database connect: %v", err) } defer db.Close() log.Printf("running migrations...") if err := repository.RunMigrations(db); err != nil { log.Fatalf("migrations: %v", err) } log.Printf("fetching JWKS from %s", cfg.JWKSUrl) api.InitJWKS(cfg.JWKSUrl) r := api.NewRouter(cfg, db) log.Printf("listening on %s", cfg.Addr) if err := http.ListenAndServe(cfg.Addr, r); err != nil { log.Fatal(err) } }