package firewallconfigs

// HTTPFirewallRuleGroup 规则组
type HTTPFirewallRuleGroup struct {
	Id          int64                     `yaml:"id" json:"id"`
	IsOn        bool                      `yaml:"isOn" json:"isOn"`
	Name        string                    `yaml:"name" json:"name"`
	Description string                    `yaml:"description" json:"description"`
	Code        string                    `yaml:"code" json:"code"`
	SetRefs     []*HTTPFirewallRuleSetRef `yaml:"setRefs" json:"setRefs"`
	Sets        []*HTTPFirewallRuleSet    `yaml:"sets" json:"sets"`
	IsTemplate  bool                      `yaml:"isTemplate" json:"isTemplate"`
}

// Init 初始化
func (this *HTTPFirewallRuleGroup) Init() error {
	for _, set := range this.Sets {
		err := set.Init()
		if err != nil {
			return err
		}
	}
	return nil
}

// AddRuleSet 添加规则集
func (this *HTTPFirewallRuleGroup) AddRuleSet(ruleSet *HTTPFirewallRuleSet) {
	this.Sets = append(this.Sets, ruleSet)
}

// FindRuleSet 根据ID查找规则集
func (this *HTTPFirewallRuleGroup) FindRuleSet(ruleSetId int64) *HTTPFirewallRuleSet {
	for _, set := range this.Sets {
		if set.Id == ruleSetId {
			return set
		}
	}
	return nil
}

// FindRuleSetWithCode 根据Code查找规则集
func (this *HTTPFirewallRuleGroup) FindRuleSetWithCode(code string) *HTTPFirewallRuleSet {
	for _, set := range this.Sets {
		if set.Code == code {
			return set
		}
	}
	return nil
}
