structconv.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package statistic
  2. import "sync"
  3. type DailySummaryExport struct {
  4. TotalRequest int64 //Total request of the day
  5. ErrorRequest int64 //Invalid request of the day, including error or not found
  6. ValidRequest int64 //Valid request of the day
  7. ForwardTypes map[string]int
  8. RequestOrigin map[string]int
  9. RequestClientIp map[string]int
  10. }
  11. func DailySummaryToExport(summary DailySummary) DailySummaryExport {
  12. export := DailySummaryExport{
  13. TotalRequest: summary.TotalRequest,
  14. ErrorRequest: summary.ErrorRequest,
  15. ValidRequest: summary.ValidRequest,
  16. ForwardTypes: make(map[string]int),
  17. RequestOrigin: make(map[string]int),
  18. RequestClientIp: make(map[string]int),
  19. }
  20. summary.ForwardTypes.Range(func(key, value interface{}) bool {
  21. export.ForwardTypes[key.(string)] = value.(int)
  22. return true
  23. })
  24. summary.RequestOrigin.Range(func(key, value interface{}) bool {
  25. export.RequestOrigin[key.(string)] = value.(int)
  26. return true
  27. })
  28. summary.RequestClientIp.Range(func(key, value interface{}) bool {
  29. export.RequestClientIp[key.(string)] = value.(int)
  30. return true
  31. })
  32. return export
  33. }
  34. func DailySummaryExportToSummary(export DailySummaryExport) DailySummary {
  35. summary := DailySummary{
  36. TotalRequest: export.TotalRequest,
  37. ErrorRequest: export.ErrorRequest,
  38. ValidRequest: export.ValidRequest,
  39. ForwardTypes: &sync.Map{},
  40. RequestOrigin: &sync.Map{},
  41. RequestClientIp: &sync.Map{},
  42. }
  43. for k, v := range export.ForwardTypes {
  44. summary.ForwardTypes.Store(k, v)
  45. }
  46. for k, v := range export.RequestOrigin {
  47. summary.RequestOrigin.Store(k, v)
  48. }
  49. for k, v := range export.RequestClientIp {
  50. summary.RequestClientIp.Store(k, v)
  51. }
  52. return summary
  53. }