diff --git a/info.go b/info.go new file mode 100755 index 0000000..d796f6f --- /dev/null +++ b/info.go @@ -0,0 +1,50 @@ +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 +} diff --git a/sisyphus/sisyphus.go b/sisyphus/sisyphus.go index 49e3f90..a59fddb 100644 --- a/sisyphus/sisyphus.go +++ b/sisyphus/sisyphus.go @@ -13,7 +13,6 @@ import ( log "github.com/sirupsen/logrus" "github.com/carlostrub/sisyphus" - "gopkg.in/urfave/cli.v2" ) var ( @@ -239,7 +238,7 @@ COPYRIGHT: defer sisyphus.CloseDatabases(dbs) for _, db := range dbs { - gTotal, jTotal, gWords, jWords := info(db) + gTotal, jTotal, gWords, jWords := sisyphus.Info(db) log.WithFields(log.Fields{ "good mails learned": gTotal, "junk mails learned": jTotal,