aboutsummaryrefslogtreecommitdiff
path: root/models/persister.go
diff options
context:
space:
mode:
authorJulio Capote <jcapote@gmail.com>2022-12-30 03:32:16 +0000
committerJulio Capote <jcapote@gmail.com>2022-12-30 03:32:16 +0000
commit74ffcfe6b2c80b7cf459798dc42bd278075ccb50 (patch)
tree231880fb4de3cf900d03c33531d2afc9603432d3 /models/persister.go
parenta4288b06bf13210721c8f2fae64bc12c118f9041 (diff)
downloadcommunique-74ffcfe6b2c80b7cf459798dc42bd278075ccb50.tar.gz
experiment with write JSON to database and munge it for collections
Diffstat (limited to 'models/persister.go')
-rw-r--r--models/persister.go20
1 files changed, 20 insertions, 0 deletions
diff --git a/models/persister.go b/models/persister.go
index 71cddc8..3729c81 100644
--- a/models/persister.go
+++ b/models/persister.go
@@ -35,3 +35,23 @@ func (p *Persister) Count(model model) (int, error) {
})
return count, err
}
+
+func (p *Persister) Collect(model model) ([]string, error) {
+ var result []string
+ err := p.db.View(func(txn *badger.Txn) error {
+ opts := badger.DefaultIteratorOptions
+ opts.PrefetchValues = false // TODO Maybe we want true here
+ it := txn.NewIterator(opts)
+ defer it.Close()
+ prefix := []byte(model.Keybase())
+ for it.Seek(prefix); it.ValidForPrefix(prefix); it.Next() {
+ item := it.Item()
+ item.Value(func(v []byte) error {
+ result = append(result, string(v))
+ return nil
+ })
+ }
+ return nil
+ })
+ return result, err
+}