CamelDB

CamelDB

Synopsis

#define             CAMEL_DB_FILE
#define             CAMEL_DB_IN_MEMORY_TABLE
#define             CAMEL_DB_IN_MEMORY_DB
#define             CAMEL_DB_IN_MEMORY_TABLE_LIMIT
#define             CAMEL_DB_FREE_CACHE_SIZE
#define             CAMEL_DB_SLEEP_INTERVAL
#define             CAMEL_DB_RELEASE_SQLITE_MEMORY
#define             CAMEL_DB_USE_SHARED_CACHE
gint                (*CamelDBCollate)                   (gpointer Param1,
                                                         gint Param2,
                                                         gconstpointer Param3,
                                                         gint Param4,
                                                         gconstpointer Param5);
                    CamelDB;
                    CamelMIRecord;
                    CamelFIRecord;
gint                (*CamelDBSelectCB)                  (gpointer data,
                                                         gint ncol,
                                                         gchar **colvalues,
                                                         gchar **colnames);
CamelDB *           camel_db_open                       (const gchar *path,
                                                         GError **error);
CamelDB *           camel_db_clone                      (CamelDB *cdb,
                                                         GError **error);
void                camel_db_close                      (CamelDB *cdb);
gint                camel_db_command                    (CamelDB *cdb,
                                                         const gchar *stmt,
                                                         GError **error);
gint                camel_db_transaction_command        (CamelDB *cdb,
                                                         GSList *qry_list,
                                                         GError **error);
gint                camel_db_begin_transaction          (CamelDB *cdb,
                                                         GError **error);
gint                camel_db_add_to_transaction         (CamelDB *cdb,
                                                         const gchar *query,
                                                         GError **error);
gint                camel_db_end_transaction            (CamelDB *cdb,
                                                         GError **error);
gint                camel_db_abort_transaction          (CamelDB *cdb,
                                                         GError **error);
gint                camel_db_clear_folder_summary       (CamelDB *cdb,
                                                         const gchar *folder,
                                                         GError **error);
gint                camel_db_rename_folder              (CamelDB *cdb,
                                                         const gchar *old_folder,
                                                         const gchar *new_folder,
                                                         GError **error);
gint                camel_db_delete_folder              (CamelDB *cdb,
                                                         const gchar *folder,
                                                         GError **error);
gint                camel_db_delete_uid                 (CamelDB *cdb,
                                                         const gchar *folder,
                                                         const gchar *uid,
                                                         GError **error);
gint                camel_db_delete_uids                (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         GSList *uids,
                                                         GError **error);
gint                camel_db_delete_vuids               (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         const gchar *shash,
                                                         GSList *uids,
                                                         GError **error);
gint                camel_db_create_folders_table       (CamelDB *cdb,
                                                         GError **error);
gint                camel_db_select                     (CamelDB *cdb,
                                                         const gchar *stmt,
                                                         CamelDBSelectCB callback,
                                                         gpointer data,
                                                         GError **error);
gint                camel_db_write_folder_info_record   (CamelDB *cdb,
                                                         CamelFIRecord *record,
                                                         GError **error);
gint                camel_db_read_folder_info_record    (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         CamelFIRecord **record,
                                                         GError **error);
gint                camel_db_prepare_message_info_table (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         GError **error);
gint                camel_db_write_message_info_record  (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         CamelMIRecord *record,
                                                         GError **error);
gint                camel_db_write_fresh_message_info_record
                                                        (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         CamelMIRecord *record,
                                                         GError **error);
gint                camel_db_read_message_info_records  (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         gpointer p,
                                                         CamelDBSelectCB read_mir_callback,
                                                         GError **error);
gint                camel_db_read_message_info_record_with_uid
                                                        (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         const gchar *uid,
                                                         gpointer p,
                                                         CamelDBSelectCB read_mir_callback,
                                                         GError **error);
gint                camel_db_count_junk_message_info    (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);
gint                camel_db_count_unread_message_info  (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);
gint                camel_db_count_deleted_message_info (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);
gint                camel_db_count_total_message_info   (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);
gint                camel_db_count_visible_message_info (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);
gint                camel_db_count_visible_unread_message_info
                                                        (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);
gint                camel_db_count_junk_not_deleted_message_info
                                                        (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);
gint                camel_db_count_message_info         (CamelDB *cdb,
                                                         const gchar *query,
                                                         guint32 *count,
                                                         GError **error);
void                camel_db_camel_mir_free             (CamelMIRecord *record);
gint                camel_db_create_vfolder             (CamelDB *db,
                                                         const gchar *folder_name,
                                                         GError **error);
gint                camel_db_recreate_vfolder           (CamelDB *db,
                                                         const gchar *folder_name,
                                                         GError **error);
gint                camel_db_delete_uid_from_vfolder    (CamelDB *db,
                                                         gchar *folder_name,
                                                         gchar *vuid,
                                                         GError **error);
gint                camel_db_delete_uid_from_vfolder_transaction
                                                        (CamelDB *db,
                                                         const gchar *folder_name,
                                                         const gchar *vuid,
                                                         GError **error);
GPtrArray *         camel_db_get_vuids_from_vfolder     (CamelDB *db,
                                                         const gchar *folder_name,
                                                         gchar *filter,
                                                         GError **error);
gint                camel_db_add_to_vfolder             (CamelDB *db,
                                                         gchar *folder_name,
                                                         gchar *vuid,
                                                         GError **error);
gint                camel_db_add_to_vfolder_transaction (CamelDB *db,
                                                         const gchar *folder_name,
                                                         const gchar *vuid,
                                                         GError **error);
gint                camel_db_get_folder_uids            (CamelDB *db,
                                                         const gchar *folder_name,
                                                         const gchar *sort_by,
                                                         const gchar *collate,
                                                         GPtrArray *array,
                                                         GError **error);
GPtrArray *         camel_db_get_folder_junk_uids       (CamelDB *db,
                                                         gchar *folder_name,
                                                         GError **error);
GPtrArray *         camel_db_get_folder_deleted_uids    (CamelDB *db,
                                                         const gchar *folder_name,
                                                         GError **error);
gchar *             camel_db_sqlize_string              (const gchar *string);
void                camel_db_free_sqlized_string        (gchar *string);
gchar *             camel_db_get_column_name            (const gchar *raw_name);
gint                camel_db_set_collate                (CamelDB *cdb,
                                                         const gchar *col,
                                                         const gchar *collate,
                                                         CamelDBCollate func);
gint                camel_db_migrate_vfolders_to_14     (CamelDB *cdb,
                                                         const gchar *folder,
                                                         GError **error);
gint                camel_db_start_in_memory_transactions
                                                        (CamelDB *cdb,
                                                         GError **error);
gint                camel_db_flush_in_memory_transactions
                                                        (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         GError **error);
GHashTable *        camel_db_get_folder_preview         (CamelDB *db,
                                                         const gchar *folder_name,
                                                         GError **error);
gint                camel_db_write_preview_record       (CamelDB *db,
                                                         const gchar *folder_name,
                                                         const gchar *uid,
                                                         const gchar *msg,
                                                         GError **error);
gint                camel_db_reset_folder_version       (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         gint reset_version,
                                                         GError **error);

Description

Details

CAMEL_DB_FILE

#define CAMEL_DB_FILE "folders.db"

Since 2.24


CAMEL_DB_IN_MEMORY_TABLE

#define CAMEL_DB_IN_MEMORY_TABLE "EVO_IN_meM_hAnDlE.temp"

Since 2.26


CAMEL_DB_IN_MEMORY_DB

#define CAMEL_DB_IN_MEMORY_DB "EVO_IN_meM_hAnDlE"

Since 2.26


CAMEL_DB_IN_MEMORY_TABLE_LIMIT

#define CAMEL_DB_IN_MEMORY_TABLE_LIMIT 100000

Since 2.26


CAMEL_DB_FREE_CACHE_SIZE

#define CAMEL_DB_FREE_CACHE_SIZE 2 * 1024 * 1024

Since 2.24


CAMEL_DB_SLEEP_INTERVAL

#define CAMEL_DB_SLEEP_INTERVAL 1*10*10

Since 2.24


CAMEL_DB_RELEASE_SQLITE_MEMORY

#define CAMEL_DB_RELEASE_SQLITE_MEMORY if(!g_getenv("CAMEL_SQLITE_FREE_CACHE")) sqlite3_release_memory(CAMEL_DB_FREE_CACHE_SIZE);

Since 2.24


CAMEL_DB_USE_SHARED_CACHE

#define CAMEL_DB_USE_SHARED_CACHE if(g_getenv("CAMEL_SQLITE_SHARED_CACHE")) sqlite3_enable_shared_cache(TRUE);

Since 2.24


CamelDBCollate ()

gint                (*CamelDBCollate)                   (gpointer Param1,
                                                         gint Param2,
                                                         gconstpointer Param3,
                                                         gint Param4,
                                                         gconstpointer Param5);

Since 2.24


CamelDB

typedef struct {
	sqlite3 *db;
	/* this lock has been replaced with a rw lock which sits inside priv. 
	 * This is currently unused. Keeping it, not to break the ABI */
	GMutex *lock;
	CamelDBPrivate *priv;
} CamelDB;

Since 2.24


CamelMIRecord

typedef struct {
	gchar *uid;
	guint32 flags;
	guint32 msg_type;
	guint32 dirty;
	gboolean read;
	gboolean deleted;
	gboolean replied;
	gboolean important;
	gboolean junk;
	gboolean attachment;
	guint32 size;
	time_t dsent;
	time_t dreceived;
	gchar *subject;
	gchar *from;
	gchar *to;
	gchar *cc;
	gchar *mlist;
	gchar *followup_flag;
	gchar *followup_completed_on;
	gchar *followup_due_by;
	gchar *part;
	gchar *labels;
	gchar *usertags;
	gchar *cinfo;
	gchar *bdata;
	gchar *bodystructure;
} CamelMIRecord;

The extensive DB format, supporting basic searching and sorting.

gchar *uid;

Message UID

guint32 flags;

Camel Message info flags

guint32 msg_type;

guint32 dirty;

gboolean read;

boolean read status

gboolean deleted;

boolean deleted status

gboolean replied;

boolean replied status

gboolean important;

boolean important status

gboolean junk;

boolean junk status

gboolean attachment;

boolean attachment status

guint32 size;

size of the mail

time_t dsent;

date sent

time_t dreceived;

date received

gchar *subject;

subject of the mail

gchar *from;

sender

gchar *to;

recipient

gchar *cc;

CC members

gchar *mlist;

message list headers

gchar *followup_flag;

followup flag / also can be queried to see for followup or not

gchar *followup_completed_on;

completed date, can be used to see if completed

gchar *followup_due_by;

to see the due by date

gchar *part;

part / references / thread id

gchar *labels;

labels of mails also called as userflags

gchar *usertags;

composite string of user tags

gchar *cinfo;

content info string - composite string

gchar *bdata;

provider specific data

gchar *bodystructure;

Since 2.24


CamelFIRecord

typedef struct {
	gchar *folder_name;
	guint32 version;
	guint32 flags;
	guint32 nextuid;
	time_t time;
	guint32 saved_count;
	guint32 unread_count;
	guint32 deleted_count;
	guint32 junk_count;
	guint32 visible_count;
	guint32 jnd_count;  /* Junked not deleted */
	gchar *bdata;
} CamelFIRecord;

Since 2.24


CamelDBSelectCB ()

gint                (*CamelDBSelectCB)                  (gpointer data,
                                                         gint ncol,
                                                         gchar **colvalues,
                                                         gchar **colnames);

Since 2.24


camel_db_open ()

CamelDB *           camel_db_open                       (const gchar *path,
                                                         GError **error);

Since 2.24


camel_db_clone ()

CamelDB *           camel_db_clone                      (CamelDB *cdb,
                                                         GError **error);

Since 2.26


camel_db_close ()

void                camel_db_close                      (CamelDB *cdb);

Since 2.24


camel_db_command ()

gint                camel_db_command                    (CamelDB *cdb,
                                                         const gchar *stmt,
                                                         GError **error);

Since 2.24


camel_db_transaction_command ()

gint                camel_db_transaction_command        (CamelDB *cdb,
                                                         GSList *qry_list,
                                                         GError **error);

Since 2.24


camel_db_begin_transaction ()

gint                camel_db_begin_transaction          (CamelDB *cdb,
                                                         GError **error);

Since 2.24


camel_db_add_to_transaction ()

gint                camel_db_add_to_transaction         (CamelDB *cdb,
                                                         const gchar *query,
                                                         GError **error);

Since 2.24


camel_db_end_transaction ()

gint                camel_db_end_transaction            (CamelDB *cdb,
                                                         GError **error);

Since 2.24


camel_db_abort_transaction ()

gint                camel_db_abort_transaction          (CamelDB *cdb,
                                                         GError **error);

Since 2.24


camel_db_clear_folder_summary ()

gint                camel_db_clear_folder_summary       (CamelDB *cdb,
                                                         const gchar *folder,
                                                         GError **error);

Since 2.24


camel_db_rename_folder ()

gint                camel_db_rename_folder              (CamelDB *cdb,
                                                         const gchar *old_folder,
                                                         const gchar *new_folder,
                                                         GError **error);

Since 2.24


camel_db_delete_folder ()

gint                camel_db_delete_folder              (CamelDB *cdb,
                                                         const gchar *folder,
                                                         GError **error);

Since 2.24


camel_db_delete_uid ()

gint                camel_db_delete_uid                 (CamelDB *cdb,
                                                         const gchar *folder,
                                                         const gchar *uid,
                                                         GError **error);

Since 2.24


camel_db_delete_uids ()

gint                camel_db_delete_uids                (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         GSList *uids,
                                                         GError **error);

Since 2.24


camel_db_delete_vuids ()

gint                camel_db_delete_vuids               (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         const gchar *shash,
                                                         GSList *uids,
                                                         GError **error);

Since 2.26


camel_db_create_folders_table ()

gint                camel_db_create_folders_table       (CamelDB *cdb,
                                                         GError **error);

Since 2.24


camel_db_select ()

gint                camel_db_select                     (CamelDB *cdb,
                                                         const gchar *stmt,
                                                         CamelDBSelectCB callback,
                                                         gpointer data,
                                                         GError **error);

Since 2.24


camel_db_write_folder_info_record ()

gint                camel_db_write_folder_info_record   (CamelDB *cdb,
                                                         CamelFIRecord *record,
                                                         GError **error);

Since 2.24


camel_db_read_folder_info_record ()

gint                camel_db_read_folder_info_record    (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         CamelFIRecord **record,
                                                         GError **error);

Since 2.24


camel_db_prepare_message_info_table ()

gint                camel_db_prepare_message_info_table (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         GError **error);

Since 2.24


camel_db_write_message_info_record ()

gint                camel_db_write_message_info_record  (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         CamelMIRecord *record,
                                                         GError **error);

Since 2.24


camel_db_write_fresh_message_info_record ()

gint                camel_db_write_fresh_message_info_record
                                                        (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         CamelMIRecord *record,
                                                         GError **error);

Since 2.26


camel_db_read_message_info_records ()

gint                camel_db_read_message_info_records  (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         gpointer p,
                                                         CamelDBSelectCB read_mir_callback,
                                                         GError **error);

Since 2.24


camel_db_read_message_info_record_with_uid ()

gint                camel_db_read_message_info_record_with_uid
                                                        (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         const gchar *uid,
                                                         gpointer p,
                                                         CamelDBSelectCB read_mir_callback,
                                                         GError **error);

Since 2.24


camel_db_count_junk_message_info ()

gint                camel_db_count_junk_message_info    (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);

Since 2.24


camel_db_count_unread_message_info ()

gint                camel_db_count_unread_message_info  (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);

Since 2.24


camel_db_count_deleted_message_info ()

gint                camel_db_count_deleted_message_info (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);

Since 2.24


camel_db_count_total_message_info ()

gint                camel_db_count_total_message_info   (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);

Since 2.24


camel_db_count_visible_message_info ()

gint                camel_db_count_visible_message_info (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);

Since 2.24


camel_db_count_visible_unread_message_info ()

gint                camel_db_count_visible_unread_message_info
                                                        (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);

Since 2.24


camel_db_count_junk_not_deleted_message_info ()

gint                camel_db_count_junk_not_deleted_message_info
                                                        (CamelDB *cdb,
                                                         const gchar *table_name,
                                                         guint32 *count,
                                                         GError **error);


camel_db_count_message_info ()

gint                camel_db_count_message_info         (CamelDB *cdb,
                                                         const gchar *query,
                                                         guint32 *count,
                                                         GError **error);

Since 2.26


camel_db_camel_mir_free ()

void                camel_db_camel_mir_free             (CamelMIRecord *record);

Since 2.24


camel_db_create_vfolder ()

gint                camel_db_create_vfolder             (CamelDB *db,
                                                         const gchar *folder_name,
                                                         GError **error);

Since 2.24


camel_db_recreate_vfolder ()

gint                camel_db_recreate_vfolder           (CamelDB *db,
                                                         const gchar *folder_name,
                                                         GError **error);

Since 2.24


camel_db_delete_uid_from_vfolder ()

gint                camel_db_delete_uid_from_vfolder    (CamelDB *db,
                                                         gchar *folder_name,
                                                         gchar *vuid,
                                                         GError **error);

Since 2.24


camel_db_delete_uid_from_vfolder_transaction ()

gint                camel_db_delete_uid_from_vfolder_transaction
                                                        (CamelDB *db,
                                                         const gchar *folder_name,
                                                         const gchar *vuid,
                                                         GError **error);

Since 2.24


camel_db_get_vuids_from_vfolder ()

GPtrArray *         camel_db_get_vuids_from_vfolder     (CamelDB *db,
                                                         const gchar *folder_name,
                                                         gchar *filter,
                                                         GError **error);

Since 2.24


camel_db_add_to_vfolder ()

gint                camel_db_add_to_vfolder             (CamelDB *db,
                                                         gchar *folder_name,
                                                         gchar *vuid,
                                                         GError **error);

Since 2.24


camel_db_add_to_vfolder_transaction ()

gint                camel_db_add_to_vfolder_transaction (CamelDB *db,
                                                         const gchar *folder_name,
                                                         const gchar *vuid,
                                                         GError **error);

Since 2.24


camel_db_get_folder_uids ()

gint                camel_db_get_folder_uids            (CamelDB *db,
                                                         const gchar *folder_name,
                                                         const gchar *sort_by,
                                                         const gchar *collate,
                                                         GPtrArray *array,
                                                         GError **error);

Since 2.24


camel_db_get_folder_junk_uids ()

GPtrArray *         camel_db_get_folder_junk_uids       (CamelDB *db,
                                                         gchar *folder_name,
                                                         GError **error);

Since 2.24


camel_db_get_folder_deleted_uids ()

GPtrArray *         camel_db_get_folder_deleted_uids    (CamelDB *db,
                                                         const gchar *folder_name,
                                                         GError **error);

Since 2.24


camel_db_sqlize_string ()

gchar *             camel_db_sqlize_string              (const gchar *string);

Since 2.24


camel_db_free_sqlized_string ()

void                camel_db_free_sqlized_string        (gchar *string);

Since 2.24


camel_db_get_column_name ()

gchar *             camel_db_get_column_name            (const gchar *raw_name);

Since 2.24


camel_db_set_collate ()

gint                camel_db_set_collate                (CamelDB *cdb,
                                                         const gchar *col,
                                                         const gchar *collate,
                                                         CamelDBCollate func);

Since 2.24


camel_db_migrate_vfolders_to_14 ()

gint                camel_db_migrate_vfolders_to_14     (CamelDB *cdb,
                                                         const gchar *folder,
                                                         GError **error);

Since 2.24


camel_db_start_in_memory_transactions ()

gint                camel_db_start_in_memory_transactions
                                                        (CamelDB *cdb,
                                                         GError **error);

Since 2.26


camel_db_flush_in_memory_transactions ()

gint                camel_db_flush_in_memory_transactions
                                                        (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         GError **error);

Since 2.26


camel_db_get_folder_preview ()

GHashTable *        camel_db_get_folder_preview         (CamelDB *db,
                                                         const gchar *folder_name,
                                                         GError **error);

Since 2.28


camel_db_write_preview_record ()

gint                camel_db_write_preview_record       (CamelDB *db,
                                                         const gchar *folder_name,
                                                         const gchar *uid,
                                                         const gchar *msg,
                                                         GError **error);

Since 2.28


camel_db_reset_folder_version ()

gint                camel_db_reset_folder_version       (CamelDB *cdb,
                                                         const gchar *folder_name,
                                                         gint reset_version,
                                                         GError **error);

Since 2.28