From 9268906f2fde5eb7af3d5eb4f361debbb17fb9ef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Pavel=20K=C3=A1cha?= <ph@cesnet.cz>
Date: Mon, 26 Jun 2017 14:52:34 +0200
Subject: [PATCH] Fixed auxiliary tables purging

---
 warden3/warden_server/warden_server.py | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/warden3/warden_server/warden_server.py b/warden3/warden_server/warden_server.py
index 24b8f9e..90f6211 100755
--- a/warden3/warden_server/warden_server.py
+++ b/warden3/warden_server/warden_server.py
@@ -817,11 +817,19 @@ class MySQL(ObjectBase):
 
 
     def purge_events(self, days):
+        affected = 0
         try:
-            crs = self.query(
-                "DELETE FROM events WHERE received < DATE_SUB(CURDATE(), INTERVAL %s DAY)",
-                (days,))
+            id_ = self.query(
+                "SELECT MAX(id) as id"
+                "  FROM events"
+                "  WHERE received < DATE_SUB(CURDATE(), INTERVAL %s DAY)",
+                (days,),
+                commit=True
+            ).fetchall()[0]["id"]
+            crs = self.query("DELETE FROM events WHERE id <= %s", (id_,))
             affected = crs.rowcount
+            self.query("DELETE FROM event_category_mapping WHERE event_id <= %s", (id_,))
+            self.query("DELETE FROM event_tag_mapping WHERE event_id <= %s", (id_,))
             self.con.commit()
         except Exception as e:
             self.con.rollback()
-- 
GitLab