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
This commit is contained in:
2025-11-12 05:59:14 +05:00
parent 1c74d12df6
commit 032ce66865
4 changed files with 92 additions and 11 deletions
+3 -8
View File
@@ -1,15 +1,14 @@
package main
import (
"encoding/json"
"log"
"net/http"
"api_es/internal/config"
"api_es/internal/database"
"api_es/internal/router"
"api_es/pkg/logger"
"github.com/go-chi/chi/v5"
"go.uber.org/zap"
"gorm.io/gorm"
)
@@ -40,13 +39,9 @@ func main() {
}
zapLogger.Info("database ping successful")
r := chi.NewRouter()
// 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"})
})
zapLogger.Info("setup router")
r := router.SetupRouter(db, cfg)
// Запуск сервера
zapLogger.Info("Server starting on port %s", zap.String("AppPort", cfg.AppPort))
@@ -1 +1,33 @@
package handler
package handler
import (
"api_es/internal/config"
"api_es/internal/repository"
"api_es/internal/service"
"api_es/internal/utils"
"gorm.io/gorm"
)
type AllHandler struct {
userHandler *UserHandler
}
func NewAllHandler(db *gorm.DB, cfg *config.Config) *AllHandler {
userRepo := repository.NewUserRepository(db)
userService := service.NewUserService(userRepo, utils.NewJWTUtil(cfg.JWTSecret))
userHandler := NewUserHandler(userService)
return &AllHandler{
userHandler: userHandler,
}
}
func (h *AllHandler) UserHandler() *UserHandler {
return h.userHandler
}
@@ -231,8 +231,7 @@ func (h *UserHandler) ListUsers(w http.ResponseWriter, r *http.Request) {
json.NewEncoder(w).Encode(users)
}
func (h *UserHandler) Routes() chi.Router {
r := chi.NewRouter()
func (h *UserHandler) Routes(r chi.Router) chi.Router {
r.Route("/auth", func(r chi.Router) {
r.Post("/register", h.Register)
@@ -0,0 +1,55 @@
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
}