diff --git a/litecord/blueprints/users.py b/litecord/blueprints/users.py index 0691e93..f9a5a0a 100644 --- a/litecord/blueprints/users.py +++ b/litecord/blueprints/users.py @@ -373,14 +373,7 @@ async def get_profile(peer_id: int): WHERE id = $1 """, peer_id) - # this is a rad sql query - mutual_guilds = await app.db.fetch(""" - SELECT guild_id FROM members WHERE user_id = $1 - INTERSECT - SELECT guild_id FROM members WHERE user_id = $2 - """, user_id, peer_id) - - mutual_guilds = [r['guild_id'] for r in mutual_guilds] + mutual_guilds = await app.user_storage.get_mutual_guilds(user_id, peer_id) mutual_res = [] # ascending sorting diff --git a/litecord/user_storage.py b/litecord/user_storage.py index 931bf93..0c823c3 100644 --- a/litecord/user_storage.py +++ b/litecord/user_storage.py @@ -288,3 +288,16 @@ class UserStorage: """, user_id) return [row['guild_id'] for row in guild_ids] + + async def get_mutual_guilds(self, user_id: int, peer_id: int) -> List[int]: + """Get a list of guilds two separate users + have in common.""" + mutual_guilds = await self.db.fetch(""" + SELECT guild_id FROM members WHERE user_id = $1 + INTERSECT + SELECT guild_id FROM members WHERE user_id = $2 + """, user_id, peer_id) + + mutual_guilds = [r['guild_id'] for r in mutual_guilds] + + return mutual_guilds