notmuch: add IndexFile and DeleteMessage methods to notmuch.DB

The new IndexFile and DeleteMessage allow dynamically inserting and
removing files to/from a notmuch database.

Signed-off-by: Julian Pidancet <julian.pidancet@oracle.com>
Acked-by: Robin Jarry <robin@jarry.cc>
Acked-by: Tim Culverhouse <tim@timculverhouse.com>
This commit is contained in:
Julian Pidancet 2022-10-26 22:29:01 +02:00 committed by Robin Jarry
parent 748e60e6ca
commit 19d16420de

View file

@ -250,6 +250,35 @@ func (db *DB) MsgFilenames(key string) ([]string, error) {
return filenames, err return filenames, err
} }
func (db *DB) DeleteMessage(filename string) error {
return db.withConnection(true, func(ndb *notmuch.DB) error {
err := ndb.RemoveMessage(filename)
if err != nil && !errors.Is(err, notmuch.ErrDuplicateMessageID) {
return err
}
return nil
})
}
func (db *DB) IndexFile(filename string) (string, error) {
var key string
err := db.withConnection(true, func(ndb *notmuch.DB) error {
msg, err := ndb.AddMessage(filename)
if err != nil && !errors.Is(err, notmuch.ErrDuplicateMessageID) {
return err
}
defer msg.Close()
if err := msg.MaildirFlagsToTags(); err != nil {
return err
}
key = msg.ID()
return nil
})
return key, err
}
func (db *DB) msgModify(key string, func (db *DB) msgModify(key string,
cb func(*notmuch.Message) error, cb func(*notmuch.Message) error,
) error { ) error {