From a4288b06bf13210721c8f2fae64bc12c118f9041 Mon Sep 17 00:00:00 2001 From: Julio Capote Date: Thu, 29 Dec 2022 15:08:16 -0500 Subject: refactor --- models/persister.go | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 models/persister.go (limited to 'models/persister.go') diff --git a/models/persister.go b/models/persister.go new file mode 100644 index 0000000..71cddc8 --- /dev/null +++ b/models/persister.go @@ -0,0 +1,37 @@ +package models + +import ( + "github.com/dgraph-io/badger/v3" + "go.uber.org/zap" +) + +type Persister struct { + log *zap.SugaredLogger + db *badger.DB +} + +func NewPersister(log *zap.SugaredLogger, db *badger.DB) *Persister { + aso := &Persister{log: log, db: db} + return aso +} + +func (p *Persister) Store(model model) error { + err := p.db.Update(model.Save) + return err +} + +func (p *Persister) Count(model model) (int, error) { + opts := badger.DefaultIteratorOptions + opts.PrefetchValues = false + var count int + err := p.db.View(func(txn *badger.Txn) error { + it := txn.NewIterator(opts) + defer it.Close() + prefix := []byte(model.Keybase()) + for it.Seek(prefix); it.ValidForPrefix([]byte(prefix)); it.Next() { + count++ + } + return nil + }) + return count, err +} -- cgit v1.2.3