package service import ( "context" v1 "github.com/go-nunu/nunu-layout-advanced/api/v1" "github.com/go-nunu/nunu-layout-advanced/internal/repository" "strconv" ) type WafFormatterService interface { require(ctx context.Context, req v1.GlobalRequire, category string) (v1.GlobalRequire, error) } func NewWafFormatterService( service *Service, globalRep repository.GlobalLimitRepository, hostRep repository.HostRepository, ) WafFormatterService { return &wafFormatterService{ Service: service, globalRep: globalRep, hostRep: hostRep, } } type wafFormatterService struct { *Service globalRep repository.GlobalLimitRepository hostRep repository.HostRepository } func (s *wafFormatterService) require(ctx context.Context,req v1.GlobalRequire,category string) (v1.GlobalRequire, error) { RuleIds, err := s.globalRep.GetGlobalLimitByHostId(ctx, int64(req.HostId)) if err != nil { return v1.GlobalRequire{}, err } req.WafGatewayGroupId = RuleIds.GatewayGroupId switch category { case "tcp": req.LimitRuleId = RuleIds.TcpLimitRuleId case "udp": req.LimitRuleId = RuleIds.UdpLimitRuleId case "web": req.LimitRuleId = RuleIds.WebLimitRuleId } domain, err := s.hostRep.GetDomainById(ctx, req.HostId) if err != nil { return v1.GlobalRequire{}, err } req.Tag = strconv.Itoa(req.Uid) + "_" + strconv.Itoa(req.HostId) + "_" + domain + "_" + req.Comment return req, nil }