proxy.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package repository
  2. import (
  3. "context"
  4. "encoding/json"
  5. "github.com/go-nunu/nunu-layout-advanced/internal/model"
  6. )
  7. type ProxyRepository interface {
  8. // 获取反向代理ID
  9. GetProxyId(ctx context.Context, cndWebId int64) (int64, error)
  10. GetProxy(ctx context.Context, id int64) (*model.Proxy, error)
  11. }
  12. func NewProxyRepository(
  13. repository *Repository,
  14. ) ProxyRepository {
  15. return &proxyRepository{
  16. Repository: repository,
  17. }
  18. }
  19. type proxyRepository struct {
  20. *Repository
  21. }
  22. // 获取反向代理ID
  23. func (r *proxyRepository) GetProxyId(ctx context.Context, cndWebId int64) (int64, error) {
  24. type ReverseProxy struct {
  25. IsOn bool
  26. IsPrior bool
  27. ReverseProxyId int64
  28. }
  29. var reverseProxyByte string
  30. if err := r.DBWithName(ctx,"cdn").WithContext(ctx).Table("cloud_servers").Where("id = ?", cndWebId).Select("reverseProxy").Scan(&reverseProxyByte).Error; err != nil {
  31. return 0, err
  32. }
  33. var proxyData ReverseProxy
  34. if reverseProxyByte != "" {
  35. if err := json.Unmarshal([]byte(reverseProxyByte), &proxyData); err != nil {
  36. return 0, err
  37. }
  38. return proxyData.ReverseProxyId, nil
  39. }
  40. return 0, nil
  41. }
  42. func (r *proxyRepository) GetProxy(ctx context.Context, id int64) (*model.Proxy, error) {
  43. var res model.Proxy
  44. if err := r.DBWithName(ctx,"cdn").Table("cloud_reverse_proxies").Where("id = ?", id).First(&res).Error; err != nil {
  45. return nil, err
  46. }
  47. return &res, nil
  48. }