database: Store directory path in 'data' of directory documents.

We're planning to have mail documents refer to directory documents for
the path of the containing directory. To support this, we need the
path in the data, (since the path in the 'directory' term can be
irretrievable as it will be the SHA1 sum of the path for a very long
path).
This commit is contained in:
Carl Worth 2009-12-20 15:46:41 -08:00
parent 406ec4b15d
commit 4c1cca888f

View file

@ -87,12 +87,19 @@ typedef struct {
* The directory document contains the following terms: * The directory document contains the following terms:
* *
* directory: The directory path (relative to the database path) * directory: The directory path (relative to the database path)
* Or the SHA1 sum of the directory path (if the
* path itself is too long to fit in a Xapian
* term).
*
* parent: The document ID of the parent directory document. * parent: The document ID of the parent directory document.
* Top-level directories will have a parent value of 0. * Top-level directories will have a parent value of 0.
* *
* and has a single value: * and has a single value:
* *
* TIMESTAMP: The mtime of the directory (at last scan) * TIMESTAMP: The mtime of the directory (at last scan)
*
* The data portion of a directory document contains the path of the
* directory (relative to the datbase path).
*/ */
/* With these prefix values we follow the conventions published here: /* With these prefix values we follow the conventions published here:
@ -754,6 +761,8 @@ notmuch_database_set_directory_mtime (notmuch_database_t *notmuch,
doc.add_term (term); doc.add_term (term);
talloc_free (term); talloc_free (term);
doc.set_data (path);
ret = _notmuch_database_find_parent_id (notmuch, path, ret = _notmuch_database_find_parent_id (notmuch, path,
&parent_id); &parent_id);
if (ret) if (ret)