## EBookBackendSqliteDB EBookBackendSqliteDB |

## Synopsis

    struct              EBookBackendSqliteDB;
                        EbSdbSearchData;
    EBookBackendSqliteDB * e_book_backend_sqlitedb_new      (const gchar *path,
                                                             const gchar *email_id,
                                                             const gchar *folderid,
                                                             const gchar *folder_name,
                                                             gboolean store_vcard,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_add_contact (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             EContact *contact,
                                                             gboolean partial_content,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_add_contacts
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GSList *contacts,
                                                             gboolean partial_content,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_remove_contact
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_remove_contacts
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GSList *uids,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_has_contact (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             gboolean *partial_content,
                                                             GError **error);
    EContact *          e_book_backend_sqlitedb_get_contact (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             GError **error);
    gchar *             e_book_backend_sqlitedb_get_vcard_string
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             GError **error);
    GSList *            e_book_backend_sqlitedb_search      (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *sexp,
                                                             GSList *fields_of_interest,
                                                             GError **error);
    GSList *            e_book_backend_sqlitedb_search_uids (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *sexp,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_get_is_populated
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_set_is_populated
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             gboolean populated,
                                                             GError **error);
    gchar *             e_book_backend_sqlitedb_get_sync_data
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_set_sync_data
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *sync_data,
                                                             GError **error);
    gchar *             e_book_backend_sqlitedb_get_key_value
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *key,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_set_key_value
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *key,
                                                             const gchar *value,
                                                             GError **error);
    gchar *             e_book_backend_sqlitedb_get_contact_bdata
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_set_contact_bdata
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             const gchar *value,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_get_has_partial_content
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_set_has_partial_content
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             gboolean partial_content,
                                                             GError **error);
    GSList *            e_book_backend_sqlitedb_get_partially_cached_ids
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_delete_addressbook
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GError **error);
    gboolean            e_book_backend_sqlitedb_remove      (EBookBackendSqliteDB *ebsdb,
                                                             GError **error);
    void                e_book_backend_sqlitedb_search_data_free
                                                            (EbSdbSearchData *s_data);

## Description

## Details

### struct EBookBackendSqliteDB

    struct EBookBackendSqliteDB {
    	GObject parent;
    	EBookBackendSqliteDBPrivate *priv;
    };

### EbSdbSearchData

    typedef struct {
    	gchar *vcard;
    	gchar *uid;
    	gchar *bdata;
    } EbSdbSearchData;

### e_book_backend_sqlitedb_new ()

    EBookBackendSqliteDB * e_book_backend_sqlitedb_new      (const gchar *path,
                                                             const gchar *email_id,
                                                             const gchar *folderid,
                                                             const gchar *folder_name,
                                                             gboolean store_vcard,
                                                             GError **error);

If the path for multiple addressbooks are same, the contacts from all addressbooks would be stored in same db in different tables.

`path` : | location where the db would be created
`folderid` : | folder id of the address-book
`folder_name` : | name of the address-book
`store_vcard` : | True if the vcard should be stored inside db, if FALSE only the summary fields would be stored inside db.

### e_book_backend_sqlitedb_add_contact ()

    gboolean            e_book_backend_sqlitedb_add_contact (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             EContact *contact,
                                                             gboolean partial_content,
                                                             GError **error);

This is a convenience wrapper for e_book_backend_sqlitedb_add_contacts, which is the preferred means to add multiple contacts when possible.

`folderid` : | folder id
`contact` : | EContact to be added
`partial_content` : | contact does not contain full information. Used when the backend cache's partial information for auto-completion.
Returns : | TRUE on success.

### e_book_backend_sqlitedb_add_contacts ()

    gboolean            e_book_backend_sqlitedb_add_contacts
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GSList *contacts,
                                                             gboolean partial_content,
                                                             GError **error);

`folderid` : | folder id
`contacts` : | list of EContacts
`partial_content` : | contact does not contain full information. Used when the backend cache's partial information for auto-completion.
Returns : | TRUE on success.

### e_book_backend_sqlitedb_remove_contact ()

    gboolean            e_book_backend_sqlitedb_remove_contact
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             GError **error);

### e_book_backend_sqlitedb_remove_contacts ()

    gboolean            e_book_backend_sqlitedb_remove_contacts
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GSList *uids,
                                                             GError **error);

### e_book_backend_sqlitedb_has_contact ()

    gboolean            e_book_backend_sqlitedb_has_contact (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             gboolean *partial_content,
                                                             GError **error);

### e_book_backend_sqlitedb_get_contact ()

    EContact *          e_book_backend_sqlitedb_get_contact (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             GError **error);

### e_book_backend_sqlitedb_get_vcard_string ()

    gchar *             e_book_backend_sqlitedb_get_vcard_string
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             GError **error);

### e_book_backend_sqlitedb_search ()

    GSList *            e_book_backend_sqlitedb_search      (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *sexp,
                                                             GSList *fields_of_interest,
                                                             GError **error);

Summary fields - uid, nickname, given_name, family_name, file_as email_1, email_2, email_3, email_4, is_list, list_show_addresses, wants_html

`sexp` : | search expression. &fields_of_interest: a GList containing the names of fields to return, or NULL for all. At the moment if this is non-null, the vcard will be populated with summary fields, else it would return the whole vcard if its stored in the db. [not implemented fully]
`error` : | Search on summary fields is always supported. Search expression containing any other field is supported only if backend chooses to store the vcard inside the db.
Returns : | List of EbSdbSearchData.

### e_book_backend_sqlitedb_search_uids ()

    GSList *            e_book_backend_sqlitedb_search_uids (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *sexp,
                                                             GError **error);

### e_book_backend_sqlitedb_get_is_populated ()

    gboolean            e_book_backend_sqlitedb_get_is_populated
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GError **error);

### e_book_backend_sqlitedb_set_is_populated ()

    gboolean            e_book_backend_sqlitedb_set_is_populated
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             gboolean populated,
                                                             GError **error);

### e_book_backend_sqlitedb_get_sync_data ()

    gchar *             e_book_backend_sqlitedb_get_sync_data
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GError **error);

### e_book_backend_sqlitedb_set_sync_data ()

    gboolean            e_book_backend_sqlitedb_set_sync_data
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *sync_data,
                                                             GError **error);

### e_book_backend_sqlitedb_get_key_value ()

    gchar *             e_book_backend_sqlitedb_get_key_value
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *key,
                                                             GError **error);

### e_book_backend_sqlitedb_set_key_value ()

    gboolean            e_book_backend_sqlitedb_set_key_value
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *key,
                                                             const gchar *value,
                                                             GError **error);

### e_book_backend_sqlitedb_get_contact_bdata ()

    gchar *             e_book_backend_sqlitedb_get_contact_bdata
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             GError **error);

### e_book_backend_sqlitedb_set_contact_bdata ()

    gboolean            e_book_backend_sqlitedb_set_contact_bdata
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             const gchar *uid,
                                                             const gchar *value,
                                                             GError **error);

### e_book_backend_sqlitedb_get_has_partial_content ()

    gboolean            e_book_backend_sqlitedb_get_has_partial_content
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GError **error);

Returns : | TRUE if the vcards stored in the db were downloaded partially. It is to indicate the stored vcards does not contain the full data.

### e_book_backend_sqlitedb_set_has_partial_content ()

    gboolean            e_book_backend_sqlitedb_set_has_partial_content
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             gboolean partial_content,
                                                             GError **error);

### e_book_backend_sqlitedb_get_partially_cached_ids ()

    GSList *            e_book_backend_sqlitedb_get_partially_cached_ids
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GError **error);

### e_book_backend_sqlitedb_delete_addressbook ()

    gboolean            e_book_backend_sqlitedb_delete_addressbook
                                                            (EBookBackendSqliteDB *ebsdb,
                                                             const gchar *folderid,
                                                             GError **error);

### e_book_backend_sqlitedb_remove ()

    gboolean            e_book_backend_sqlitedb_remove      (EBookBackendSqliteDB *ebsdb,
                                                             GError **error);

### e_book_backend_sqlitedb_search_data_free ()

    void                e_book_backend_sqlitedb_search_data_free
                                                            (EbSdbSearchData *s_data);