You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
sisyphus/info.go

51 lines
985 B
Go

package sisyphus
import (
"github.com/boltdb/bolt"
"github.com/retailnext/hllpp"
)
// Info produces statistics
func Info(db *bolt.DB) (gTotal, jTotal, gWords, jWords uint64) {
_ = db.View(func(tx *bolt.Tx) error {
p := tx.Bucket([]byte("Statistics"))
gRaw := p.Get([]byte("ProcessedGood"))
if len(gRaw) > 0 {
var gHLL *hllpp.HLLPP
gHLL, _ = hllpp.Unmarshal(gRaw)
gTotal = gHLL.Count()
}
jRaw := p.Get([]byte("ProcessedJunk"))
if len(jRaw) > 0 {
var jHLL *hllpp.HLLPP
jHLL, _ = hllpp.Unmarshal(jRaw)
jTotal = jHLL.Count()
}
return nil
})
_ = db.View(func(tx *bolt.Tx) error {
p := tx.Bucket([]byte("Wordlists"))
pj := p.Bucket([]byte("Junk"))
stats := pj.Stats()
jWords = uint64(stats.KeyN)
return nil
})
_ = db.View(func(tx *bolt.Tx) error {
p := tx.Bucket([]byte("Wordlists"))
pg := p.Bucket([]byte("Good"))
stats := pg.Stats()
gWords = uint64(stats.KeyN)
return nil
})
return gTotal, jTotal, gWords, jWords
}