package comment import ( "api_yal/internal/logger" "api_yal/internal/middleware" "api_yal/internal/repository" "github.com/go-chi/chi/v5" "gorm.io/gorm" ) func RegisterRoutes(r chi.Router, db *gorm.DB, jwtSecret string) { l := logger.Get() l.Info("Registering routes for comment") commentRepo := repository.NewCommentRepository(db) commentService := NewCommentServiceImpl(commentRepo, db) commentHandler := NewCommentHandler(commentService) // Группируем маршруты для комментариев r.Route("/comments", func(r chi.Router) { // Публичные маршруты (не требуют аутентификации) r.Get("/", commentHandler.ListComments) r.Get("/stats", commentHandler.GetCommentStats) r.Get("/{id}", commentHandler.GetCommentByID) r.Get("/feedback/{feedbackID}", commentHandler.GetCommentsByFeedback) r.Get("/replies/{parentID}", commentHandler.GetReplies) // Защищенные маршруты (требуют аутентификации) r.Group(func(r chi.Router) { r.Use(middleware.AuthMiddleware(jwtSecret)) r.Post("/", commentHandler.CreateComment) r.Put("/{id}", commentHandler.UpdateComment) r.Delete("/{id}", commentHandler.DeleteComment) r.Get("/my", commentHandler.GetMyComments) // Маршруты для админов r.Group(func(r chi.Router) { r.Use(middleware.AdminOnlyMiddleware) r.Put("/{id}/verify", commentHandler.VerifyComment) }) }) }) }