package object 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.Debug("Регистрация маршрутов объектов") objectRepo := repository.NewObjectRepository(db) objectService := NewObjectService(objectRepo) objectHandler := NewObjectHandler(objectService) // Публичные маршруты (не требуют аутентификации) r.Group(func(r chi.Router) { r.Get("/objects", objectHandler.ListObjects) r.Get("/objects/search", objectHandler.SearchObjects) r.Get("/objects/nearby", objectHandler.GetNearbyObjects) r.Get("/objects/{id}", objectHandler.GetObjectByID) r.Get("/objects/owner/{ownerId}", objectHandler.GetObjectsByOwner) }) // Защищенные маршруты (требуют аутентификации) r.Group(func(r chi.Router) { r.Use(middleware.AuthMiddleware(jwtSecret)) // CRUD для объектов r.Post("/objects", objectHandler.CreateObject) r.Put("/objects/{id}", objectHandler.UpdateObject) r.Delete("/objects/{id}", objectHandler.DeleteObject) // Отзывы r.Post("/objects/{id}/feedbacks", objectHandler.CreateFeedback) // Рейтинги r.Post("/objects/{id}/ratings", objectHandler.CreateRatingVote) }) l.Debug("Маршруты объектов зарегистрированы") }