func incrCount(tde *kv.TiedotEngine) int64 { mu.Lock() defer mu.Unlock() counter := new(Counter) id, err := tde.Query(counterCollection).Has(kv.Path{"Count"}).OneInto(counter) if err == kv.ErrNotFound { log.Warning("Counter not found, saving new one.") _, err = tde.Insert(counterCollection, Counter{Count: 1}) if err != nil { log.Errorf("Error saving new counter err=%s", err.Error()) } r, err := tde.All(counterCollection) log.V(3).Infof("total of %d results=%v, err=%v", len(r), r, err) return 1 } if err != nil { log.Error("Failure getting counter err:" + err.Error()) panic(err) } counter.Count++ err = tde.Update(counterCollection, id, counter) if err != nil { log.Error("Failure updating counter err:" + err.Error()) panic(err) } return counter.Count }
func incrHits(tde *kv.TiedotEngine, key string) uint64 { mu.Lock() defer mu.Unlock() short := new(Shortened) id, err := tde.Query(urlCollection).Equals( kv.Path{"Short"}, base62.DecodeString(key), ).OneInto(short) if err == kv.ErrNotFound { log.Warningf("Short URL %s not found", key) return 0 } else if err != nil { log.Errorf("Failure getting shortened URL key=%s err:%v", key, err) return 0 } short.HitCount++ err = tde.Update(urlCollection, id, short) if err != nil { log.Error("Failure updating hitcount key=%s err=%s", key, err.Error()) return 0 } return short.HitCount }