package service import ( "context" "fmt" v1 "github.com/go-nunu/nunu-layout-advanced/api/v1" "github.com/go-nunu/nunu-layout-advanced/internal/model" "github.com/go-nunu/nunu-layout-advanced/internal/repository" "github.com/spf13/cast" ) type GatewayGroupService interface { GetGatewayGroup(ctx context.Context, id int64) (*model.GatewayGroup, error) AddGatewayGroup(ctx context.Context, req v1.AddGateWayGroupRequest) (int, error) } func NewGatewayGroupService service *Service, gatewayGroupRepository repository.GatewayGroupRepository, gatewayGroupRepository repository.GatewayGroupRepository, required RequiredService, parser ParserService, ) GatewayGroupService { Service: service, Service: service, required: required, parser: parser, parser: parser, } } type gatewayGroupService struct { *Service required RequiredService parser ParserService parser ParserService } func (s *gatewayGroupService) GetGatewayGroup(ctx context.Context, id int64) (*model.GatewayGroup, error) { return s.gatewayGroupRepository.GetGatewayGroup(ctx, id) } func (s *gatewayGroupService) AddGatewayGroup(ctx context.Context, req v1.AddGateWayGroupRequest) (int, error) { "name": req.Name, "name": req.Name, "comment": req.Comment, } respBody, err := s.required.SendForm(ctx, "admin/info/waf_gateway_group/new", "admin/new/waf_gateway_group", formData) if err != nil { return 0, err } gateWayGroupIdBase, err := s.parser.GetRuleIdByColumnName(ctx, respBody, req.Name) if err != nil { return 0, err } if gateWayGroupIdBase == "" { res, err := s.parser.ParseAlert(string(respBody)) if err != nil { return 0, err } return 0, fmt.Errorf(res) } gateWayGroupId, err := cast.ToIntE(gateWayGroupIdBase) return 0, err return 0, err } return gateWayGroupId, nil r }