package main import ( "context" "log/slog" "net/http" "os" "training-tracker/internal/api" "training-tracker/internal/storage" ) func main() { logger := slog.New(slog.NewJSONHandler(os.Stdout, nil)) slog.SetDefault(logger) ctx := context.Background() db, err := storage.NewDB(ctx) if err != nil { slog.Error("failed to connect to database", "error", err) os.Exit(1) } defer db.Close() if err := db.Migrate(ctx); err != nil { slog.Error("failed to run migrations", "error", err) os.Exit(1) } slog.Info("database migrations completed") router := api.NewRouter(db) port := os.Getenv("PORT") if port == "" { port = "8080" } slog.Info("server starting", "port", port) if err := http.ListenAndServe(":"+port, router); err != nil { slog.Error("server failed", "error", err) os.Exit(1) } }