diff --git a/aurora/models/moderation.py b/aurora/models/moderation.py index 478768f..2874344 100644 --- a/aurora/models/moderation.py +++ b/aurora/models/moderation.py @@ -202,23 +202,30 @@ class Moderation(AuroraGuildModel): return cls.from_dict(bot=bot, data=case) @classmethod - def execute(cls, bot: Red, guild_id: int, query: str, parameters: tuple | None = None) -> Tuple["Moderation"]: + def execute(cls, bot: Red, guild_id: int, query: str, parameters: tuple | None = None, cursor: Cursor | None = None) -> Tuple["Moderation"]: from ..utilities.database import connect if not parameters: parameters = () - with connect() as database: + if not cursor: + no_cursor = True + database = connect() cursor = database.cursor() - cursor.execute(query, parameters) - results = cursor.fetchall() - cursor.close() + else: + no_cursor = False - if results: - cases = [] - for result in results: - case = cls.from_result(bot=bot, result=result, guild_id=guild_id) - if case.moderation_id != 0: - cases.append(case) - return tuple(cases) + cursor.execute(query, parameters) + results = cursor.fetchall() + if no_cursor: + cursor.close() + database.close() + + if results: + cases = [] + for result in results: + case = cls.from_result(bot=bot, result=result, guild_id=guild_id) + if case.moderation_id != 0: + cases.append(case) + return tuple(cases) return () @classmethod