diff options
author | Erik Johnston <erik@matrix.org> | 2014-09-30 11:31:22 +0100 |
---|---|---|
committer | Erik Johnston <erik@matrix.org> | 2014-09-30 11:31:42 +0100 |
commit | e06adc6d7e645e5116c28d2b5756a70bb8f4f240 (patch) | |
tree | 4c7f2d72fb6bd321411e013c7d9f20c2bd367488 /synapse/storage | |
parent | Re-wrap content after latest additions (diff) | |
download | synapse-e06adc6d7e645e5116c28d2b5756a70bb8f4f240.tar.xz |
SYN-2: Allow server admins to delete room aliases
Diffstat (limited to 'synapse/storage')
-rw-r--r-- | synapse/storage/directory.py | 30 |
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", |