Files
tp/main_dc/yalarba/api_yal/internal/domain/feetback/router.go
T
valitovgaziz e4a1fcfd25 On branch main
modified:   main_dc/yalarba/api_yal/internal/domain/feetback/dto.go
	modified:   main_dc/yalarba/api_yal/internal/domain/feetback/handler.go
	modified:   main_dc/yalarba/api_yal/internal/domain/feetback/router.go
	modified:   main_dc/yalarba/api_yal/internal/domain/feetback/service.go
feedback domain is almost ready
2026-05-19 13:19:47 +05:00

52 lines
2.5 KiB
Go

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)
feedbackHandler := NewFeedbackHandler(feedbackService)
// Группируем маршруты для отзывов
r.Route("/feedbacks", func(r chi.Router) {
// Публичные маршруты (не требуют аутентификации)
r.Get("/", feedbackHandler.ListFeedbacks) // GET /api/v1/feedbacks
r.Get("/search", feedbackHandler.SearchFeedbacks) // GET /api/v1/feedbacks/search?q=query
r.Get("/{id}", feedbackHandler.GetFeedbackByID) // GET /api/v1/feedbacks/{id}
// Маршруты для фильтрации
r.Get("/object/{objectID}", feedbackHandler.GetFeedbacksByObject) // GET /api/v1/feedbacks/object/{objectID}
r.Get("/platform/{platform}", feedbackHandler.GetFeedbacksByPlatform) // GET /api/v1/feedbacks/platform/{platform}
// Маршруты для комментариев (публичные)
r.Get("/{id}/comments", feedbackHandler.GetFeedbackComments) // GET /api/v1/feedbacks/{id}/comments
// Защищенные маршруты (требуют аутентификации)
r.Group(func(r chi.Router) {
// Здесь можно добавить middleware для проверки JWT токена
r.Use(middleware.AuthMiddleware(jwtSecret))
r.Post("/", feedbackHandler.CreateFeedback) // POST /api/v1/feedbacks
r.Put("/{id}", feedbackHandler.UpdateFeedback) // PUT /api/v1/feedbacks/{id}
r.Delete("/{id}", feedbackHandler.DeleteFeedback) // DELETE /api/v1/feedbacks/{id}
// Маршруты для комментариев (требуют аутентификации)
r.Post("/{id}/comments", feedbackHandler.AddComment) // POST /api/v1/feedbacks/{id}/comments
r.Put("/{id}/comments/{commentID}", feedbackHandler.UpdateComment) // PUT /api/v1/feedbacks/{id}/comments/{commentID}
r.Delete("/{id}/comments/{commentID}", feedbackHandler.DeleteComment) // DELETE /api/v1/feedbacks/{id}/comments/{commentID}
// Маршруты для владельца (получение своих отзывов)
r.Get("/my", feedbackHandler.GetMyFeedbacks) // GET /api/v1/feedbacks/my
})
})
}