Diff

core/storagemanager.lua @ 5129:e8253c931166

storagemanager: Add purge() for purging user data from all backends in use
author Kim Alvefur <zash@zash.se>
date Sun, 16 Sep 2012 02:18:07 +0200
parent 5111:7e577727fb9f
child 5130:051d352ed03c
line wrap: on
line diff
--- a/core/storagemanager.lua	Sat Sep 15 23:00:59 2012 +0200
+++ b/core/storagemanager.lua	Sun Sep 16 02:18:07 2012 +0200
@@ -94,6 +94,25 @@
 	return ret, err;
 end
 
+function purge(user, host)
+	local storage = config.get(host, "core", "storage");
+	local driver_name;
+	if type(storage) == "table" then
+		-- multiple storage backends in use that we need to purge
+		local purged = {};
+		for store, driver in pairs(storage) do
+			if not purged[driver] then
+				purged[driver] = get_driver(host, store):purge(user);
+			end
+		end
+	end
+	get_driver(host):purge(user); -- and the default driver
+
+	olddm.purge(user, host); -- COMPAT list stores, like offline messages end up in the old datamanager
+
+	return true;
+end
+
 function datamanager.load(username, host, datastore)
 	return open(host, datastore):get(username);
 end
@@ -104,7 +123,7 @@
 	return get_driver(host):list_stores(username);
 end
 function datamanager.purge(username, host)
-	return get_driver(host):purge(username);
+	return purge(username);
 end
 
 return _M;