Files
tp/main_dc/yalarba/api_yal/internal/domain/rating/router.go
T
valitovgaziz ba2e3b9545 On branch main
modified:   main_dc/yalarba/api_yal/internal/domain/rating/dto.go
	new file:   main_dc/yalarba/api_yal/internal/domain/rating/handler.go
	new file:   main_dc/yalarba/api_yal/internal/domain/rating/router.go
	new file:   main_dc/yalarba/api_yal/internal/domain/rating/service.go
	modified:   main_dc/yalarba/api_yal/internal/router/router.go
add raing domain without test
2026-05-20 13:23:38 +05:00

45 lines
1.6 KiB
Go

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)
})
})
}