/
AngelCareMe
/
task_queue
Обзор
Документация
Войти
/
AngelCareMe
/
task_queue
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
internal/handler/router.go
70 строк
2 KB
AngelCareMe
done
28 июл 2025, 21:07
28 июл 2025, 21:07
c70014b
Код
Авторство
О чём код?
package handler import ( "task-queue/internal/handler/health" "task-queue/internal/handler/metrics" "task-queue/internal/handler/middleware" "task-queue/internal/handler/task" "task-queue/internal/service" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" ) func SetupRouter( taskService service.TaskService, healthService service.HealthService, metricsService service.MetricsService, ) *gin.Engine { // create gin engine r := gin.New() // add middleware r.Use(middleware.Logging()) r.Use(middleware.CORS()) r.Use(gin.Recovery()) // create handlers taskHandler := task.NewHandler(taskService) healthHandler := health.NewHandler(healthService) metricsHandler := metrics.NewHandler(metricsService) // api routes api := r.Group("/api/v1") { // task routes tasks := api.Group("/tasks") { tasks.POST("", taskHandler.CreateTask) tasks.GET("", taskHandler.ListTasks) tasks.GET("/:id", taskHandler.GetTask) tasks.POST("/:id/retry", taskHandler.RetryTask) tasks.DELETE("/:id", taskHandler.DeleteTask) tasks.GET("/stats", taskHandler.GetTaskStats) } // health routes api.GET("/health", healthHandler.CheckHealth) // metrics routes metricsGroup := api.Group("/metrics") { metricsGroup.GET("", metricsHandler.GetMetrics) metricsGroup.GET("/tasks", metricsHandler.GetTaskMetrics) } } // swagger routes r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) // root route r.GET("/", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "Task Queue API", "version": "1.0.0", }) }) return r }