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
+1
View File
@@ -77,6 +77,7 @@ log " - node: $(node --version 2>&1 | head -n 1 || echo "not found")"
# 延迟获取 NODE_PATH,避免同步阻塞启动 # 延迟获取 NODE_PATH,避免同步阻塞启动
log "Checking npm..." log "Checking npm..."
log " - npm: $(npm --version 2>&1 | head -n 1 || echo "not found")" log " - npm: $(npm --version 2>&1 | head -n 1 || echo "not found")"
export NODE_PATH=$(npm root -g 2>/dev/null || echo "") export NODE_PATH=$(npm root -g 2>/dev/null || echo "")
log " - node_path: $NODE_PATH" log " - node_path: $NODE_PATH"
+2 -1
View File
@@ -118,7 +118,8 @@ func (lc *LogController) GetLogDetail(c *gin.Context) {
} }
var log models.TaskLog var log models.TaskLog
if err := database.DB.Where("id = ?", id).First(&log).Error; err != nil { res := database.DB.Where("id = ?", id).Limit(1).Find(&log)
if res.Error != nil || res.RowsAffected == 0 {
utils.NotFound(c, "日志不存在") utils.NotFound(c, "日志不存在")
return return
} }
+4 -2
View File
@@ -34,7 +34,8 @@ func (lc *LogWSController) StreamLog(c *gin.Context) {
// 1. 检查数据库中是否已结束 // 1. 检查数据库中是否已结束
var taskLog models.TaskLog 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 {
if taskLog.Status != "running" { if taskLog.Status != "running" {
// 已结束,读取库内日志 // 已结束,读取库内日志
content, err := utils.DecompressFromBase64(string(taskLog.Output)) content, err := utils.DecompressFromBase64(string(taskLog.Output))
@@ -74,7 +75,8 @@ func (lc *LogWSController) StreamLog(c *gin.Context) {
if !ok { if !ok {
// 任务结束,尝试刷新最后一次库内完整内容 // 任务结束,尝试刷新最后一次库内完整内容
var finalLog models.TaskLog var finalLog models.TaskLog
if err := database.DB.Where("id = ?", logID).First(&finalLog).Error; err == nil { res := database.DB.Where("id = ?", logID).Limit(1).Find(&finalLog)
if res.Error == nil && res.RowsAffected > 0 {
content, _ := utils.DecompressFromBase64(string(finalLog.Output)) content, _ := utils.DecompressFromBase64(string(finalLog.Output))
if content != "" { if content != "" {
conn.WriteMessage(websocket.TextMessage, []byte("\n--- 任务已结束 ---\n")) conn.WriteMessage(websocket.TextMessage, []byte("\n--- 任务已结束 ---\n"))
+2 -1
View File
@@ -65,7 +65,8 @@ func (sc *SettingsController) ChangePassword(c *gin.Context) {
userID := c.GetString("userID") userID := c.GetString("userID")
var user *models.User var user *models.User
if err := database.DB.Where("id = ?", userID).First(&user).Error; err != nil { res := database.DB.Where("id = ?", userID).Limit(1).Find(&user)
if res.Error != nil || res.RowsAffected == 0 {
utils.NotFound(c, "用户不存在") utils.NotFound(c, "用户不存在")
return return
} }
+4 -2
View File
@@ -47,7 +47,8 @@ func AuthRequired() gin.HandlerFunc {
// 安全增强:校验数据库中该用户的 ID 是否与 Token 一致,并验证 TokenVersion // 安全增强:校验数据库中该用户的 ID 是否与 Token 一致,并验证 TokenVersion
var user models.User var user models.User
if err := database.DB.Where("username = ?", username).First(&user).Error; err != nil || user.ID != userID || user.TokenVersion != tokenVersion { res := database.DB.Where("username = ?", username).Limit(1).Find(&user)
if res.Error != nil || res.RowsAffected == 0 || user.ID != userID || user.TokenVersion != tokenVersion {
utils.Unauthorized(c, "会话失效,请重新登录") utils.Unauthorized(c, "会话失效,请重新登录")
ClearAuthCookie(c) ClearAuthCookie(c)
c.Abort() c.Abort()
@@ -150,7 +151,8 @@ func checkOpenapiToken(c *gin.Context, settingsSvc *services.SettingsService) bo
// 模拟 Admin 角色 // 模拟 Admin 角色
var adminUser models.User var adminUser models.User
if err := database.DB.Where("role = ?", "admin").First(&adminUser).Error; err != nil { res := database.DB.Where("role = ?", "admin").Limit(1).Find(&adminUser)
if res.Error != nil || res.RowsAffected == 0 {
utils.Unauthorized(c, "未找到管理员账户,OpenAPI Token 校验失败") utils.Unauthorized(c, "未找到管理员账户,OpenAPI Token 校验失败")
c.Abort() c.Abort()
return true return true
+12 -6
View File
@@ -80,7 +80,8 @@ func (s *AgentService) DeleteToken(id string) error {
// ValidateToken 验证令牌 // ValidateToken 验证令牌
func (s *AgentService) ValidateToken(token string) (*models.AgentToken, error) { func (s *AgentService) ValidateToken(token string) (*models.AgentToken, error) {
var agentToken models.AgentToken var agentToken models.AgentToken
if err := database.DB.Where("token = ?", token).First(&agentToken).Error; err != nil { res := database.DB.Where("token = ?", token).Limit(1).Find(&agentToken)
if res.Error != nil || res.RowsAffected == 0 {
return nil, &ServiceError{Message: "无效的令牌"} return nil, &ServiceError{Message: "无效的令牌"}
} }
@@ -120,7 +121,8 @@ func (s *AgentService) RegisterByToken(token string, machineID string, ip string
// 如果提供了 machine_id,先检查是否已存在 // 如果提供了 machine_id,先检查是否已存在
if machineID != "" { if machineID != "" {
var existing models.Agent var existing models.Agent
if err := database.DB.Where("machine_id = ?", machineID).First(&existing).Error; err == nil { res := database.DB.Where("machine_id = ?", machineID).Limit(1).Find(&existing)
if res.Error == nil && res.RowsAffected > 0 {
// 已存在,更新 token 和状态,复用已有 Agent // 已存在,更新 token 和状态,复用已有 Agent
now := models.LocalTime(time.Now()) now := models.LocalTime(time.Now())
database.DB.Model(&existing).Updates(map[string]interface{}{ database.DB.Model(&existing).Updates(map[string]interface{}{
@@ -171,7 +173,8 @@ func (s *AgentService) Register(req *models.AgentRegisterRequest, ip string) (*m
// 检查是否已存在同名 Agent // 检查是否已存在同名 Agent
var existing models.Agent var existing models.Agent
if err := database.DB.Where("name = ?", req.Name).First(&existing).Error; err == nil { res := database.DB.Where("name = ?", req.Name).Limit(1).Find(&existing)
if res.Error == nil && res.RowsAffected > 0 {
return nil, "", &ServiceError{Message: "Agent 名称已存在"} return nil, "", &ServiceError{Message: "Agent 名称已存在"}
} }
@@ -223,7 +226,8 @@ func (s *AgentService) Delete(id string) error {
// GetByID 根据 ID 获取 Agent // GetByID 根据 ID 获取 Agent
func (s *AgentService) GetByID(id string) *models.Agent { func (s *AgentService) GetByID(id string) *models.Agent {
var agent models.Agent var agent models.Agent
if err := database.DB.Where("id = ?", id).First(&agent).Error; err != nil { res := database.DB.Where("id = ?", id).Limit(1).Find(&agent)
if res.Error != nil || res.RowsAffected == 0 {
return nil return nil
} }
return &agent return &agent
@@ -232,7 +236,8 @@ func (s *AgentService) GetByID(id string) *models.Agent {
// GetByToken 根据 Token 获取 Agent // GetByToken 根据 Token 获取 Agent
func (s *AgentService) GetByToken(token string) *models.Agent { func (s *AgentService) GetByToken(token string) *models.Agent {
var agent models.Agent var agent models.Agent
if err := database.DB.Where("token = ?", token).First(&agent).Error; err != nil { res := database.DB.Where("token = ?", token).Limit(1).Find(&agent)
if res.Error != nil || res.RowsAffected == 0 {
return nil return nil
} }
return &agent return &agent
@@ -241,7 +246,8 @@ func (s *AgentService) GetByToken(token string) *models.Agent {
// GetByMachineID 根据 MachineID 获取 Agent // GetByMachineID 根据 MachineID 获取 Agent
func (s *AgentService) GetByMachineID(machineID string) *models.Agent { func (s *AgentService) GetByMachineID(machineID string) *models.Agent {
var agent models.Agent var agent models.Agent
if err := database.DB.Where("machine_id = ?", machineID).First(&agent).Error; err != nil { res := database.DB.Where("machine_id = ?", machineID).Limit(1).Find(&agent)
if res.Error != nil || res.RowsAffected == 0 {
return nil return nil
} }
return &agent return &agent
+2 -1
View File
@@ -417,7 +417,8 @@ func (s *BackupService) addDirToZip(zipWriter *zip.Writer, srcDir, prefix string
func (s *BackupService) GetBackupFile() string { func (s *BackupService) GetBackupFile() string {
var setting models.Setting var setting models.Setting
if err := database.DB.Where("section = ? AND `key` = ?", BackupSection, BackupFileKey).First(&setting).Error; err != nil { res := database.DB.Where("section = ? AND `key` = ?", BackupSection, BackupFileKey).Limit(1).Find(&setting)
if res.Error != nil || res.RowsAffected == 0 {
return "" return ""
} }
return string(setting.Value) return string(setting.Value)
+2 -2
View File
@@ -33,8 +33,8 @@ func (s *DependencyService) List(language, langVersion string) ([]models.Depende
func (s *DependencyService) Create(dep *models.Dependency) error { func (s *DependencyService) Create(dep *models.Dependency) error {
// 检查是否已存在(名称、版本、语言及版本必须完全匹配) // 检查是否已存在(名称、版本、语言及版本必须完全匹配)
var existing models.Dependency var existing models.Dependency
err := database.DB.Where("name = ? AND version = ? AND language = ? AND lang_version = ?", dep.Name, dep.Version, dep.Language, dep.LangVersion).First(&existing).Error res := database.DB.Where("name = ? AND version = ? AND language = ? AND lang_version = ?", dep.Name, dep.Version, dep.Language, dep.LangVersion).Limit(1).Find(&existing)
if err == nil { if res.Error == nil && res.RowsAffected > 0 {
// 如果已存在,更新 ID 并执行更新 // 如果已存在,更新 ID 并执行更新
dep.ID = existing.ID dep.ID = existing.ID
return database.DB.Model(&existing).Updates(dep).Error return database.DB.Model(&existing).Updates(dep).Error
+4 -2
View File
@@ -60,7 +60,8 @@ func (es *EnvService) GetEnvVarsWithPagination(userID string, name string, page,
func (es *EnvService) GetEnvVarByID(id string) *models.EnvironmentVariable { func (es *EnvService) GetEnvVarByID(id string) *models.EnvironmentVariable {
var env models.EnvironmentVariable var env models.EnvironmentVariable
if err := database.DB.Where("id = ?", id).First(&env).Error; err != nil { res := database.DB.Where("id = ?", id).Limit(1).Find(&env)
if res.Error != nil || res.RowsAffected == 0 {
return nil return nil
} }
return &env return &env
@@ -68,7 +69,8 @@ func (es *EnvService) GetEnvVarByID(id string) *models.EnvironmentVariable {
func (es *EnvService) UpdateEnvVar(id string, name, value, remark string, hidden, enabled bool) *models.EnvironmentVariable { func (es *EnvService) UpdateEnvVar(id string, name, value, remark string, hidden, enabled bool) *models.EnvironmentVariable {
var env models.EnvironmentVariable var env models.EnvironmentVariable
if err := database.DB.Where("id = ?", id).First(&env).Error; err != nil { res := database.DB.Where("id = ?", id).Limit(1).Find(&env)
if res.Error != nil || res.RowsAffected == 0 {
return nil return nil
} }
updates := map[string]interface{}{ updates := map[string]interface{}{
+4 -4
View File
@@ -81,8 +81,8 @@ func RunMigrationV3() error {
// 0. 检查迁移标记,防止重复迁移逻辑被误判触发 // 0. 检查迁移标记,防止重复迁移逻辑被误判触发
if db.Migrator().HasTable(&models.Setting{}) { if db.Migrator().HasTable(&models.Setting{}) {
var migrationFlag models.Setting var migrationFlag models.Setting
err := db.Where("section = ? AND `key` = ?", "system", "migration_v3_success").First(&migrationFlag).Error res := db.Where("section = ? AND `key` = ?", "system", "migration_v3_success").Limit(1).Find(&migrationFlag)
if err == nil && migrationFlag.Value == "true" { if res.Error == nil && res.RowsAffected > 0 && migrationFlag.Value == "true" {
// 如果已经是字符串 ID 模式,双重确认 // 如果已经是字符串 ID 模式,双重确认
return nil return nil
} }
@@ -150,8 +150,8 @@ func markMigrationSuccess(db *gorm.DB) error {
return nil return nil
} }
var flag models.Setting var flag models.Setting
err := db.Where("section = ? AND `key` = ?", "system", "migration_v3_success").First(&flag).Error res := db.Where("section = ? AND `key` = ?", "system", "migration_v3_success").Limit(1).Find(&flag)
if err != nil { if res.Error != nil || res.RowsAffected == 0 {
// 创建或更新 // 创建或更新
flag = models.Setting{ flag = models.Setting{
ID: utils.GenerateID(), ID: utils.GenerateID(),
+4 -2
View File
@@ -271,7 +271,9 @@ func (s *MiseService) syncToDB(languages []MiseLanguage) {
for _, lang := range languages { for _, lang := range languages {
var model models.Language var model models.Language
// 以 plugin 和 version 作为联合唯一标识(业务逻辑上) // 以 plugin 和 version 作为联合唯一标识(业务逻辑上)
err := db.Where("plugin = ? AND version = ?", lang.Plugin, lang.Version).First(&model).Error res := db.Where("plugin = ? AND version = ?", lang.Plugin, lang.Version).Limit(1).Find(&model)
err := res.Error
rowsAffected := res.RowsAffected
sourceStr := "" sourceStr := ""
if lang.Source.Path != "" { if lang.Source.Path != "" {
@@ -289,7 +291,7 @@ func (s *MiseService) syncToDB(languages []MiseLanguage) {
} }
} }
if err != nil { if err == nil && rowsAffected == 0 {
// 如果不存在,则创建 // 如果不存在,则创建
newLang := models.Language{ newLang := models.Language{
ID: utils.GenerateID(), ID: utils.GenerateID(),
+5 -4
View File
@@ -152,9 +152,9 @@ func (s *NotificationService) SaveBinding(binding *models.NotifyBinding) error {
if binding.ID == "" { if binding.ID == "" {
// 检查是否已经存在相同的绑定(避免重复点击导致多个记录) // 检查是否已经存在相同的绑定(避免重复点击导致多个记录)
var existing models.NotifyBinding var existing models.NotifyBinding
err := database.DB.Where("type = ? AND event = ? AND way_id = ? AND data_id = ?", res := database.DB.Where("type = ? AND event = ? AND way_id = ? AND data_id = ?",
binding.Type, binding.Event, binding.WayID, binding.DataID).First(&existing).Error binding.Type, binding.Event, binding.WayID, binding.DataID).Limit(1).Find(&existing)
if err == nil { if res.Error == nil && res.RowsAffected > 0 {
// 如果已存在且未删除,直接返回(或者更新它) // 如果已存在且未删除,直接返回(或者更新它)
*binding = existing *binding = existing
return nil return nil
@@ -246,7 +246,8 @@ func (s *NotificationService) SendByChannelID(channelID string, msg *NotifyMessa
defer s.mu.RUnlock() defer s.mu.RUnlock()
var notifyWay models.NotifyWay var notifyWay models.NotifyWay
if err := database.DB.Where("id = ?", channelID).First(&notifyWay).Error; err != nil { res := database.DB.Where("id = ?", channelID).Limit(1).Find(&notifyWay)
if res.Error != nil || res.RowsAffected == 0 {
return &NotifyResult{Success: false, Error: "渠道不存在"} return &NotifyResult{Success: false, Error: "渠道不存在"}
} }
+4 -2
View File
@@ -31,7 +31,8 @@ func (ss *ScriptService) GetScriptsByUserID(userID string) []models.Script {
func (ss *ScriptService) GetScriptByID(id string) *models.Script { func (ss *ScriptService) GetScriptByID(id string) *models.Script {
var script models.Script var script models.Script
if err := database.DB.Where("id = ?", id).First(&script).Error; err != nil { res := database.DB.Where("id = ?", id).Limit(1).Find(&script)
if res.Error != nil || res.RowsAffected == 0 {
return nil return nil
} }
return &script return &script
@@ -39,7 +40,8 @@ func (ss *ScriptService) GetScriptByID(id string) *models.Script {
func (ss *ScriptService) UpdateScript(id string, name, content string) *models.Script { func (ss *ScriptService) UpdateScript(id string, name, content string) *models.Script {
var script models.Script var script models.Script
if err := database.DB.Where("id = ?", id).First(&script).Error; err != nil { res := database.DB.Where("id = ?", id).Limit(1).Find(&script)
if res.Error != nil || res.RowsAffected == 0 {
return nil return nil
} }
script.Name = name script.Name = name
+2 -3
View File
@@ -20,9 +20,8 @@ func (s *SendStatsService) IncrementStats(taskID string, status string) error {
day := systime.FormatDate(time.Now()) day := systime.FormatDate(time.Now())
var stats models.SendStats var stats models.SendStats
result := database.DB.Where("task_id = ? AND day = ? AND status = ?", taskID, day, status).First(&stats) res := database.DB.Where("task_id = ? AND day = ? AND status = ?", taskID, day, status).Limit(1).Find(&stats)
if res.Error != nil || res.RowsAffected == 0 {
if result.Error != nil {
// 不存在则创建 // 不存在则创建
stats = models.SendStats{ stats = models.SendStats{
ID: utils.GenerateID(), ID: utils.GenerateID(),
+4 -2
View File
@@ -121,7 +121,8 @@ func (s *SettingsService) Get(section, key string) string {
return cache.GetSiteCache(key) return cache.GetSiteCache(key)
} }
var setting models.Setting var setting models.Setting
if err := database.DB.Where("section = ? AND `key` = ?", section, key).First(&setting).Error; err != nil { res := database.DB.Where("section = ? AND `key` = ?", section, key).Limit(1).Find(&setting)
if res.Error != nil || res.RowsAffected == 0 {
if def, ok := constant.DefaultSettings[section][key]; ok { if def, ok := constant.DefaultSettings[section][key]; ok {
return def return def
} }
@@ -133,7 +134,8 @@ func (s *SettingsService) Get(section, key string) string {
// Set 设置单个值 // Set 设置单个值
func (s *SettingsService) Set(section, key, value string) error { func (s *SettingsService) Set(section, key, value string) error {
var setting models.Setting var setting models.Setting
if database.DB.Where("section = ? AND `key` = ?", section, key).First(&setting).Error != nil { res := database.DB.Where("section = ? AND `key` = ?", section, key).Limit(1).Find(&setting)
if res.Error != nil || res.RowsAffected == 0 {
return database.DB.Create(&models.Setting{ return database.DB.Create(&models.Setting{
ID: utils.GenerateID(), ID: utils.GenerateID(),
Section: section, Section: section,
+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 // StopTaskExecution stops a running task execution by LogID
func (es *ExecutorService) StopTaskExecution(logID string) error { func (es *ExecutorService) StopTaskExecution(logID string) error {
var taskLog models.TaskLog 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("日志不存在") return fmt.Errorf("日志不存在")
} }
@@ -747,7 +748,8 @@ func (es *ExecutorService) CleanupRunningTasks() error {
// CheckConcurrency 检查任务并发限制(只读检查) // CheckConcurrency 检查任务并发限制(只读检查)
func (es *ExecutorService) CheckConcurrency(taskID string) error { func (es *ExecutorService) CheckConcurrency(taskID string) error {
var task models.Task 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 return err
} }
var goids []int64 var goids []int64
@@ -773,7 +775,8 @@ func (es *ExecutorService) AddRunningGo(taskID string) (int64, error) {
for attempt := 0; attempt < 3; attempt++ { for attempt := 0; attempt < 3; attempt++ {
lastErr = database.DB.Transaction(func(tx *gorm.DB) error { lastErr = database.DB.Transaction(func(tx *gorm.DB) error {
var task models.Task 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 return err
} }
var goids []int64 var goids []int64
@@ -814,7 +817,8 @@ func (es *ExecutorService) RemoveRunningGo(taskID string, goid int64) {
for attempt := 0; attempt < 3; attempt++ { for attempt := 0; attempt < 3; attempt++ {
err := database.DB.Transaction(func(tx *gorm.DB) error { err := database.DB.Transaction(func(tx *gorm.DB) error {
var task models.Task 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 return err
} }
var goids []int64 var goids []int64
@@ -844,7 +848,8 @@ func (es *ExecutorService) ExecuteRemoteForScheduler(task *models.Task, logID st
// 1. 检查 Agent 状态 // 1. 检查 Agent 状态
var agent models.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) return nil, fmt.Errorf("Agent #%s 不存在", agentID)
} }
if !agent.Enabled { if !agent.Enabled {
+2 -1
View File
@@ -38,7 +38,8 @@ func ParseRepoScriptsAndAddCron(es *ExecutorService, taskID string, logWriter io
} }
var repoTask models.Task 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 return
} }
+4 -3
View File
@@ -95,7 +95,8 @@ func (s *TaskLogService) UpdateTaskStats(taskID string, status string) {
// CleanTaskLogs 清理任务日志 // CleanTaskLogs 清理任务日志
func (s *TaskLogService) CleanTaskLogs(taskID string) { func (s *TaskLogService) CleanTaskLogs(taskID string) {
var task models.Task 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 return
} }
@@ -121,8 +122,8 @@ func (s *TaskLogService) CleanTaskLogs(taskID string) {
deleted = result.RowsAffected deleted = result.RowsAffected
case "count": case "count":
var boundaryLog models.TaskLog var boundaryLog models.TaskLog
err := database.DB.Where("task_id = ?", taskID).Order("id DESC").Offset(config.Keep - 1).Limit(1).First(&boundaryLog).Error res := database.DB.Where("task_id = ?", taskID).Order("id DESC").Offset(config.Keep - 1).Limit(1).Find(&boundaryLog)
if err == nil { if res.Error == nil && res.RowsAffected > 0 {
result := database.DB.Where("task_id = ? AND id < ?", taskID, boundaryLog.ID).Delete(&models.TaskLog{}) result := database.DB.Where("task_id = ? AND id < ?", taskID, boundaryLog.ID).Delete(&models.TaskLog{})
deleted = result.RowsAffected deleted = result.RowsAffected
} }
+6 -3
View File
@@ -15,7 +15,8 @@ func NewTaskService() *TaskService {
func (ts *TaskService) GetTaskBySourceID(sourceID string) *models.Task { func (ts *TaskService) GetTaskBySourceID(sourceID string) *models.Task {
var task 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 nil
} }
return &task return &task
@@ -91,7 +92,8 @@ func (ts *TaskService) GetTasksWithPagination(page, pageSize int, name string, a
func (ts *TaskService) GetTaskByID(id string) *models.Task { func (ts *TaskService) GetTaskByID(id string) *models.Task {
var task 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 nil
} }
return &task 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 { 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 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 nil
} }
task.Name = name task.Name = name
+8 -5
View File
@@ -51,7 +51,8 @@ func (us *UserService) CreateUser(username, password, email, role string) *model
func (us *UserService) GetUserByUsername(username string) *models.User { func (us *UserService) GetUserByUsername(username string) *models.User {
var user models.User var user models.User
if err := database.DB.Where("username = ?", username).First(&user).Error; err != nil { res := database.DB.Where("username = ?", username).Limit(1).Find(&user)
if res.Error != nil || res.RowsAffected == 0 {
return nil return nil
} }
return &user return &user
@@ -59,8 +60,9 @@ func (us *UserService) GetUserByUsername(username string) *models.User {
func (us *UserService) GetUserByID(id string) (*models.User, error) { func (us *UserService) GetUserByID(id string) (*models.User, error) {
var user models.User var user models.User
if err := database.DB.Where("id = ?", id).First(&user).Error; err != nil { res := database.DB.Where("id = ?", id).Limit(1).Find(&user)
return nil, err if res.Error != nil || res.RowsAffected == 0 {
return nil, res.Error
} }
return &user, nil return &user, nil
} }
@@ -122,8 +124,9 @@ func (us *UserService) InvalidateUserTokens(userID string) error {
func (us *UserService) UpdateAccount(userID string, newUsername string) error { func (us *UserService) UpdateAccount(userID string, newUsername string) error {
var user models.User var user models.User
if err := database.DB.Where("id = ?", userID).First(&user).Error; err != nil { res := database.DB.Where("id = ?", userID).Limit(1).Find(&user)
return err if res.Error != nil || res.RowsAffected == 0 {
return fmt.Errorf("未找到对应的用户")
} }
updates := make(map[string]interface{}) updates := make(map[string]interface{})