golang-template/cmd/main.go
Leo 43219268e9 feat: Add Sliding expiration for user_sessions
The user_session is valid for 24 hours, but the session will be bumped if it has been over an hour since the last update. An hour was set as a deadline, so that we would not update the user_session rows too often.
2026-08-17 23:47:11 +03:00

62 lines
1.5 KiB
Go

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() {
if err := godotenv.Load(); err != nil {
log.Println("No .env file found")
}
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)
mux := http.NewServeMux()
mux.Handle("GET /static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./ui/static"))))
mux.HandleFunc("GET /{$}", handler.HomeHandler)
mux.HandleFunc("GET /login", handler.LoginPageHandler)
mux.HandleFunc("/user", handler.UserHandler)
mux.HandleFunc("/signup", handler.SignUpPageHandler)
mux.HandleFunc("POST /api/login", handler.LoginHandler)
mux.HandleFunc("POST /api/logout", handler.LogoutHandler)
mux.HandleFunc("POST /api/signup", handler.SignUpHandler)
muxMiddleware := handlers.LoggingMiddleware(handlers.CORSMiddleware(mux))
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
}