package main import ( "log" "net/http" "os" "go-backend/internal/database" "go-backend/internal/database/sqlc" "go-backend/internal/handlers" "go-backend/internal/services" "github.com/joho/godotenv" ) func main() { // Load .env file if err := godotenv.Load(); err != nil { log.Println("No .env file found") } // Connect to database db, err := database.Connect() if err != nil { log.Fatal("Failed to connect to database:", err) } defer db.Close() queries := sqlc.New(db) userService := services.NewUserService(db, queries) authService := services.NewAuthService(db, queries) handler := handlers.NewHandler(userService, authService) // Create router mux := http.NewServeMux() // Routes mux.HandleFunc("/login", handler.LoginHandler) mux.HandleFunc("/user", handler.UserHandler) // Apply middleware (CORS first, then logging) muxMiddleware := handlers.LoggingMiddleware(handlers.CORSMiddleware(mux)) // Start server port := getEnv("PORT", "8080") log.Printf("Server starting on port %s", port) if err := http.ListenAndServe(":"+port, muxMiddleware); err != nil { log.Fatal("Server failed to start:", err) } } func getEnv(key, defaultValue string) string { if value := os.Getenv(key); value != "" { return value } return defaultValue }