* mu-msg-field: add support for maildir field; more clear separate
index/term/value for xapian
This commit is contained in:
@ -21,9 +21,10 @@
|
|||||||
#include "mu-msg-fields.h"
|
#include "mu-msg-fields.h"
|
||||||
|
|
||||||
enum _FieldFlags {
|
enum _FieldFlags {
|
||||||
FLAG_XAPIAN = 1 << 1, /* field stored as a string in xapian db */
|
FLAG_GMIME = 1 << 1, /* field retrieved through gmime */
|
||||||
FLAG_GMIME = 1 << 2, /* field retrieved by through gmime */
|
FLAG_XAPIAN_INDEX = 1 << 2, /* field is indexed in xapian */
|
||||||
FLAG_XAPIAN_INDEX = 1 << 3 /* field is indexed in xapian */
|
FLAG_XAPIAN_TERM = 1 << 3, /* field stored as term in xapian */
|
||||||
|
FLAG_XAPIAN_VALUE = 1 << 4 /* field stored as value in xapian */
|
||||||
};
|
};
|
||||||
typedef enum _FieldFlags FieldFlags;
|
typedef enum _FieldFlags FieldFlags;
|
||||||
|
|
||||||
@ -41,7 +42,6 @@ struct _MuMsgField {
|
|||||||
|
|
||||||
|
|
||||||
static const MuMsgField FIELD_DATA[] = {
|
static const MuMsgField FIELD_DATA[] = {
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_BODY_TEXT,
|
MU_MSG_FIELD_ID_BODY_TEXT,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
@ -60,42 +60,49 @@ static const MuMsgField FIELD_DATA[] = {
|
|||||||
MU_MSG_FIELD_ID_CC,
|
MU_MSG_FIELD_ID_CC,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"cc", "c", "C",
|
"cc", "c", "C",
|
||||||
FLAG_XAPIAN | FLAG_GMIME | FLAG_XAPIAN_INDEX
|
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_DATE,
|
MU_MSG_FIELD_ID_DATE,
|
||||||
MU_MSG_FIELD_TYPE_TIME_T,
|
MU_MSG_FIELD_TYPE_TIME_T,
|
||||||
"date", "d", "D",
|
"date", "d", "D",
|
||||||
FLAG_XAPIAN | FLAG_GMIME
|
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_FLAGS,
|
MU_MSG_FIELD_ID_FLAGS,
|
||||||
MU_MSG_FIELD_TYPE_INT,
|
MU_MSG_FIELD_TYPE_INT,
|
||||||
"flags", "F", "G",
|
"flags", "F", "G",
|
||||||
FLAG_XAPIAN | FLAG_GMIME
|
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_FROM,
|
MU_MSG_FIELD_ID_FROM,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"from", "f", "F",
|
"from", "f", "F",
|
||||||
FLAG_XAPIAN | FLAG_GMIME | FLAG_XAPIAN_INDEX
|
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_PATH,
|
MU_MSG_FIELD_ID_PATH,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"path", "p", "P",
|
"path", "p", "P",
|
||||||
FLAG_XAPIAN | FLAG_GMIME | FLAG_XAPIAN_INDEX
|
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
MU_MSG_FIELD_ID_MAILDIR,
|
||||||
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
|
"maildir", "m", "M",
|
||||||
|
FLAG_GMIME | FLAG_XAPIAN_TERM | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_PRIORITY,
|
MU_MSG_FIELD_ID_PRIORITY,
|
||||||
MU_MSG_FIELD_TYPE_INT,
|
MU_MSG_FIELD_TYPE_INT,
|
||||||
"prio", "P", "I",
|
"prio", "P", "I",
|
||||||
FLAG_GMIME | FLAG_XAPIAN
|
FLAG_GMIME | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -105,25 +112,25 @@ static const MuMsgField FIELD_DATA[] = {
|
|||||||
FLAG_GMIME
|
FLAG_GMIME
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_SUBJECT,
|
MU_MSG_FIELD_ID_SUBJECT,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"subject", "s", "S",
|
"subject", "s", "S",
|
||||||
FLAG_XAPIAN | FLAG_GMIME | FLAG_XAPIAN_INDEX
|
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_TO,
|
MU_MSG_FIELD_ID_TO,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"to", "t", "T",
|
"to", "t", "T",
|
||||||
FLAG_XAPIAN | FLAG_GMIME | FLAG_XAPIAN_INDEX
|
FLAG_GMIME | FLAG_XAPIAN_INDEX | FLAG_XAPIAN_VALUE
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
MU_MSG_FIELD_ID_MSGID,
|
MU_MSG_FIELD_ID_MSGID,
|
||||||
MU_MSG_FIELD_TYPE_STRING,
|
MU_MSG_FIELD_TYPE_STRING,
|
||||||
"msgid", "m", "M",
|
"msgid", "i", "I",
|
||||||
FLAG_GMIME | FLAG_XAPIAN
|
FLAG_GMIME | FLAG_XAPIAN_TERM
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -197,15 +204,7 @@ mu_msg_field_from_id (MuMsgFieldId id)
|
|||||||
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_field_is_xapian_enabled (const MuMsgField *field)
|
mu_msg_field_gmime (const MuMsgField *field)
|
||||||
{
|
|
||||||
g_return_val_if_fail (field, FALSE);
|
|
||||||
return field->_flags & (FLAG_XAPIAN|FLAG_XAPIAN_INDEX);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
gboolean
|
|
||||||
mu_msg_field_is_gmime_enabled (const MuMsgField *field)
|
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (field, FALSE);
|
g_return_val_if_fail (field, FALSE);
|
||||||
return field->_flags & FLAG_GMIME;
|
return field->_flags & FLAG_GMIME;
|
||||||
@ -213,12 +212,28 @@ mu_msg_field_is_gmime_enabled (const MuMsgField *field)
|
|||||||
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_field_is_xapian_indexable (const MuMsgField *field)
|
mu_msg_field_xapian_index (const MuMsgField *field)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (field, FALSE);
|
g_return_val_if_fail (field, FALSE);
|
||||||
return field->_flags & FLAG_XAPIAN_INDEX;
|
return field->_flags & FLAG_XAPIAN_INDEX;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
mu_msg_field_xapian_value (const MuMsgField *field)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (field, FALSE);
|
||||||
|
return field->_flags & FLAG_XAPIAN_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
gboolean
|
||||||
|
mu_msg_field_xapian_term (const MuMsgField *field)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (field, FALSE);
|
||||||
|
return field->_flags & FLAG_XAPIAN_TERM;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
mu_msg_field_is_numeric (const MuMsgField *field)
|
mu_msg_field_is_numeric (const MuMsgField *field)
|
||||||
|
|||||||
@ -33,6 +33,7 @@ enum _MuMsgFieldId {
|
|||||||
MU_MSG_FIELD_ID_FLAGS,
|
MU_MSG_FIELD_ID_FLAGS,
|
||||||
MU_MSG_FIELD_ID_FROM,
|
MU_MSG_FIELD_ID_FROM,
|
||||||
MU_MSG_FIELD_ID_PATH,
|
MU_MSG_FIELD_ID_PATH,
|
||||||
|
MU_MSG_FIELD_ID_MAILDIR,
|
||||||
MU_MSG_FIELD_ID_PRIORITY,
|
MU_MSG_FIELD_ID_PRIORITY,
|
||||||
MU_MSG_FIELD_ID_SIZE,
|
MU_MSG_FIELD_ID_SIZE,
|
||||||
MU_MSG_FIELD_ID_SUBJECT,
|
MU_MSG_FIELD_ID_SUBJECT,
|
||||||
@ -136,15 +137,6 @@ MuMsgFieldType mu_msg_field_type (const MuMsgField *field) G_GNUC_CONST;
|
|||||||
*/
|
*/
|
||||||
gboolean mu_msg_field_is_numeric (const MuMsgField *field) G_GNUC_CONST;
|
gboolean mu_msg_field_is_numeric (const MuMsgField *field) G_GNUC_CONST;
|
||||||
|
|
||||||
/**
|
|
||||||
\ * is the field Xapian-enabled? That is, should this field be stored
|
|
||||||
* (as a string) in the Xapian database?
|
|
||||||
*
|
|
||||||
* @param field a MuMsgField
|
|
||||||
*
|
|
||||||
* @return TRUE if the field is Xapian-enabled, FALSE otherwise
|
|
||||||
*/
|
|
||||||
gboolean mu_msg_field_is_xapian_enabled (const MuMsgField *field) G_GNUC_PURE;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -156,7 +148,25 @@ gboolean mu_msg_field_is_xapian_enabled (const MuMsgField *field) G_GNUC_PURE;
|
|||||||
*
|
*
|
||||||
* @return TRUE if the field is Xapian-enabled, FALSE otherwise
|
* @return TRUE if the field is Xapian-enabled, FALSE otherwise
|
||||||
*/
|
*/
|
||||||
gboolean mu_msg_field_is_xapian_indexable (const MuMsgField *field) G_GNUC_PURE;
|
gboolean mu_msg_field_xapian_index (const MuMsgField *field) G_GNUC_PURE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* should this field be stored as a xapian term?
|
||||||
|
*
|
||||||
|
* @param field a MuMsgField
|
||||||
|
*
|
||||||
|
* @return TRUE if the field is Xapian-enabled, FALSE otherwise
|
||||||
|
*/
|
||||||
|
gboolean mu_msg_field_xapian_term (const MuMsgField *field) G_GNUC_PURE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* should this field be stored as a xapian value?
|
||||||
|
*
|
||||||
|
* @param field a MuMsgField
|
||||||
|
*
|
||||||
|
* @return TRUE if the field is Xapian-enabled, FALSE otherwise
|
||||||
|
*/
|
||||||
|
gboolean mu_msg_field_xapian_value (const MuMsgField *field) G_GNUC_PURE;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -167,7 +177,7 @@ gboolean mu_msg_field_is_xapian_indexable (const MuMsgField *field) G_GNUC_PURE;
|
|||||||
*
|
*
|
||||||
* @return TRUE if the field is Gmime-enabled, FALSE otherwise
|
* @return TRUE if the field is Gmime-enabled, FALSE otherwise
|
||||||
*/
|
*/
|
||||||
gboolean mu_msg_field_is_gmime_enabled (const MuMsgField *field) G_GNUC_PURE;
|
gboolean mu_msg_field_gmime (const MuMsgField *field) G_GNUC_PURE;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user