lib: Indicate whether notmuch_database_remove_message removed anything.

Similar to the return value of notmuch_database_add_message, we now
enhance the return value of notmuch_database_remove_message to
indicate whether the message document was entirely removed (SUCCESS)
or whether only this filename was removed and the document exists
under other filenamed (DUPLICATE_MESSAGE_ID).
This commit is contained in:
Carl Worth 2010-01-06 10:06:00 -08:00
parent 777cd23d9d
commit 4b418343f6
2 changed files with 18 additions and 7 deletions

View file

@ -1201,14 +1201,16 @@ notmuch_database_remove_message (notmuch_database_t *notmuch,
strncmp ((*j).c_str (), prefix, strlen (prefix))) strncmp ((*j).c_str (), prefix, strlen (prefix)))
{ {
db->delete_document (document.get_docid ()); db->delete_document (document.get_docid ());
status = NOTMUCH_STATUS_SUCCESS;
} else { } else {
db->replace_document (document.get_docid (), document); db->replace_document (document.get_docid (), document);
status = NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID;
} }
} }
talloc_free (local); talloc_free (local);
return NOTMUCH_STATUS_SUCCESS; return status;
} }
notmuch_tags_t * notmuch_tags_t *

View file

@ -237,12 +237,21 @@ notmuch_database_add_message (notmuch_database_t *database,
/* Remove a message from the given notmuch database. /* Remove a message from the given notmuch database.
* *
* Note that the only this particular filename association is removed * Note that only this particular filename association is removed from
* from the database. If the same message (as determined by the * the database. If the same message (as determined by the message ID)
* message ID) is still available via other filenames, then the * is still available via other filenames, then the message will
* message will persist in the database for those filenames. When the * persist in the database for those filenames. When the last filename
* last filename is removed for a particular message, the database * is removed for a particular message, the database content for that
* content for that message will be entirely removed. * message will be entirely removed.
*
* Return value:
*
* NOTMUCH_STATUS_SUCCESS: The last filename was removed and the
* message was removed from the database.
*
* NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID: This filename was removed but
* the message persists in the database with at least one other
* filename.
*/ */
notmuch_status_t notmuch_status_t
notmuch_database_remove_message (notmuch_database_t *database, notmuch_database_remove_message (notmuch_database_t *database,