From 379d9dee1c5f451b79b1a4f49fbdc120f74f371b Mon Sep 17 00:00:00 2001 From: Carlo Strub Date: Thu, 18 Jan 2018 20:50:16 +0100 Subject: [PATCH] move info into the library --- info.go | 50 ++++++++++++++++++++++++++++++++++++++++++++ sisyphus/sisyphus.go | 3 +-- 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100755 info.go 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,