package rating import ( "api_yal/internal/logger" "api_yal/internal/middleware" "api_yal/internal/repository" "github.com/go-chi/chi/v5" "gorm.io/gorm" ) // RegisterRoutes регистрирует маршруты для рейтингов func RegisterRoutes(r chi.Router, db *gorm.DB, jwtSecret string) { l := logger.Get() l.Info("Registering routes for rating") ratingRepo := repository.NewRatingRepository(db) ratingService := NewRatingServiceImpl(ratingRepo, db) ratingHandler := NewRatingHandler(ratingService) // Группируем маршруты для рейтингов r.Route("/ratings", func(r chi.Router) { // Публичные маршруты (не требуют аутентификации) r.Get("/", ratingHandler.ListRatings) r.Get("/stats", ratingHandler.GetRatingStats) r.Get("/{id}", ratingHandler.GetRatingByID) r.Get("/object/{objectID}/platform/{platform}", ratingHandler.GetRatingByObjectAndPlatform) // Защищенные маршруты (требуют аутентификации) r.Group(func(r chi.Router) { r.Use(middleware.AuthMiddleware(jwtSecret)) // CRUD операции с рейтингами r.Post("/", ratingHandler.CreateRating) r.Put("/{id}", ratingHandler.UpdateRating) r.Delete("/{id}", ratingHandler.DeleteRating) // Голосование r.Post("/{targetID}/vote/{platform}", ratingHandler.Vote) r.Get("/{targetID}/my-vote/{platform}", ratingHandler.GetMyVote) r.Put("/{targetID}/my-vote/{platform}", ratingHandler.UpdateMyVote) r.Delete("/{targetID}/my-vote/{platform}", ratingHandler.DeleteMyVote) }) }) }