veza/veza-backend-api/internal/api/routes_analytics.go

60 lines
2.4 KiB
Go
Raw Normal View History

package api
import (
"github.com/gin-gonic/gin"
"veza-backend-api/internal/core/analytics"
"veza-backend-api/internal/services"
)
// setupAnalyticsRoutes configure les routes pour les analytics
func (r *APIRouter) setupAnalyticsRoutes(router *gin.RouterGroup) {
if r.db == nil || r.db.GormDB == nil {
return
}
analyticsService := services.NewAnalyticsService(r.db.GormDB, r.logger)
analyticsHandler := analytics.NewHandler(analyticsService, r.logger)
if r.config != nil && r.config.JobWorker != nil {
analyticsHandler.SetJobWorker(r.config.JobWorker)
}
analyticsGroup := router.Group("/analytics")
if r.config != nil && r.config.AuthMiddleware != nil {
analyticsGroup.Use(r.config.AuthMiddleware.RequireAuth())
r.applyCSRFProtection(analyticsGroup)
}
{
analyticsGroup.GET("/creator/stats", analyticsHandler.GetCreatorStats)
analyticsGroup.GET("/creator/charts", analyticsHandler.GetCreatorCharts)
analyticsGroup.GET("/creator/export", analyticsHandler.GetCreatorExport)
analyticsGroup.GET("", analyticsHandler.GetAnalytics)
analyticsGroup.POST("/events", analyticsHandler.RecordEvent)
analyticsGroup.GET("/tracks/:id", analyticsHandler.GetTrackAnalyticsDashboard)
analyticsGroup.GET("/traffic-sources", analyticsHandler.GetTrafficSources)
analyticsGroup.GET("/device-breakdown", analyticsHandler.GetDeviceBreakdown)
}
// v0.11.0: Creator Analytics (F381-F395)
creatorAnalyticsService := services.NewCreatorAnalyticsService(r.db.GormDB, r.logger)
creatorHandler := analytics.NewCreatorAnalyticsHandler(creatorAnalyticsService, r.logger)
creatorGroup := router.Group("/creator/analytics")
if r.config != nil && r.config.AuthMiddleware != nil {
creatorGroup.Use(r.config.AuthMiddleware.RequireAuth())
r.applyCSRFProtection(creatorGroup)
}
{
creatorGroup.GET("/dashboard", creatorHandler.GetDashboard) // F381
creatorGroup.GET("/plays", creatorHandler.GetPlayEvolution) // F382
creatorGroup.GET("/sales", creatorHandler.GetSales) // F383
creatorGroup.GET("/discovery", creatorHandler.GetDiscoverySources) // F381
creatorGroup.GET("/geographic", creatorHandler.GetGeographic) // F381
creatorGroup.GET("/audience", creatorHandler.GetAudience) // F384
creatorGroup.GET("/live/:streamId", creatorHandler.GetLiveMetrics) // F385
creatorGroup.GET("/tracks", creatorHandler.GetTracks) // F381
creatorGroup.GET("/export", creatorHandler.ExportAnalytics) // F383
}
}