aboutsummaryrefslogtreecommitdiffstats
path: root/worker/notmuch/lib/database.go
diff options
context:
space:
mode:
authorJulian Pidancet <julian.pidancet@oracle.com>2022-10-26 22:29:00 +0200
committerRobin Jarry <robin@jarry.cc>2022-10-27 21:39:41 +0200
commit748e60e6caf6b3b5e752020482e2de09f86e883c (patch)
tree3438994e78267a8597a31b4176438ee897b3151c /worker/notmuch/lib/database.go
parent19e275025538a92bae92b152c4e39bdd22ad7e7f (diff)
downloadaerc-748e60e6caf6b3b5e752020482e2de09f86e883c.tar.gz
notmuch: add MsgFilenames method to notmuch.DB
Multiple files on the filesystem can be referenced under a single key in the notmuch database. MsgFilenames() returns a list of filenames associated with an index key. Signed-off-by: Julian Pidancet <julian.pidancet@oracle.com> Acked-by: Robin Jarry <robin@jarry.cc> Acked-by: Tim Culverhouse <tim@timculverhouse.com>
Diffstat (limited to 'worker/notmuch/lib/database.go')
-rw-r--r--worker/notmuch/lib/database.go25
1 files changed, 25 insertions, 0 deletions
diff --git a/worker/notmuch/lib/database.go b/worker/notmuch/lib/database.go
index 1add2770..880ec3f7 100644
--- a/worker/notmuch/lib/database.go
+++ b/worker/notmuch/lib/database.go
@@ -225,6 +225,31 @@ func (db *DB) MsgTags(key string) ([]string, error) {
return tags, err
}
+func (db *DB) MsgFilenames(key string) ([]string, error) {
+ var filenames []string
+
+ err := db.withConnection(false, func(ndb *notmuch.DB) error {
+ msg, err := ndb.FindMessage(key)
+ if err != nil {
+ return err
+ }
+ defer msg.Close()
+
+ fns := msg.Filenames()
+ var filename string
+ for fns.Next(&filename) {
+ if err != nil && !errors.Is(err, notmuch.ErrDuplicateMessageID) {
+ return err
+ }
+ filenames = append(filenames, filename)
+ }
+
+ return nil
+ })
+
+ return filenames, err
+}
+
func (db *DB) msgModify(key string,
cb func(*notmuch.Message) error,
) error {