mod_storage_sql2: Add method for deleting items from archives with same syntax as :find()
authorKim Alvefur <zash@zash.se>
Sat, 28 Sep 2013 22:04:04 +0200
changeset 5848 06156bfd4eaf
parent 5847 6aaa7ad4463c
child 5850 e8c743f4213f
mod_storage_sql2: Add method for deleting items from archives with same syntax as :find()
plugins/mod_storage_sql2.lua
--- a/plugins/mod_storage_sql2.lua	Sat Sep 28 21:58:01 2013 +0200
+++ b/plugins/mod_storage_sql2.lua	Sat Sep 28 22:04:04 2013 +0200
@@ -340,6 +340,21 @@
 	end, total;
 end
 
+function archive_store:delete(username, query)
+	query = query or {};
+	local user,store = username,self.store;
+	return engine:transaction(function()
+		local sql_query = "DELETE FROM `prosodyarchive` WHERE %s;";
+		local args = { host, user or "", store, };
+		local where = { "`host` = ?", "`user` = ?", "`store` = ?", };
+		archive_where(query, args, where);
+		archive_where_id_range(query, args, where);
+		sql_query = sql_query:format(t_concat(where, " AND "));
+		module:log("debug", sql_query);
+		return engine:delete(sql_query, unpack(args));
+	end);
+end
+
 local stores = {
 	keyval = keyval_store;
 	archive = archive_store;