Files
tp/main_dc/yalarba/api_es/internal/router/router.go
T
valitovgaziz 032ce66865 modified: main_dc/yalarba/api_es/cmd/main.go
modified:   main_dc/yalarba/api_es/internal/handler/all_handlers.go
	modified:   main_dc/yalarba/api_es/internal/handler/user_handler.go
	new file:   main_dc/yalarba/api_es/internal/router/router.go
add rounter, logger router
2025-11-12 05:59:14 +05:00

56 lines
1.4 KiB
Go

package router
import (
"api_es/internal/config"
"api_es/pkg/logger"
"encoding/json"
"net/http"
"api_es/internal/handler"
appMiddleware "api_es/internal/middleware"
"github.com/go-chi/chi/v5"
"gorm.io/gorm"
)
func SetupRouter(db *gorm.DB, config *config.Config) http.Handler {
zapLogger := logger.Get()
zapLogger.Debug("Start setup rounting")
r := chi.NewRouter()
// Initialize logger
baseLogger := logger.NewWrapper(logger.Get())
// Health check
r.Get("/health", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(map[string]string{"status": "healthy"})
})
h := handler.NewAllHandler(db, config)
r.Route("/auth", func(r chi.Router) {
r.Post("/register", h.UserHandler().Register)
r.Post("/login", h.UserHandler().Login)
})
r.Route("/users", func(r chi.Router) {
r.Use(appMiddleware.AuthMiddleware)
r.Get("/profile", h.UserHandler().GetProfile)
r.Put("/profile", h.UserHandler().UpdateProfile)
// Admin routes
r.With(appMiddleware.AdminMiddleware).Get("/", h.UserHandler().ListUsers)
r.With(appMiddleware.AdminMiddleware).Get("/{id}", h.UserHandler().GetUser)
})
zapLogger.Debug("End setup rounting")
// Логируем все зарегистрированные маршруты
routeLogger := logger.NewRouteLogger(baseLogger)
routeLogger.LogRoutes(r)
return r
}