Files
2026-04-29 14:27:16 +03:00

45 lines
1.1 KiB
Go

package handlers
import (
"net/http"
"github.com/gin-gonic/gin"
"gitea.d3m0k1d.ru/d3m0k1d/rostpoliplast/backend/internal/mq"
)
type QueueHandlers struct {
MQ *mq.RabbitMQ
}
func (h *QueueHandlers) RegisterRoutes(g *gin.RouterGroup) {
g.GET("/queue/next", h.GetNextTask)
}
// GetNextTask Получить следующую задачу из очереди
// @Summary Получить следующую задачу из очереди
// @Description Получает и удаляет из очереди следующую задачу (FIFO)
// @Tags queue
// @Accept json
// @Produce json
// @Success 200 {object} map[string]interface{}
// @Success 404 {object} map[string]string
// @Router /queue/next [get]
func (h *QueueHandlers) GetNextTask(c *gin.Context) {
if h.MQ == nil {
c.JSON(http.StatusServiceUnavailable, gin.H{"error": "rabbitmq not available"})
return
}
data, err := h.MQ.Consume()
if err != nil {
c.JSON(http.StatusNotFound, gin.H{"error": "no messages in queue"})
return
}
c.JSON(http.StatusOK, gin.H{
"data": string(data),
"success": true,
})
}