58 lines
1.4 KiB
Go
58 lines
1.4 KiB
Go
package handlers
|
|
|
|
import (
|
|
"github.com/drama-generator/backend/application/services"
|
|
"github.com/drama-generator/backend/pkg/logger"
|
|
"github.com/drama-generator/backend/pkg/response"
|
|
"github.com/gin-gonic/gin"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type TaskHandler struct {
|
|
taskService *services.TaskService
|
|
log *logger.Logger
|
|
}
|
|
|
|
func NewTaskHandler(db *gorm.DB, log *logger.Logger) *TaskHandler {
|
|
return &TaskHandler{
|
|
taskService: services.NewTaskService(db, log),
|
|
log: log,
|
|
}
|
|
}
|
|
|
|
// GetTaskStatus 获取任务状态
|
|
func (h *TaskHandler) GetTaskStatus(c *gin.Context) {
|
|
taskID := c.Param("task_id")
|
|
|
|
task, err := h.taskService.GetTask(taskID)
|
|
if err != nil {
|
|
if err == gorm.ErrRecordNotFound {
|
|
response.NotFound(c, "任务不存在")
|
|
return
|
|
}
|
|
h.log.Errorw("Failed to get task", "error", err, "task_id", taskID)
|
|
response.InternalError(c, err.Error())
|
|
return
|
|
}
|
|
|
|
response.Success(c, task)
|
|
}
|
|
|
|
// GetResourceTasks 获取资源相关的所有任务
|
|
func (h *TaskHandler) GetResourceTasks(c *gin.Context) {
|
|
resourceID := c.Query("resource_id")
|
|
if resourceID == "" {
|
|
response.BadRequest(c, "缺少resource_id参数")
|
|
return
|
|
}
|
|
|
|
tasks, err := h.taskService.GetTasksByResource(resourceID)
|
|
if err != nil {
|
|
h.log.Errorw("Failed to get resource tasks", "error", err, "resource_id", resourceID)
|
|
response.InternalError(c, err.Error())
|
|
return
|
|
}
|
|
|
|
response.Success(c, tasks)
|
|
}
|