package client import ( "io" "log" "time" ) func listen(c *FhoClient, object string, lastUpdatedTime time.Time, fn func(*[]map[string]interface{})) error { snap, err := c.QuerySnapshot(object, lastUpdatedTime) if err != nil { log.Println("listen error:", err.Error()) return err } for { data, err := snap.Next() if err == io.EOF { log.Println("Error EOF") break } if err != nil { log.Println("Error:", err.Error()) break } fn(data) } return nil } func ListenOnProducts(c *FhoClient, lastUpdatedTime time.Time, fn func([]*Product)) error { listen(c, "products", lastUpdatedTime, func(data *[]map[string]interface{}) { var products []*Product for _, rec := range *data { _product := ProductFromMap(rec) products = append(products, _product) } fn(products) }) return nil }