ba2e3b9545
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
45 lines
1.6 KiB
Go
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)
|
|
})
|
|
})
|
|
} |