package api import ( "github.com/gin-gonic/gin" "veza-backend-api/internal/handlers" "veza-backend-api/internal/repositories" "veza-backend-api/internal/services" ) // setupGearRoutes configure les routes d'inventaire gear/équipement func (r *APIRouter) setupGearRoutes(router *gin.RouterGroup) { if r.config == nil || r.config.AuthMiddleware == nil { return } gearRepo := repositories.NewGearRepository(r.db.GormDB) gearService := services.NewGearService(gearRepo, r.logger) gearHandler := handlers.NewGearHandler(gearService, r.logger) gearDocService := services.NewGearDocumentService(r.db.GormDB, r.config.S3StorageService, r.logger) gearHandler.SetGearDocumentService(gearDocService) // G1-01: Public gear profile (no auth) router.GET("/users/:id/gear", gearHandler.ListPublicGear) inventory := router.Group("/inventory") inventory.Use(r.config.AuthMiddleware.RequireAuth()) r.applyCSRFProtection(inventory) { inventory.GET("/gear", gearHandler.ListGear) inventory.POST("/gear", gearHandler.CreateGear) inventory.GET("/gear/:id", gearHandler.GetGear) inventory.PUT("/gear/:id", gearHandler.UpdateGear) inventory.DELETE("/gear/:id", gearHandler.DeleteGear) inventory.POST("/gear/:id/images", gearHandler.UploadGearImage) inventory.DELETE("/gear/:id/images/:img_id", gearHandler.DeleteGearImage) inventory.POST("/gear/:id/documents", gearHandler.UploadGearDocument) inventory.GET("/gear/:id/documents", gearHandler.ListGearDocuments) inventory.DELETE("/gear/:id/documents/:docId", gearHandler.DeleteGearDocument) inventory.POST("/gear/:id/repairs", gearHandler.CreateGearRepair) inventory.GET("/gear/:id/repairs", gearHandler.ListGearRepairs) inventory.DELETE("/gear/:id/repairs/:repairId", gearHandler.DeleteGearRepair) } }