package feetback 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 feetback") feedbackRepo := repository.NewFeedbackRepository(db) feedbackService := NewFeedbackServiceImpl(feedbackRepo, db) feedbackHandler := NewFeedbackHandler(feedbackService) // Группируем маршруты для отзывов r.Route("/feedbacks", func(r chi.Router) { // Публичные маршруты (не требуют аутентификации) r.Get("/", feedbackHandler.ListFeedbacks) r.Get("/search", feedbackHandler.SearchFeedbacks) r.Get("/stats", feedbackHandler.GetFeedbackStats) // Новый эндпоинт r.Get("/{id}", feedbackHandler.GetFeedbackByID) r.Get("/object/{objectID}", feedbackHandler.GetFeedbacksByObject) r.Get("/platform/{platform}", feedbackHandler.GetFeedbacksByPlatform) r.Get("/{id}/comments", feedbackHandler.GetFeedbackComments) // Защищенные маршруты (требуют аутентификации) r.Group(func(r chi.Router) { r.Use(middleware.AuthMiddleware(jwtSecret)) r.Post("/", feedbackHandler.CreateFeedback) r.Put("/{id}", feedbackHandler.UpdateFeedback) r.Delete("/{id}", feedbackHandler.DeleteFeedback) r.Get("/my", feedbackHandler.GetMyFeedbacks) // Маршруты для комментариев r.Post("/{id}/comments", feedbackHandler.AddComment) r.Put("/{id}/comments/{commentID}", feedbackHandler.UpdateComment) r.Delete("/{id}/comments/{commentID}", feedbackHandler.DeleteComment) }) }) }