[evolution-data-server] Add e_book_backend_sqlitedb_get_uids_and_rev()



commit 6e53fb4c4dccbbcb6a0239dc01f9c2aaef98970d
Author: Milan Crha <mcrha redhat com>
Date:   Tue Nov 22 15:40:04 2011 +0100

    Add e_book_backend_sqlitedb_get_uids_and_rev()

 .../libedata-book/e-book-backend-sqlitedb.c        |   43 ++++++++++++++++++++
 .../libedata-book/e-book-backend-sqlitedb.h        |    8 +++-
 2 files changed, 50 insertions(+), 1 deletions(-)
---
diff --git a/addressbook/libedata-book/e-book-backend-sqlitedb.c b/addressbook/libedata-book/e-book-backend-sqlitedb.c
index 75eef42..9f6d0f4 100644
--- a/addressbook/libedata-book/e-book-backend-sqlitedb.c
+++ b/addressbook/libedata-book/e-book-backend-sqlitedb.c
@@ -1675,6 +1675,49 @@ e_book_backend_sqlitedb_search_uids (EBookBackendSqliteDB *ebsdb,
 }
 
 static gint
+get_uids_and_rev_cb (gpointer user_data,
+		     gint col,
+                     gchar **cols,
+                     gchar **name)
+{
+	GHashTable *uids_and_rev = user_data;
+
+	if (col == 2 && cols[0])
+		g_hash_table_insert (uids_and_rev, g_strdup (cols [0]), g_strdup (cols [1] ? cols [1] : ""));
+
+	return 0;
+}
+
+/**
+ * e_book_backend_sqlitedb_get_uids_and_rev:
+ *
+ * Gets hash table of all uids (key) and rev (value) pairs stored
+ * for each contact in the cache. The hash table should be freed
+ * with g_hash_table_destroy(), if not needed anymore. Each key
+ * and value is a newly allocated string.
+ *
+ * Since: 3.4
+ **/
+GHashTable *
+e_book_backend_sqlitedb_get_uids_and_rev (EBookBackendSqliteDB *ebsdb,
+					  const gchar *folderid,
+					  GError **error)
+{
+	GHashTable *uids_and_rev = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+	gchar *stmt;
+
+	READER_LOCK (ebsdb);
+
+	stmt = sqlite3_mprintf ("SELECT uid,rev FROM %Q", folderid);
+	book_backend_sql_exec (ebsdb->priv->db, stmt, get_uids_and_rev_cb, uids_and_rev, error);
+	sqlite3_free (stmt);
+
+	READER_UNLOCK (ebsdb);
+
+	return uids_and_rev;
+}
+
+static gint
 get_bool_cb (gpointer ref,
              gint col,
              gchar **cols,
diff --git a/addressbook/libedata-book/e-book-backend-sqlitedb.h b/addressbook/libedata-book/e-book-backend-sqlitedb.h
index 4726f0f..6d068e4 100644
--- a/addressbook/libedata-book/e-book-backend-sqlitedb.h
+++ b/addressbook/libedata-book/e-book-backend-sqlitedb.h
@@ -141,8 +141,14 @@ GSList *		e_book_backend_sqlitedb_search_uids
 							(EBookBackendSqliteDB *ebsdb,
 							 const gchar *folderid,
 							 const gchar *sexp,
-							 gboolean    *searched,
+							 gboolean *searched,
+							 GError **error);
+
+GHashTable *		e_book_backend_sqlitedb_get_uids_and_rev
+							(EBookBackendSqliteDB *ebsdb,
+							 const gchar *folderid,
 							 GError **error);
+
 gboolean	e_book_backend_sqlitedb_get_is_populated
 							(EBookBackendSqliteDB *ebsdb,
 							 const gchar *folderid,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]