Commit a35ee271 authored by qiuqunfeng's avatar qiuqunfeng
Browse files

Refactor UpdateRule method to improve handling of rule category status. The...

Refactor UpdateRule method to improve handling of rule category status. The update now correctly manages the addition and removal of category IDs based on the request status, enhancing the accuracy of rule updates in the WAF service.
parent d00530ed
......@@ -800,10 +800,29 @@ func (s *wafService) UpdateRule(ctx context.Context, req *RuleRequest) error {
}
} else {
// Update mode if service exists
if req.Status == 1 {
if wafService.RuleCategoryStatus == nil {
wafService.RuleCategoryStatus = &model.RuleCategoryStatus{
CategoryID: req.CategoryID,
Status: req.Status,
}
} else {
wafService.RuleCategoryStatus.CategoryID = append(wafService.RuleCategoryStatus.CategoryID, req.CategoryID...)
wafService.RuleCategoryStatus.Status = req.Status
}
} else {
if wafService.RuleCategoryStatus == nil {
return nil
}
for i, id := range wafService.RuleCategoryStatus.CategoryID {
for _, categoryID := range req.CategoryID {
if id == categoryID {
wafService.RuleCategoryStatus.CategoryID = append(wafService.RuleCategoryStatus.CategoryID[:i], wafService.RuleCategoryStatus.CategoryID[i+1:]...)
}
}
}
}
if err := s.db.Model(wafService).Update("rule_category_status", wafService.RuleCategoryStatus).Error; err != nil {
return fmt.Errorf("failed to update WAF service mode: %v", err)
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment