e4a1fcfd25
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
52 lines
2.5 KiB
Go
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
|
|
})
|
|
})
|
|
} |