chore: adjust grom find 1 sql

This commit is contained in:
engigu
2026-03-23 12:04:29 +08:00
parent ec2cd7d116
commit d396e1629f
20 changed files with 87 additions and 52 deletions
+10 -5
View File
@@ -614,7 +614,8 @@ func (es *ExecutorService) ExecuteTask(taskID string, extraEnvs []string) *execu
// StopTaskExecution stops a running task execution by LogID
func (es *ExecutorService) StopTaskExecution(logID string) error {
var taskLog models.TaskLog
if err := database.DB.Where("id = ?", logID).First(&taskLog).Error; err != nil {
res := database.DB.Where("id = ?", logID).Limit(1).Find(&taskLog)
if res.Error != nil || res.RowsAffected == 0 {
return fmt.Errorf("日志不存在")
}
@@ -747,7 +748,8 @@ func (es *ExecutorService) CleanupRunningTasks() error {
// CheckConcurrency 检查任务并发限制(只读检查)
func (es *ExecutorService) CheckConcurrency(taskID string) error {
var task models.Task
if err := database.DB.Select("config, running_go").Where("id = ?", taskID).First(&task).Error; err != nil {
res := database.DB.Select("config, running_go").Where("id = ?", taskID).Limit(1).Find(&task)
if res.Error != nil || res.RowsAffected == 0 {
return err
}
var goids []int64
@@ -773,7 +775,8 @@ func (es *ExecutorService) AddRunningGo(taskID string) (int64, error) {
for attempt := 0; attempt < 3; attempt++ {
lastErr = database.DB.Transaction(func(tx *gorm.DB) error {
var task models.Task
if err := tx.Where("id = ?", taskID).First(&task).Error; err != nil {
res := tx.Where("id = ?", taskID).Limit(1).Find(&task)
if res.Error != nil || res.RowsAffected == 0 {
return err
}
var goids []int64
@@ -814,7 +817,8 @@ func (es *ExecutorService) RemoveRunningGo(taskID string, goid int64) {
for attempt := 0; attempt < 3; attempt++ {
err := database.DB.Transaction(func(tx *gorm.DB) error {
var task models.Task
if err := tx.Where("id = ?", taskID).First(&task).Error; err != nil {
res := tx.Where("id = ?", taskID).Limit(1).Find(&task)
if res.Error != nil || res.RowsAffected == 0 {
return err
}
var goids []int64
@@ -844,7 +848,8 @@ func (es *ExecutorService) ExecuteRemoteForScheduler(task *models.Task, logID st
// 1. 检查 Agent 状态
var agent models.Agent
if err := database.DB.Where("id = ?", agentID).First(&agent).Error; err != nil {
res := database.DB.Where("id = ?", agentID).Limit(1).Find(&agent)
if res.Error != nil || res.RowsAffected == 0 {
return nil, fmt.Errorf("Agent #%s 不存在", agentID)
}
if !agent.Enabled {
+2 -1
View File
@@ -38,7 +38,8 @@ func ParseRepoScriptsAndAddCron(es *ExecutorService, taskID string, logWriter io
}
var repoTask models.Task
if err := database.DB.Where("id = ?", taskID).First(&repoTask).Error; err != nil {
res := database.DB.Where("id = ?", taskID).Limit(1).Find(&repoTask)
if res.Error != nil || res.RowsAffected == 0 {
return
}
+4 -3
View File
@@ -95,7 +95,8 @@ func (s *TaskLogService) UpdateTaskStats(taskID string, status string) {
// CleanTaskLogs 清理任务日志
func (s *TaskLogService) CleanTaskLogs(taskID string) {
var task models.Task
if err := database.DB.Where("id = ?", taskID).First(&task).Error; err != nil {
res := database.DB.Where("id = ?", taskID).Limit(1).Find(&task)
if res.Error != nil || res.RowsAffected == 0 {
return
}
@@ -121,8 +122,8 @@ func (s *TaskLogService) CleanTaskLogs(taskID string) {
deleted = result.RowsAffected
case "count":
var boundaryLog models.TaskLog
err := database.DB.Where("task_id = ?", taskID).Order("id DESC").Offset(config.Keep - 1).Limit(1).First(&boundaryLog).Error
if err == nil {
res := database.DB.Where("task_id = ?", taskID).Order("id DESC").Offset(config.Keep - 1).Limit(1).Find(&boundaryLog)
if res.Error == nil && res.RowsAffected > 0 {
result := database.DB.Where("task_id = ? AND id < ?", taskID, boundaryLog.ID).Delete(&models.TaskLog{})
deleted = result.RowsAffected
}
+6 -3
View File
@@ -15,7 +15,8 @@ func NewTaskService() *TaskService {
func (ts *TaskService) GetTaskBySourceID(sourceID string) *models.Task {
var task models.Task
if err := database.DB.Where("source_id = ?", sourceID).First(&task).Error; err != nil {
res := database.DB.Where("source_id = ?", sourceID).Limit(1).Find(&task)
if res.Error != nil || res.RowsAffected == 0 {
return nil
}
return &task
@@ -91,7 +92,8 @@ func (ts *TaskService) GetTasksWithPagination(page, pageSize int, name string, a
func (ts *TaskService) GetTaskByID(id string) *models.Task {
var task models.Task
if err := database.DB.Where("id = ?", id).First(&task).Error; err != nil {
res := database.DB.Where("id = ?", id).Limit(1).Find(&task)
if res.Error != nil || res.RowsAffected == 0 {
return nil
}
return &task
@@ -99,7 +101,8 @@ func (ts *TaskService) GetTaskByID(id string) *models.Task {
func (ts *TaskService) UpdateTask(id string, name, command, schedule string, timeout int, workDir, cleanConfig, envs string, enabled bool, taskType, config string, agentID *string, languages []map[string]string, triggerType string, tags string, retryCount int, retryInterval int, randomRange int, sourceID string) *models.Task {
var task models.Task
if err := database.DB.Where("id = ?", id).First(&task).Error; err != nil {
res := database.DB.Where("id = ?", id).Limit(1).Find(&task)
if res.Error != nil || res.RowsAffected == 0 {
return nil
}
task.Name = name