Skip to content

Commit

Permalink
Groups should no longer appear twice when adding a new idol
Browse files Browse the repository at this point in the history
  • Loading branch information
MujyKun committed Aug 16, 2021
1 parent a179b23 commit 5c53a92
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 8 deletions.
33 changes: 32 additions & 1 deletion IreneUtility/s_sql/s_groupmembers.py
Original file line number Diff line number Diff line change
Expand Up @@ -283,4 +283,35 @@ async def remove_local_alias(object_id, alias, is_group, server_id):
"""
await self.conn.execute(
"DELETE FROM groupmembers.aliases WHERE alias = $1 AND isgroup = $2 AND serverid = $3 AND objectid = $4",
alias, is_group, server_id, object_id)
alias, is_group, server_id, object_id)


async def add_idol_to_group(idol_id, group_id):
"""
Add an Idol to a group.
:param idol_id: Idol ID to add to Group
:param group_id: Group ID to add Idol to.
"""
await self.conn.execute("INSERT INTO groupmembers.idoltogroup(idolid, groupid) VALUES($1, $2)", idol_id, group_id)


async def remove_idol_from_group(idol_id, group_id):
"""
Remove an Idol from a group.
:param idol_id: Idol ID to remove from a Group
:param group_id: Group ID to remove an Idol from.
"""
await self.conn.execute("DELETE FROM groupmembers.idoltogroup WHERE idolid = $1 AND groupid = $2",
idol_id, group_id)


async def fetch_db_groups_from_member(idol_id):
"""Fetch all the group ids that belong to a member.
:param idol_id: Idol ID
"""
return await self.conn.fetch("SELECT groupid FROM groupmembers.idoltogroup WHERE idolid = $1", idol_id)


19 changes: 12 additions & 7 deletions IreneUtility/util/u_groupmembers.py
Original file line number Diff line number Diff line change
Expand Up @@ -268,21 +268,26 @@ async def get_aliases():

async def get_db_groups_from_member(self, member_id):
"""Return all the group ids an idol is in from the database."""
groups = await self.ex.conn.fetch("SELECT groupid FROM groupmembers.idoltogroup WHERE idolid = $1", member_id)
groups = await self.ex.sql.s_groupmembers.fetch_db_groups_from_member(member_id)
return [group[0] for group in groups]

async def add_idol_to_group(self, member_id: int, group_id: int):
(await self.ex.u_group_members.get_group(group_id)).members.append(member_id)
(await self.ex.u_group_members.get_member(member_id)).groups.append(group_id)
return await self.ex.conn.execute("INSERT INTO groupmembers.idoltogroup(idolid, groupid) VALUES($1, $2)",
member_id, group_id)
group = await self.ex.u_group_members.get_group(group_id)
member = await self.ex.u_group_members.get_member(member_id)

if member_id not in group.members:
group.members.append(member_id)

if group_id not in member.groups:
member.groups.append(group_id)

await self.ex.sql.s_groupmembers.add_idol_to_group(member_id, group_id)

async def remove_idol_from_group(self, member_id: int, group_id: int):
(await self.ex.u_group_members.get_group(group_id)).members.remove(member_id)
(await self.ex.u_group_members.get_member(member_id)).groups.remove(group_id)

return await self.ex.conn.execute("DELETE FROM groupmembers.idoltogroup WHERE idolid = $1 AND groupid = $2",
member_id, group_id)
await self.ex.sql.s_groupmembers.remove_idol_from_group(member_id, group_id)

async def send_names(self, ctx, mode, user_page_number=1, group_ids=None):
"""Send the names of all idols in an embed with many pages."""
Expand Down

0 comments on commit 5c53a92

Please sign in to comment.