guild.members: use context manager for pool conn acquire

This commit is contained in:
Luna 2019-11-15 20:37:10 -03:00
parent e917982f6d
commit bc3fa37d63
1 changed files with 21 additions and 24 deletions

View File

@ -95,31 +95,28 @@ async def _update_member_roles(guild_id: int, member_id: int, wanted_roles: set)
# in wanted_roles # in wanted_roles
removed_roles = roles - wanted_roles removed_roles = roles - wanted_roles
conn = await app.db.acquire() async with app.db.acquire() as conn:
async with conn.transaction():
# add roles
await app.db.executemany(
"""
INSERT INTO member_roles (user_id, guild_id, role_id)
VALUES ($1, $2, $3)
""",
[(member_id, guild_id, role_id) for role_id in added_roles],
)
async with conn.transaction(): # remove roles
# add roles await app.db.executemany(
await app.db.executemany( """
""" DELETE FROM member_roles
INSERT INTO member_roles (user_id, guild_id, role_id) WHERE
VALUES ($1, $2, $3) user_id = $1
""", AND guild_id = $2
[(member_id, guild_id, role_id) for role_id in added_roles], AND role_id = $3
) """,
[(member_id, guild_id, role_id) for role_id in removed_roles],
# remove roles )
await app.db.executemany(
"""
DELETE FROM member_roles
WHERE
user_id = $1
AND guild_id = $2
AND role_id = $3
""",
[(member_id, guild_id, role_id) for role_id in removed_roles],
)
await app.db.release(conn)
@bp.route("/<int:guild_id>/members/<int:member_id>", methods=["PATCH"]) @bp.route("/<int:guild_id>/members/<int:member_id>", methods=["PATCH"])