12345678910111213141516171819202122232425262728293031323334353637383940 |
- 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
- }
|