summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-07-26 12:46:45 +0200
committerCarlos Garnacho <carlosg@gnome.org>2015-07-26 16:11:19 +0200
commitf8fd53949a69c01d4ac3acc4f18b0885631e61ca (patch)
treee57701b5fc58b126a78d313aa568fd16917efd2c
parent04d5d9456de0a9a3042491556fa6ca62974edbbb (diff)
downloadtracker-f8fd53949a69c01d4ac3acc4f18b0885631e61ca.tar.gz
rss: cater for nmo:communicationChannel cardinality changes
Now that mfo:FeedMessages can reference multiple mfo:FeedChannels, ensure we set link messages with all channels we receive these from.
-rw-r--r--src/miners/rss/tracker-miner-rss.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/miners/rss/tracker-miner-rss.c b/src/miners/rss/tracker-miner-rss.c
index b8f0e11b8..0706a6b69 100644
--- a/src/miners/rss/tracker-miner-rss.c
+++ b/src/miners/rss/tracker-miner-rss.c
@@ -713,12 +713,27 @@ sparql_add_contact (TrackerSparqlBuilder *sparql,
}
static gchar *
+feed_message_create_update_channel_query (const gchar *item_urn,
+ GrssFeedItem *item)
+{
+ GrssFeedChannel *channel;
+ const gchar *channel_urn;
+
+ channel = grss_feed_item_get_parent (item);
+ channel_urn = g_object_get_data (G_OBJECT (channel), "subject");
+
+ return g_strdup_printf ("INSERT SILENT { <%s> nmo:communicationChannel <%s> }",
+ item_urn, channel_urn);
+}
+
+static gchar *
feed_message_create_delete_properties_query (const gchar *item_urn)
{
return g_strdup_printf ("DELETE { <%s> ?p ?o }"
"WHERE { <%s> a mfo:FeedMessage ;"
" ?p ?o ."
- " FILTER (?p != rdf:type)"
+ " FILTER (?p != rdf:type &&"
+ " ?p != nmo:communicationChannel)"
"}", item_urn, item_urn);
}
@@ -1001,6 +1016,7 @@ check_feed_items_cb (GObject *source_object,
if (time <= grss_feed_item_get_publish_time (item)) {
g_debug ("Item '%s' already up to date", url);
+ g_ptr_array_add (array, feed_message_create_update_channel_query (urn, item));
} else {
g_debug ("Updating item '%s'", url);