diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2015-07-26 12:46:45 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2015-07-26 16:11:19 +0200 |
commit | f8fd53949a69c01d4ac3acc4f18b0885631e61ca (patch) | |
tree | e57701b5fc58b126a78d313aa568fd16917efd2c | |
parent | 04d5d9456de0a9a3042491556fa6ca62974edbbb (diff) | |
download | tracker-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.c | 18 |
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); |