database.go 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package web
  2. import (
  3. "context"
  4. "fmt"
  5. v1 "github.com/go-nunu/nunu-layout-advanced/api/v1"
  6. "github.com/go-nunu/nunu-layout-advanced/internal/model"
  7. "github.com/go-nunu/nunu-layout-advanced/internal/service/api/waf/common"
  8. )
  9. // SaveToDatabase 保存到数据库
  10. func (s *AidedWebService) SaveToDatabase(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse, webId int64, cdnOriginIds map[string]int64) (int, error) {
  11. webModel := s.BuildWebForwardingModel(&req.WebForwardingData, int(webId), require)
  12. id, err := s.webForwardingRepository.AddWebForwarding(ctx, webModel)
  13. if err != nil {
  14. return 0, fmt.Errorf("添加Web转发记录失败: %w", err)
  15. }
  16. webRuleModel := s.BuildWebRuleModel(&req.WebForwardingData, require, id, cdnOriginIds)
  17. if _, err = s.webForwardingRepository.AddWebForwardingIps(ctx, *webRuleModel); err != nil {
  18. return 0, fmt.Errorf("添加Web转发规则失败: %w", err)
  19. }
  20. return id, nil
  21. }
  22. // UpdateDatabaseRecords 更新数据库记录
  23. func (s *AidedWebService) UpdateDatabaseRecords(ctx context.Context, req *v1.WebForwardingRequest, require common.RequireResponse, ipData *model.WebForwardingRule) error {
  24. webModel := s.BuildWebForwardingModel(&req.WebForwardingData, req.WebForwardingData.CdnWebId, require)
  25. webModel.Id = req.WebForwardingData.Id
  26. if err := s.webForwardingRepository.EditWebForwarding(ctx, webModel); err != nil {
  27. return fmt.Errorf("更新Web转发记录失败: %w", err)
  28. }
  29. webRuleModel := s.BuildWebRuleModel(&req.WebForwardingData, require, req.WebForwardingData.Id, ipData.CdnOriginIds)
  30. if err := s.webForwardingRepository.EditWebForwardingIps(ctx, *webRuleModel); err != nil {
  31. return fmt.Errorf("更新Web转发规则失败: %w", err)
  32. }
  33. return nil
  34. }
  35. // CleanupDatabaseRecords 清理数据库记录
  36. func (s *AidedWebService) CleanupDatabaseRecords(ctx context.Context, id int) error {
  37. if err := s.webForwardingRepository.DeleteWebForwarding(ctx, int64(id)); err != nil {
  38. return fmt.Errorf("删除Web转发记录失败: %w", err)
  39. }
  40. if err := s.webForwardingRepository.DeleteWebForwardingIpsById(ctx, id); err != nil {
  41. return fmt.Errorf("删除Web转发规则失败: %w", err)
  42. }
  43. return nil
  44. }