veza/veza-backend-api/internal/api/routes_gear.go
senke a3624ce4b3 feat(v0.802): frontend Cloud/Gear, MSW, docs, scope v0.803, archive
- Cloud: CloudFileVersions, CloudShareModal, versions/share in CloudView
- Gear: GearDocumentsTab, GearRepairsTab, warranty badge, initialTab
- MSW: cloud versions/share, gear documents/repairs, tags suggest
- Stories: CloudFileVersions, CloudShareModal, GearDetailModal variants
- gearService: listDocuments, uploadDocument, deleteDocument, listRepairs, createRepair, deleteRepair
- cloudService: listVersions, restoreVersion, shareFile, getSharedFile
- gear_warranty_notifier: 24h ticker, notifications for expiring warranty
- tag_handler_test: unit tests
- docs: API_REFERENCE, CHANGELOG, PROJECT_STATE, FEATURE_STATUS v0.802
- SCOPE_CONTROL, .cursorrules: scope v0.803
- archive: V0_802_RELEASE_SCOPE, RETROSPECTIVE_V0802
2026-02-25 14:00:58 +01:00

45 lines
1.7 KiB
Go

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)
}
}