[gnome-photos/wip/rishi/online-miners: 2/7] tracker-queue: Add online connection




commit c2727f64fe44065da893f8c3abf5dbd8983d2aff
Author: Debarshi Ray <debarshir gnome org>
Date:   Sun Apr 4 00:54:17 2021 +0200

    tracker-queue: Add online connection
    
    https://gitlab.gnome.org/GNOME/gnome-photos/-/issues/83

 src/photos-tracker-queue.c | 30 +++++++++++++++++++++++++++++-
 src/photos-tracker-queue.h |  2 ++
 2 files changed, 31 insertions(+), 1 deletion(-)
---
diff --git a/src/photos-tracker-queue.c b/src/photos-tracker-queue.c
index a0f93dc2..f27ae336 100644
--- a/src/photos-tracker-queue.c
+++ b/src/photos-tracker-queue.c
@@ -36,6 +36,7 @@ struct _PhotosTrackerQueue
   GObject parent_instance;
   GError *initialization_error;
   GQueue *queue;
+  TrackerSparqlConnection *connection_online;
   TrackerSparqlConnection *connection_private;
   gboolean is_initialized;
   gboolean running;
@@ -231,6 +232,7 @@ photos_tracker_queue_dispose (GObject *object)
 {
   PhotosTrackerQueue *self = PHOTOS_TRACKER_QUEUE (object);
 
+  g_clear_object (&self->connection_online);
   g_clear_object (&self->connection_private);
 
   G_OBJECT_CLASS (photos_tracker_queue_parent_class)->dispose (object);
@@ -272,17 +274,20 @@ photos_tracker_queue_initable_init (GInitable *initable, GCancellable *cancellab
 {
   PhotosTrackerQueue *self = PHOTOS_TRACKER_QUEUE (initable);
   g_autoptr (GFile) ontology = NULL;
+  g_autoptr (GFile) store_online = NULL;
   g_autoptr (GFile) store_private = NULL;
   TrackerSparqlConnectionFlags tracker_flags;
   gboolean ret_val = FALSE;
+  const gchar *cache_dir;
   const gchar *data_dir;
+  const gchar *store_online_path;
   const gchar *store_private_path;
 
   G_LOCK (init_lock);
 
   if (self->is_initialized)
     {
-      if (self->connection_private != NULL)
+      if (self->connection_online != NULL && self->connection_private != NULL)
         ret_val = TRUE;
       else
         g_assert_nonnull (self->initialization_error);
@@ -303,6 +308,20 @@ photos_tracker_queue_initable_init (GInitable *initable, GCancellable *cancellab
                   | TRACKER_SPARQL_CONNECTION_FLAGS_FTS_ENABLE_UNACCENT
                   | TRACKER_SPARQL_CONNECTION_FLAGS_FTS_IGNORE_NUMBERS;
 
+  cache_dir = g_get_user_cache_dir ();
+  store_online = g_file_new_build_filename (cache_dir, PACKAGE_TARNAME, "tracker3", "online", NULL);
+  store_online_path = g_file_peek_path (store_online);
+
+  photos_debug (PHOTOS_DEBUG_TRACKER, "Opening online database at %s", store_online_path);
+
+  self->connection_online = tracker_sparql_connection_new (tracker_flags,
+                                                           store_online,
+                                                           ontology,
+                                                           cancellable,
+                                                           &self->initialization_error);
+  if (G_UNLIKELY (self->initialization_error != NULL))
+    goto out;
+
   data_dir = g_get_user_data_dir ();
   store_private = g_file_new_build_filename (data_dir, PACKAGE_TARNAME, "tracker3", "private", NULL);
   store_private_path = g_file_peek_path (store_private);
@@ -317,6 +336,7 @@ photos_tracker_queue_initable_init (GInitable *initable, GCancellable *cancellab
   if (G_UNLIKELY (self->initialization_error != NULL))
     goto out;
 
+  tracker_sparql_connection_map_connection (self->connection_private, "online", self->connection_online);
   ret_val = TRUE;
 
  out:
@@ -361,6 +381,14 @@ photos_tracker_queue_create_notifier (PhotosTrackerQueue *self)
 }
 
 
+TrackerSparqlConnection *
+photos_tracker_queue_get_connection_online (PhotosTrackerQueue *self)
+{
+  g_return_val_if_fail (PHOTOS_IS_TRACKER_QUEUE (self), NULL);
+  return self->connection_online;
+}
+
+
 void
 photos_tracker_queue_select (PhotosTrackerQueue *self,
                              PhotosQuery *query,
diff --git a/src/photos-tracker-queue.h b/src/photos-tracker-queue.h
index 732ea03b..3ba6745d 100644
--- a/src/photos-tracker-queue.h
+++ b/src/photos-tracker-queue.h
@@ -37,6 +37,8 @@ PhotosTrackerQueue    *photos_tracker_queue_dup_singleton          (GCancellable
 
 TrackerNotifier       *photos_tracker_queue_create_notifier        (PhotosTrackerQueue *self);
 
+TrackerSparqlConnection *photos_tracker_queue_get_connection_online (PhotosTrackerQueue *self);
+
 void                   photos_tracker_queue_select                 (PhotosTrackerQueue *self,
                                                                     PhotosQuery *query,
                                                                     GCancellable *cancellable,


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