summary refs log tree commit diff
path: root/synapse/storage/directory.py
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2014-09-30 11:31:22 +0100
committerErik Johnston <erik@matrix.org>2014-09-30 11:31:42 +0100
commite06adc6d7e645e5116c28d2b5756a70bb8f4f240 (patch)
tree4c7f2d72fb6bd321411e013c7d9f20c2bd367488 /synapse/storage/directory.py
parentRe-wrap content after latest additions (diff)
downloadsynapse-e06adc6d7e645e5116c28d2b5756a70bb8f4f240.tar.xz
SYN-2: Allow server admins to delete room aliases
Diffstat (limited to 'synapse/storage/directory.py')
-rw-r--r--synapse/storage/directory.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/synapse/storage/directory.py b/synapse/storage/directory.py
index 540eb4c2c4..52373a28a6 100644
--- a/synapse/storage/directory.py
+++ b/synapse/storage/directory.py
@@ -93,6 +93,36 @@ class DirectoryStore(SQLBaseStore):
                 }
             )
 
+    def delete_room_alias(self, room_alias):
+        return self.runInteraction(
+            self._delete_room_alias_txn,
+            room_alias,
+        )
+
+    def _delete_room_alias_txn(self, txn, room_alias):
+        cursor = txn.execute(
+            "SELECT room_id FROM room_aliases WHERE room_alias = ?",
+            (room_alias.to_string(),)
+        )
+
+        res = cursor.fetchone()
+        if res:
+            room_id = res[0]
+        else:
+            return None
+
+        txn.execute(
+            "DELETE FROM room_aliases WHERE room_alias = ?",
+            (room_alias.to_string(),)
+        )
+
+        txn.execute(
+            "DELETE FROM room_alias_servers WHERE room_alias = ?",
+            (room_alias.to_string(),)
+        )
+
+        return room_id
+
     def get_aliases_for_room(self, room_id):
         return self._simple_select_onecol(
             "room_aliases",