mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 17:34:54 +01:00
Add comment documenting our current database schema.
I've got schemes to change this schema somewhat dramatically, so I want a place to be able to record and review those changes.
This commit is contained in:
parent
1c2bac747e
commit
32ecfe72a1
1 changed files with 49 additions and 0 deletions
49
database.cc
49
database.cc
|
@ -35,6 +35,55 @@ typedef struct {
|
||||||
const char *prefix;
|
const char *prefix;
|
||||||
} prefix_t;
|
} prefix_t;
|
||||||
|
|
||||||
|
/* Here's the current schema for our database:
|
||||||
|
*
|
||||||
|
* We currently have two different types of documents: mail and timestamps.
|
||||||
|
*
|
||||||
|
* Mail document
|
||||||
|
* -------------
|
||||||
|
* A mail document is associated with a particular email message file
|
||||||
|
* on disk. It is indexed with the following prefixed terms:
|
||||||
|
*
|
||||||
|
* Single terms of given prefix:
|
||||||
|
*
|
||||||
|
* type: mail
|
||||||
|
*
|
||||||
|
* id: Unique ID of mail, (from Message-ID header or generated
|
||||||
|
* as "notmuch-sha1-<sha1_sum_of_entire_file>.
|
||||||
|
*
|
||||||
|
* Multiple terms of given prefix:
|
||||||
|
*
|
||||||
|
* ref: The message IDs from all In-Reply-To and References
|
||||||
|
* headers in the message.
|
||||||
|
*
|
||||||
|
* tag: Any tags associated with this message by the user.
|
||||||
|
*
|
||||||
|
* thread: The thread ID of all threads to which the mail belongs
|
||||||
|
*
|
||||||
|
* A mail document also has two values:
|
||||||
|
*
|
||||||
|
* TIMESTAMP: The time_t value corresponding to the message's
|
||||||
|
* Date header.
|
||||||
|
*
|
||||||
|
* MESSAGE_ID: The unique ID of the mail mess (see "id" above)
|
||||||
|
*
|
||||||
|
* Timestamp document
|
||||||
|
* ------------------
|
||||||
|
* A timestamp document is used by a client of the notmuch library to
|
||||||
|
* maintain data necessary to allow for efficient polling of mail
|
||||||
|
* directories. The notmuch library does no interpretation of
|
||||||
|
* timestamps, but merely allows the user to store and retrieve
|
||||||
|
* timestamps as name/value pairs.
|
||||||
|
*
|
||||||
|
* The timestamp document is indexed with a single prefixed term:
|
||||||
|
*
|
||||||
|
* timestamp: The user's key value (likely a directory name)
|
||||||
|
*
|
||||||
|
* and has a single value:
|
||||||
|
*
|
||||||
|
* TIMETAMPS: The time_t value from the user.
|
||||||
|
*/
|
||||||
|
|
||||||
/* With these prefix values we follow the conventions published here:
|
/* With these prefix values we follow the conventions published here:
|
||||||
*
|
*
|
||||||
* http://xapian.org/docs/omega/termprefixes.html
|
* http://xapian.org/docs/omega/termprefixes.html
|
||||||
|
|
Loading…
Reference in a new issue