package api import ( "github.com/gin-gonic/gin" "veza-backend-api/internal/core/distribution" "veza-backend-api/internal/core/subscription" "veza-backend-api/internal/handlers" ) // setupDistributionRoutes configures routes for track distribution to external platforms (v0.12.2) func (r *APIRouter) setupDistributionRoutes(router *gin.RouterGroup) { subSvc := subscription.NewService(r.db.GormDB, r.logger) svc := distribution.NewService(r.db.GormDB, r.logger, subSvc) handler := handlers.NewDistributionHandler(svc, r.logger) if r.config.AuthMiddleware == nil { return } // Distribution management (requires auth) distGroup := router.Group("/distributions") distGroup.Use(r.config.AuthMiddleware.RequireAuth()) r.applyCSRFProtection(distGroup) distGroup.POST("/submit", handler.Submit) distGroup.GET("", handler.ListDistributions) distGroup.GET("/:id", handler.GetDistribution) distGroup.GET("/:id/status-history", handler.GetStatusHistory) distGroup.POST("/:id/remove", handler.RemoveDistribution) // Track-specific distribution view trackDistGroup := router.Group("/tracks") trackDistGroup.Use(r.config.AuthMiddleware.RequireAuth()) trackDistGroup.GET("/:track_id/distributions", handler.GetTrackDistributions) // External royalties (creator view) creatorGroup := router.Group("/creators/me") creatorGroup.Use(r.config.AuthMiddleware.RequireAuth()) creatorGroup.GET("/external-royalties", handler.GetExternalRoyalties) }