feat(aurora): allow the Moderation.execute() classmethod to accept a cursor, to prevent opening a new database connection on every call

This commit is contained in:
Seaswimmer 2024-06-03 23:48:21 -04:00
parent bbe8b281d1
commit 460d5a31fc
Signed by: cswimr
GPG key ID: 5D671B5D03D65A7F

View file

@ -202,15 +202,22 @@ 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()
else:
no_cursor = False
cursor.execute(query, parameters)
results = cursor.fetchall()
if no_cursor:
cursor.close()
database.close()
if results:
cases = []