summary refs log tree commit diff
path: root/synapse/storage
diff options
context:
space:
mode:
authorTill <2353100+S7evinK@users.noreply.github.com>2024-04-25 15:25:31 +0200
committerGitHub <noreply@github.com>2024-04-25 14:25:31 +0100
commit47773232b034c0d7b72bb7419a01e772509c8814 (patch)
tree42efcccf16166d94ba289ecb4edef61b0e0d8fe8 /synapse/storage
parentMSC4108 implementation (#17056) (diff)
downloadsynapse-47773232b034c0d7b72bb7419a01e772509c8814.tar.xz
Redact membership events if the user requested erasure upon deactivating (#17076)
Fixes #15355 by redacting all membership events before leaving rooms.
Diffstat (limited to 'synapse/storage')
-rw-r--r--synapse/storage/databases/main/roommember.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/synapse/storage/databases/main/roommember.py b/synapse/storage/databases/main/roommember.py
index 5d51502595..9fddbb2caf 100644
--- a/synapse/storage/databases/main/roommember.py
+++ b/synapse/storage/databases/main/roommember.py
@@ -1234,6 +1234,28 @@ class RoomMemberWorkerStore(EventsWorkerStore, CacheInvalidationWorkerStore):
 
         return set(room_ids)
 
+    async def get_membership_event_ids_for_user(
+        self, user_id: str, room_id: str
+    ) -> Set[str]:
+        """Get all event_ids for the given user and room.
+
+        Args:
+            user_id: The user ID to get the event IDs for.
+            room_id: The room ID to look up events for.
+
+        Returns:
+            Set of event IDs
+        """
+
+        event_ids = await self.db_pool.simple_select_onecol(
+            table="room_memberships",
+            keyvalues={"user_id": user_id, "room_id": room_id},
+            retcol="event_id",
+            desc="get_membership_event_ids_for_user",
+        )
+
+        return set(event_ids)
+
     @cached(max_entries=5000)
     async def _get_membership_from_event_id(
         self, member_event_id: str