Skip to content

Commit b2c6b8c

Browse files
committed
refactor: Add GetYamlTaskDetail endpoint and update related methods for improved task management and detail retrieval
1 parent 70ca1ec commit b2c6b8c

6 files changed

Lines changed: 151 additions & 171 deletions

File tree

internal/k8s/api/yaml_task.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ func (h *K8sYamlTaskHandler) RegisterRouters(server *gin.Engine) {
5050
k8sGroup.POST("/yaml_task/:cluster_id/:id/update", h.UpdateYamlTask)
5151
k8sGroup.POST("/yaml_task/:cluster_id/:id/apply", h.ApplyYamlTask)
5252
k8sGroup.DELETE("/yaml_task/:cluster_id/:id/delete", h.DeleteYamlTask)
53+
k8sGroup.GET("/yaml_task/:cluster_id/:id/detail", h.GetYamlTaskDetail)
5354
}
5455
}
5556

@@ -157,3 +158,26 @@ func (h *K8sYamlTaskHandler) DeleteYamlTask(ctx *gin.Context) {
157158
return nil, h.yamlTaskService.DeleteYamlTask(ctx, &req)
158159
})
159160
}
161+
162+
func (h *K8sYamlTaskHandler) GetYamlTaskDetail(ctx *gin.Context) {
163+
var req model.YamlTaskDetailReq
164+
165+
clusterId, err := utils.GetCustomParamID(ctx, "cluster_id")
166+
if err != nil {
167+
utils.BadRequestError(ctx, "缺少 'cluster_id' 参数")
168+
return
169+
}
170+
171+
id, err := utils.GetParamID(ctx)
172+
if err != nil {
173+
utils.BadRequestError(ctx, "缺少 'id' 参数")
174+
return
175+
}
176+
177+
req.ID = id
178+
req.ClusterID = clusterId
179+
180+
utils.HandleRequest(ctx, &req, func() (interface{}, error) {
181+
return h.yamlTaskService.GetYamlTaskDetail(ctx, &req)
182+
})
183+
}

internal/k8s/dao/yaml_task_dao.go

Lines changed: 26 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ type YamlTaskDAO interface {
3838
ListAllYamlTasks(ctx context.Context, req *model.YamlTaskListReq) ([]*model.K8sYamlTask, error)
3939
CreateYamlTask(ctx context.Context, task *model.K8sYamlTask) error
4040
UpdateYamlTask(ctx context.Context, task *model.K8sYamlTask) error
41-
DeleteYamlTask(ctx context.Context, id int) error
42-
GetYamlTaskByID(ctx context.Context, id int) (*model.K8sYamlTask, error)
41+
DeleteYamlTask(ctx context.Context, id int, clusterID int) error
42+
GetYamlTaskByID(ctx context.Context, id int, clusterID int) (*model.K8sYamlTask, error)
4343
GetYamlTaskByTemplateID(ctx context.Context, templateID int) ([]*model.K8sYamlTask, error)
4444
}
4545

@@ -58,36 +58,25 @@ func NewYamlTaskDAO(db *gorm.DB, logger *zap.Logger) YamlTaskDAO {
5858
// ListAllYamlTasks 查询所有 YAML 任务
5959
func (d *yamlTaskDAO) ListAllYamlTasks(ctx context.Context, req *model.YamlTaskListReq) ([]*model.K8sYamlTask, error) {
6060
var tasks []*model.K8sYamlTask
61-
6261
query := d.db.WithContext(ctx)
6362

64-
// 根据集群ID过滤
6563
if req.ClusterID > 0 {
6664
query = query.Where("cluster_id = ?", req.ClusterID)
6765
}
68-
69-
// 根据模板ID过滤
7066
if req.TemplateID > 0 {
7167
query = query.Where("template_id = ?", req.TemplateID)
7268
}
73-
74-
// 根据状态过滤
7569
if req.Status != "" {
7670
query = query.Where("status = ?", req.Status)
7771
}
78-
79-
// 根据任务名称过滤(模糊匹配)
8072
if req.Name != "" {
8173
query = query.Where("name LIKE ?", "%"+req.Name+"%")
8274
}
83-
84-
// 分页处理
8575
if req.Size > 0 {
8676
offset := (req.Page - 1) * req.Size
8777
query = query.Offset(offset).Limit(req.Size)
8878
}
8979

90-
// 按创建时间倒序排列
9180
query = query.Order("created_at DESC")
9281

9382
if err := query.Find(&tasks).Error; err != nil {
@@ -103,48 +92,56 @@ func (d *yamlTaskDAO) CreateYamlTask(ctx context.Context, task *model.K8sYamlTas
10392
d.logger.Error("CreateYamlTask 创建Yaml任务失败", zap.Error(err), zap.Any("task", task))
10493
return err
10594
}
106-
10795
return nil
10896
}
10997

11098
func (d *yamlTaskDAO) UpdateYamlTask(ctx context.Context, task *model.K8sYamlTask) error {
111-
if err := d.db.WithContext(ctx).Model(&model.K8sYamlTask{}).Where("id = ?", task.ID).Updates(task).Error; err != nil {
112-
d.logger.Error("UpdateYamlTask 更新Yaml任务失败", zap.Int("taskID", task.ID), zap.Error(err))
113-
return err
99+
if task.ID == 0 {
100+
d.logger.Error("UpdateYamlTask ID 不能为空", zap.Any("task", task))
101+
return fmt.Errorf("invalid task ID")
114102
}
115103

104+
if err := d.db.WithContext(ctx).Model(&model.K8sYamlTask{}).Where("id = ? AND cluster_id = ?", task.ID, task.ClusterID).Updates(task).Error; err != nil {
105+
d.logger.Error("UpdateYamlTask 更新Yaml任务失败", zap.Int("taskID", task.ID), zap.Int("clusterID", task.ClusterID), zap.Error(err))
106+
return err
107+
}
116108
return nil
117109
}
118110

119-
func (d *yamlTaskDAO) DeleteYamlTask(ctx context.Context, id int) error {
120-
if err := d.db.WithContext(ctx).Where("id = ?", id).Delete(&model.K8sYamlTask{}).Error; err != nil {
121-
d.logger.Error("DeleteYamlTask 删除Yaml任务失败", zap.Int("taskID", id), zap.Error(err))
122-
return err
111+
func (d *yamlTaskDAO) DeleteYamlTask(ctx context.Context, id int, clusterID int) error {
112+
if id == 0 {
113+
d.logger.Error("DeleteYamlTask ID 不能为空", zap.Int("id", id))
114+
return fmt.Errorf("invalid task ID")
123115
}
124116

117+
if err := d.db.WithContext(ctx).Where("id = ? AND cluster_id = ?", id, clusterID).Delete(&model.K8sYamlTask{}).Error; err != nil {
118+
d.logger.Error("DeleteYamlTask 删除Yaml任务失败", zap.Int("taskID", id), zap.Int("clusterID", clusterID), zap.Error(err))
119+
return err
120+
}
125121
return nil
126122
}
127123

128-
func (d *yamlTaskDAO) GetYamlTaskByID(ctx context.Context, id int) (*model.K8sYamlTask, error) {
129-
var task model.K8sYamlTask
130-
131-
if err := d.db.WithContext(ctx).Where("id = ?", id).First(&task).Error; err != nil {
132-
d.logger.Error("GetYamlTaskByID 查询Yaml任务失败", zap.Int("taskID", id), zap.Error(err))
133-
return nil, fmt.Errorf("YAML 任务 ID %d 未找到: %w", id, err)
124+
func (d *yamlTaskDAO) GetYamlTaskByID(ctx context.Context, id int, clusterID int) (*model.K8sYamlTask, error) {
125+
if id == 0 {
126+
d.logger.Error("GetYamlTaskByID ID 不能为空", zap.Int("id", id))
127+
return nil, fmt.Errorf("invalid task ID")
134128
}
135129

130+
var task model.K8sYamlTask
131+
if err := d.db.WithContext(ctx).Where("id = ? AND cluster_id = ?", id, clusterID).First(&task).Error; err != nil {
132+
d.logger.Error("GetYamlTaskByID 查询Yaml任务失败", zap.Int("taskID", id), zap.Int("clusterID", clusterID), zap.Error(err))
133+
return nil, fmt.Errorf("YAML 任务 ID %d (集群 %d) 未找到: %w", id, clusterID, err)
134+
}
136135
return &task, nil
137136
}
138137

139138
func (d *yamlTaskDAO) GetYamlTaskByTemplateID(ctx context.Context, templateID int) ([]*model.K8sYamlTask, error) {
140139
var tasks []*model.K8sYamlTask
141-
142140
if err := d.db.WithContext(ctx).Where("template_id = ?", templateID).Find(&tasks).Error; err != nil {
143141
d.logger.Error("GetYamlTaskByTemplateID 查询Yaml任务失败", zap.Int("templateID", templateID), zap.Error(err))
144142
return nil, err
145143
}
146144

147-
// 若未找到任务,记录信息日志
148145
if len(tasks) == 0 {
149146
d.logger.Info("GetYamlTaskByTemplateID 未找到相关Yaml任务", zap.Int("templateID", templateID))
150147
}

0 commit comments

Comments
 (0)