diff --git a/src/db/migrations/0043-clean-unbridged-member-cache.sql b/src/db/migrations/0043-clean-unbridged-member-cache.sql new file mode 100644 index 0000000..d51b426 --- /dev/null +++ b/src/db/migrations/0043-clean-unbridged-member-cache.sql @@ -0,0 +1,9 @@ +BEGIN TRANSACTION; + +DELETE FROM member_cache +WHERE room_id NOT IN (SELECT room_id FROM channel_room) + AND room_id NOT IN (SELECT space_id FROM guild_space) + AND room_id NOT IN (SELECT room_id FROM historical_channel_room) + AND room_id NOT IN (SELECT room_id FROM invite); + +COMMIT; diff --git a/src/m2d/event-dispatcher.js b/src/m2d/event-dispatcher.js index c71f574..0f48783 100644 --- a/src/m2d/event-dispatcher.js +++ b/src/m2d/event-dispatcher.js @@ -422,7 +422,7 @@ async event => { if (utils.eventSenderIsFromDiscord(event.state_key)) return - const exists = select("channel_room", "room_id", {room_id: event.room_id}) ?? select("guild_space", "space_id", {space_id: event.room_id}) + const exists = select("channel_room", "room_id", {room_id: event.room_id}).pluck().get() ?? select("guild_space", "space_id", {space_id: event.room_id}).pluck().get() if (!exists) return // don't cache members in unbridged rooms // Member is here