fix: 修复数据清理预览接口 panic 及路由文档路径翻倍问题
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m12s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m12s
1. CountOldRecords 改用 GORM .Scan() 替代 .Row().Scan(),避免查询不存在的表时 nil pointer panic 2. polling_cleanup 路由注册的 basePath 参数去掉多余拼接,修复生成的 OpenAPI 文档路径翻倍
This commit is contained in:
@@ -55,8 +55,7 @@ func registerPollingCleanupRoutes(router fiber.Router, handler *admin.PollingCle
|
|||||||
})
|
})
|
||||||
|
|
||||||
// 清理日志
|
// 清理日志
|
||||||
logsPath := basePath + "/data-cleanup-logs"
|
Register(router, doc, basePath, "GET", "/data-cleanup-logs", handler.ListLogs, RouteSpec{
|
||||||
Register(router, doc, logsPath, "GET", "/data-cleanup-logs", handler.ListLogs, RouteSpec{
|
|
||||||
Summary: "获取数据清理日志列表",
|
Summary: "获取数据清理日志列表",
|
||||||
Tags: []string{"轮询管理-数据清理"},
|
Tags: []string{"轮询管理-数据清理"},
|
||||||
Input: new(dto.ListDataCleanupLogReq),
|
Input: new(dto.ListDataCleanupLogReq),
|
||||||
@@ -65,8 +64,7 @@ func registerPollingCleanupRoutes(router fiber.Router, handler *admin.PollingCle
|
|||||||
})
|
})
|
||||||
|
|
||||||
// 清理操作
|
// 清理操作
|
||||||
cleanupPath := basePath + "/data-cleanup"
|
Register(router, doc, basePath, "GET", "/data-cleanup/preview", handler.Preview, RouteSpec{
|
||||||
Register(router, doc, cleanupPath+"/preview", "GET", "/data-cleanup/preview", handler.Preview, RouteSpec{
|
|
||||||
Summary: "预览待清理数据",
|
Summary: "预览待清理数据",
|
||||||
Tags: []string{"轮询管理-数据清理"},
|
Tags: []string{"轮询管理-数据清理"},
|
||||||
Input: nil,
|
Input: nil,
|
||||||
@@ -74,7 +72,7 @@ func registerPollingCleanupRoutes(router fiber.Router, handler *admin.PollingCle
|
|||||||
Auth: true,
|
Auth: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
Register(router, doc, cleanupPath+"/progress", "GET", "/data-cleanup/progress", handler.GetProgress, RouteSpec{
|
Register(router, doc, basePath, "GET", "/data-cleanup/progress", handler.GetProgress, RouteSpec{
|
||||||
Summary: "获取数据清理进度",
|
Summary: "获取数据清理进度",
|
||||||
Tags: []string{"轮询管理-数据清理"},
|
Tags: []string{"轮询管理-数据清理"},
|
||||||
Input: nil,
|
Input: nil,
|
||||||
@@ -82,7 +80,7 @@ func registerPollingCleanupRoutes(router fiber.Router, handler *admin.PollingCle
|
|||||||
Auth: true,
|
Auth: true,
|
||||||
})
|
})
|
||||||
|
|
||||||
Register(router, doc, cleanupPath+"/trigger", "POST", "/data-cleanup/trigger", handler.TriggerCleanup, RouteSpec{
|
Register(router, doc, basePath, "POST", "/data-cleanup/trigger", handler.TriggerCleanup, RouteSpec{
|
||||||
Summary: "手动触发数据清理",
|
Summary: "手动触发数据清理",
|
||||||
Tags: []string{"轮询管理-数据清理"},
|
Tags: []string{"轮询管理-数据清理"},
|
||||||
Input: new(dto.TriggerDataCleanupReq),
|
Input: new(dto.TriggerDataCleanupReq),
|
||||||
|
|||||||
@@ -193,12 +193,11 @@ func (s *DataCleanupLogStore) CountOldRecords(ctx context.Context, tableName str
|
|||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
// 对于其他表,使用原始 SQL
|
// 对于其他表,使用原始 SQL(使用 GORM 的 Scan 避免 Row() 返回 nil 导致 panic)
|
||||||
row := s.db.WithContext(ctx).Raw(
|
if err := s.db.WithContext(ctx).Raw(
|
||||||
"SELECT COUNT(*) FROM "+tableName+" WHERE created_at < ?",
|
"SELECT COUNT(*) FROM "+tableName+" WHERE created_at < ?",
|
||||||
cutoffTime,
|
cutoffTime,
|
||||||
).Row()
|
).Scan(&count).Error; err != nil {
|
||||||
if err := row.Scan(&count); err != nil {
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user