main.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package main
  2. import (
  3. "fmt"
  4. "io"
  5. "time"
  6. fho "git.mokkon.com/sainw/fho_forward/client"
  7. )
  8. const (
  9. // address = "fhogrpc-test.seinmaungengineering.com:7091"
  10. address = "localhost:7090"
  11. )
  12. type Product struct {
  13. ID string
  14. Name string
  15. Color string
  16. }
  17. type RegionProduct struct {
  18. ProductID string
  19. Name string
  20. Color string
  21. Variant float32
  22. }
  23. func ProductFromMap(m map[string]interface{}) *Product {
  24. return &Product{ID: fho.ToString(m["id"]),
  25. Name: fho.ToString(m["name"]),
  26. Color: fho.ToString(m["color"])}
  27. }
  28. func RegionProductFromMap(m map[string]interface{}) *RegionProduct {
  29. return &RegionProduct{ProductID: fho.ToString(m["product_id"]),
  30. Name: fho.ToString(m["name"]),
  31. Color: fho.ToString(m["color"]),
  32. Variant: fho.ToFloat32(m["variant"])}
  33. }
  34. func main() {
  35. // c, err := fho.NewClient(address, "da910506-4bdc-4dc2-9481-58a4e3e3c8bf", "1adf4633-7e9e-4bd0-b512-7b087d9c9719")
  36. client, err := fho.NewClient(address, "bd38e9ac-210a-4e85-865c-401270c07220", "8c95f7fa-3071-427d-a27a-6f96e1d9590e")
  37. if err != nil {
  38. panic(err)
  39. }
  40. go listen(client)
  41. // query(client)
  42. // for {
  43. // time.Sleep(time.Second * 5)
  44. // // query(client)
  45. // }
  46. select {}
  47. }
  48. func listen(client *fho.FhoClient) error {
  49. snap, err := client.QuerySnapshot("products", time.Now().Add(time.Hour*-114))
  50. if err != nil {
  51. fmt.Println("listen error:", err.Error())
  52. return err
  53. }
  54. for {
  55. data, err := snap.Next()
  56. if err == io.EOF {
  57. print("Error EOF")
  58. break
  59. }
  60. if err != nil {
  61. print("Error:", err.Error())
  62. break
  63. }
  64. for _, rec := range data {
  65. _product := ProductFromMap(rec)
  66. fmt.Printf("Listener========================\n")
  67. printProduct(_product)
  68. }
  69. }
  70. return nil
  71. }
  72. func query(client *fho.FhoClient) error {
  73. data, err := client.Query("region_product_variants", time.Now().Add(time.Hour*-114))
  74. if err != nil {
  75. fmt.Println("query error:", err.Error())
  76. return err
  77. }
  78. for _, rec := range data {
  79. _product := RegionProductFromMap(rec)
  80. printRegionProduct(_product)
  81. }
  82. return nil
  83. }
  84. func printProduct(p *Product) {
  85. fmt.Printf("ID : %v\n", p.ID)
  86. fmt.Printf("Name : %v\n", p.Name)
  87. fmt.Printf("Color : %v\n", p.Color)
  88. }
  89. func printRegionProduct(p *RegionProduct) {
  90. fmt.Printf("Product ID : %v\n", p.ProductID)
  91. fmt.Printf("Name : %v\n", p.Name)
  92. fmt.Printf("Color : %v\n", p.Color)
  93. fmt.Printf("Variant : %v\n", p.Variant)
  94. }
  95. func dumpMap(m []map[string]interface{}) {
  96. for _, r := range m {
  97. for k, v := range r {
  98. fmt.Printf("%v : %v\n", k, v)
  99. }
  100. fmt.Printf("-----------------\n")
  101. }
  102. }