cc3d0a8b07
modified: yalarba/api_yal/internal/domain/account/service.go modified: yalarba/api_yal/internal/domain/comment/dto.go new file: yalarba/api_yal/internal/domain/comment/handler.go new file: yalarba/api_yal/internal/domain/comment/router.go new file: yalarba/api_yal/internal/domain/comment/service.go modified: yalarba/api_yal/internal/repository/feedback_repository.go new file: yalarba/api_yal/internal/util/JSON_resp.go Realize comment domain hole
45 lines
1.5 KiB
Go
45 lines
1.5 KiB
Go
package comment
|
|
|
|
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 comment")
|
|
|
|
commentRepo := repository.NewCommentRepository(db)
|
|
commentService := NewCommentServiceImpl(commentRepo, db)
|
|
commentHandler := NewCommentHandler(commentService)
|
|
|
|
// Группируем маршруты для комментариев
|
|
r.Route("/comments", func(r chi.Router) {
|
|
// Публичные маршруты (не требуют аутентификации)
|
|
r.Get("/", commentHandler.ListComments)
|
|
r.Get("/stats", commentHandler.GetCommentStats)
|
|
r.Get("/{id}", commentHandler.GetCommentByID)
|
|
r.Get("/feedback/{feedbackID}", commentHandler.GetCommentsByFeedback)
|
|
r.Get("/replies/{parentID}", commentHandler.GetReplies)
|
|
|
|
// Защищенные маршруты (требуют аутентификации)
|
|
r.Group(func(r chi.Router) {
|
|
r.Use(middleware.AuthMiddleware(jwtSecret))
|
|
|
|
r.Post("/", commentHandler.CreateComment)
|
|
r.Put("/{id}", commentHandler.UpdateComment)
|
|
r.Delete("/{id}", commentHandler.DeleteComment)
|
|
r.Get("/my", commentHandler.GetMyComments)
|
|
|
|
// Маршруты для админов
|
|
r.Group(func(r chi.Router) {
|
|
r.Use(middleware.AdminOnlyMiddleware)
|
|
r.Put("/{id}/verify", commentHandler.VerifyComment)
|
|
})
|
|
})
|
|
})
|
|
} |