You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2014/10/09 09:20:01 UTC

svn commit: r1630305 - /jackrabbit/oak/trunk/oak-run/src/main/js/oak-mongo.js

Author: mreutegg
Date: Thu Oct  9 07:20:01 2014
New Revision: 1630305

URL: http://svn.apache.org/r1630305
Log:
OAK-1990: Utility js methods to manage Oak data in Mongo

Add function to remove a subtree

Modified:
    jackrabbit/oak/trunk/oak-run/src/main/js/oak-mongo.js

Modified: jackrabbit/oak/trunk/oak-run/src/main/js/oak-mongo.js
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/js/oak-mongo.js?rev=1630305&r1=1630304&r2=1630305&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-run/src/main/js/oak-mongo.js (original)
+++ jackrabbit/oak/trunk/oak-run/src/main/js/oak-mongo.js Thu Oct  9 07:20:01 2014
@@ -172,6 +172,22 @@ var oak = (function(global){
         return new Revision(rev).toReadableString();
     }
 
+    /**
+     * Removes the complete subtree rooted at the given path.
+     */
+    api.removeDescendantsAndSelf = function(path) {
+        var count = 0;
+        var depth = pathDepth(path);
+        while (true) {
+            var result = db.nodes.remove({_id: pathFilter(depth++, path)});
+            if (result.nRemoved == 0) {
+                break;
+            }
+            count += result.nRemoved;
+        }
+        return {nRemoved : count};
+    }
+
     //~--------------------------------------------------< internal >
 
     var checkOrFixLastRevs = function(path, clusterId, dryRun) {