|
@@ -2,23 +2,17 @@ package main
|
|
|
|
|
|
import (
|
|
|
"fmt"
|
|
|
- "io"
|
|
|
+ "log"
|
|
|
"time"
|
|
|
|
|
|
fho "git.mokkon.com/sainw/fho_forward/client"
|
|
|
)
|
|
|
|
|
|
const (
|
|
|
- // address = "fhogrpc-test.seinmaungengineering.com:7091"
|
|
|
- address = "localhost:7090"
|
|
|
+ address = "fhogrpc-test.seinmaungengineering.com:7091"
|
|
|
+ // address = "localhost:7090"
|
|
|
)
|
|
|
|
|
|
-type Product struct {
|
|
|
- ID string
|
|
|
- Name string
|
|
|
- Color string
|
|
|
-}
|
|
|
-
|
|
|
type RegionProduct struct {
|
|
|
ProductID string
|
|
|
Name string
|
|
@@ -26,12 +20,6 @@ type RegionProduct struct {
|
|
|
Variant float32
|
|
|
}
|
|
|
|
|
|
-func ProductFromMap(m map[string]interface{}) *Product {
|
|
|
- return &Product{ID: fho.ToString(m["id"]),
|
|
|
- Name: fho.ToString(m["name"]),
|
|
|
- Color: fho.ToString(m["color"])}
|
|
|
-}
|
|
|
-
|
|
|
func RegionProductFromMap(m map[string]interface{}) *RegionProduct {
|
|
|
return &RegionProduct{ProductID: fho.ToString(m["product_id"]),
|
|
|
Name: fho.ToString(m["name"]),
|
|
@@ -39,75 +27,40 @@ func RegionProductFromMap(m map[string]interface{}) *RegionProduct {
|
|
|
Variant: fho.ToFloat32(m["variant"])}
|
|
|
}
|
|
|
func main() {
|
|
|
- // c, err := fho.NewClient(address, "da910506-4bdc-4dc2-9481-58a4e3e3c8bf", "1adf4633-7e9e-4bd0-b512-7b087d9c9719")
|
|
|
- client, err := fho.NewClient(address, "bd38e9ac-210a-4e85-865c-401270c07220", "8c95f7fa-3071-427d-a27a-6f96e1d9590e")
|
|
|
+ client, err := fho.NewClient(address, "da910506-4bdc-4dc2-9481-58a4e3e3c8bf", "1adf4633-7e9e-4bd0-b512-7b087d9c9719")
|
|
|
+ // client, err := fho.NewClient(address, "bd38e9ac-210a-4e85-865c-401270c07220", "8c95f7fa-3071-427d-a27a-6f96e1d9590e")
|
|
|
if err != nil {
|
|
|
panic(err)
|
|
|
}
|
|
|
- go listen(client)
|
|
|
- // query(client)
|
|
|
- // for {
|
|
|
- // time.Sleep(time.Second * 5)
|
|
|
- // // query(client)
|
|
|
- // }
|
|
|
- select {}
|
|
|
-}
|
|
|
-
|
|
|
-func listen(client *fho.FhoClient) error {
|
|
|
- snap, err := client.QuerySnapshot("products", time.Now().Add(time.Hour*-114))
|
|
|
+ go listenProducts(client)
|
|
|
+ products, err := fho.QueryProducts(client, time.Now().Add(time.Hour*-114))
|
|
|
if err != nil {
|
|
|
- fmt.Println("listen error:", err.Error())
|
|
|
- return err
|
|
|
+ log.Println("Error query:", err.Error())
|
|
|
}
|
|
|
- for {
|
|
|
- data, err := snap.Next()
|
|
|
- if err == io.EOF {
|
|
|
- print("Error EOF")
|
|
|
- break
|
|
|
- }
|
|
|
- if err != nil {
|
|
|
- print("Error:", err.Error())
|
|
|
- break
|
|
|
- }
|
|
|
- for _, rec := range data {
|
|
|
- _product := ProductFromMap(rec)
|
|
|
- fmt.Printf("Listener========================\n")
|
|
|
- printProduct(_product)
|
|
|
- }
|
|
|
+ for _, product := range products {
|
|
|
+ fmt.Println("Query=====>")
|
|
|
+ printProduct(product)
|
|
|
}
|
|
|
- return nil
|
|
|
+ select {}
|
|
|
}
|
|
|
|
|
|
-func query(client *fho.FhoClient) error {
|
|
|
- data, err := client.Query("region_product_variants", time.Now().Add(time.Hour*-114))
|
|
|
- if err != nil {
|
|
|
- fmt.Println("query error:", err.Error())
|
|
|
- return err
|
|
|
- }
|
|
|
- for _, rec := range data {
|
|
|
- _product := RegionProductFromMap(rec)
|
|
|
- printRegionProduct(_product)
|
|
|
- }
|
|
|
- return nil
|
|
|
+func listenProducts(client *fho.FhoClient) error {
|
|
|
+ err := fho.ListenOnProducts(client, time.Now().Add(time.Hour*-114), func(products []*fho.Product) {
|
|
|
+ for _, p := range products {
|
|
|
+ fmt.Println("Listening=====>")
|
|
|
+ printProduct(p)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return err
|
|
|
}
|
|
|
|
|
|
-func printProduct(p *Product) {
|
|
|
+func printProduct(p *fho.Product) {
|
|
|
fmt.Printf("ID : %v\n", p.ID)
|
|
|
fmt.Printf("Name : %v\n", p.Name)
|
|
|
fmt.Printf("Color : %v\n", p.Color)
|
|
|
-}
|
|
|
|
|
|
-func printRegionProduct(p *RegionProduct) {
|
|
|
- fmt.Printf("Product ID : %v\n", p.ProductID)
|
|
|
- fmt.Printf("Name : %v\n", p.Name)
|
|
|
- fmt.Printf("Color : %v\n", p.Color)
|
|
|
- fmt.Printf("Variant : %v\n", p.Variant)
|
|
|
-}
|
|
|
-func dumpMap(m []map[string]interface{}) {
|
|
|
- for _, r := range m {
|
|
|
- for k, v := range r {
|
|
|
- fmt.Printf("%v : %v\n", k, v)
|
|
|
- }
|
|
|
- fmt.Printf("-----------------\n")
|
|
|
- }
|
|
|
+ fmt.Printf("IsCreated : %v\n", p.IsCreated)
|
|
|
+ fmt.Printf("IsUpdated : %v\n", p.IsUpdated)
|
|
|
+ fmt.Printf("IsDeleted : %v\n", p.IsDeleted)
|
|
|
+ fmt.Printf("LatestUpdatedTime : %v\n", p.LatestUpdatedTime)
|
|
|
}
|