42 lines
1.5 KiB
Go
42 lines
1.5 KiB
Go
package api
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
|
|
"veza-backend-api/internal/handlers"
|
|
"veza-backend-api/internal/services"
|
|
)
|
|
|
|
// setupQueueRoutes configures the user playback queue routes
|
|
func (r *APIRouter) setupQueueRoutes(router *gin.RouterGroup) {
|
|
if r.config == nil || r.config.AuthMiddleware == nil {
|
|
return
|
|
}
|
|
queueService := services.NewQueueService(r.db.GormDB, r.logger)
|
|
queueHandler := handlers.NewQueueHandler(queueService, r.logger)
|
|
queueSessionService := services.NewQueueSessionService(r.db.GormDB)
|
|
queueSessionHandler := handlers.NewQueueSessionHandler(queueSessionService, r.logger)
|
|
|
|
queue := router.Group("/queue")
|
|
queue.Use(r.config.AuthMiddleware.RequireAuth())
|
|
r.applyCSRFProtection(queue)
|
|
{
|
|
queue.GET("", queueHandler.GetQueue)
|
|
queue.PUT("", queueHandler.UpdateQueue)
|
|
queue.POST("/items", queueHandler.AddQueueItem)
|
|
queue.DELETE("/items/:id", queueHandler.RemoveQueueItem)
|
|
queue.DELETE("", queueHandler.ClearQueue)
|
|
|
|
// v0.203 Lot D1: Collaborative queue sessions
|
|
queue.POST("/session", queueSessionHandler.CreateSession)
|
|
queue.DELETE("/session/:token", queueSessionHandler.DeleteSession)
|
|
queue.POST("/session/:token/items", queueSessionHandler.AddToSession)
|
|
queue.DELETE("/session/:token/items/:id", queueSessionHandler.RemoveFromSession)
|
|
}
|
|
|
|
// GET /queue/session/:token - auth optional (for joining via share link)
|
|
queuePublic := router.Group("/queue")
|
|
{
|
|
queuePublic.GET("/session/:token", queueSessionHandler.GetSession)
|
|
}
|
|
}
|