[tracker] TrackerMinerFS: Delete recursively when a directory is deleted.



commit 90ba37b835e816b2b1ce23a344d60cbab7e7a860
Author: Carlos Garnacho <carlos lanedo com>
Date:   Tue Oct 6 14:02:18 2009 +0200

    TrackerMinerFS: Delete recursively when a directory is deleted.

 src/libtracker-miner/tracker-miner-fs.c |   31 +++++++++++++++++++++++++------
 1 files changed, 25 insertions(+), 6 deletions(-)
---
diff --git a/src/libtracker-miner/tracker-miner-fs.c b/src/libtracker-miner/tracker-miner-fs.c
index aee7db4..5731425 100644
--- a/src/libtracker-miner/tracker-miner-fs.c
+++ b/src/libtracker-miner/tracker-miner-fs.c
@@ -761,7 +761,8 @@ static void
 item_remove (TrackerMinerFS *fs,
 	     GFile          *file)
 {
-	gchar *sparql, *uri;
+	GString *sparql;
+	gchar *uri, *slash_uri;
 
 	uri = g_file_get_uri (file);
 
@@ -773,12 +774,30 @@ item_remove (TrackerMinerFS *fs,
 		return;
 	}
 
-	/* Delete resource */
-	sparql = g_strdup_printf ("DELETE { <%s> a rdfs:Resource }", uri);
-	tracker_miner_execute_batch_update (TRACKER_MINER (fs), sparql, NULL);
-	g_free (sparql);
+	if (!g_str_has_suffix (uri, "/")) {
+		slash_uri = g_strconcat (uri, "/", NULL);
+	} else {
+		slash_uri = g_strdup (uri);
+	}
+
+	sparql = g_string_new ("");
+
+	/* Delete all children */
+	g_string_append_printf (sparql,
+				"DELETE { ?u a rdfs:Resource } "
+				"WHERE { ?u nfo:belongsToContainer ?p . FILTER (fn:starts-with (?p, \"%s\")) } ",
+				slash_uri);
 
-	/* FIXME: Should delete recursively? */
+	/* Delete resource itself */
+	g_string_append_printf (sparql,
+				"DELETE { <%s> a rdfs:Resource }",
+				uri);
+
+	tracker_miner_execute_batch_update (TRACKER_MINER (fs), sparql->str, NULL);
+
+	g_string_free (sparql, TRUE);
+	g_free (slash_uri);
+	g_free (uri);
 }
 
 static void



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