WIP: Refactor Aurora (3.0.0) #29
2 changed files with 22 additions and 8 deletions
|
@ -47,7 +47,7 @@ class Aurora(commands.Cog):
|
|||
This cog stores all of its data in an SQLite database."""
|
||||
|
||||
__author__ = ["Seaswimmer"]
|
||||
__version__ = "3.0.0-indev3"
|
||||
__version__ = "3.0.0-indev4"
|
||||
__documentation__ = "https://seacogs.coastalcommits.com/aurora/"
|
||||
|
||||
async def red_delete_data_for_user(self, *, requester, user_id: int):
|
||||
|
@ -530,6 +530,7 @@ class Aurora(commands.Cog):
|
|||
on: str | None = None,
|
||||
before: str | None = None,
|
||||
after: str | None = None,
|
||||
expired: bool | None = None,
|
||||
types: str | None = None,
|
||||
ephemeral: bool | None = None,
|
||||
inline: bool | None = None,
|
||||
|
@ -553,7 +554,9 @@ class Aurora(commands.Cog):
|
|||
List infractions before a certain date
|
||||
after: str
|
||||
List infractions after a certain date
|
||||
types: bool
|
||||
expired: bool
|
||||
List expired or unexpired infractions
|
||||
types: str
|
||||
List infractions of specific types, comma separated
|
||||
ephemeral: bool
|
||||
Hide the command response
|
||||
|
@ -674,13 +677,13 @@ class Aurora(commands.Cog):
|
|||
|
||||
if target:
|
||||
filename = f"moderation_target_{str(target.id)}_{str(interaction.guild.id)}.json"
|
||||
moderations = await Moderation.find_by_target(bot=interaction.client, guild_id=interaction.guild.id, target=target.id, before=before, after=after, types=type_list)
|
||||
moderations = await Moderation.find_by_target(bot=interaction.client, guild_id=interaction.guild.id, target=target.id, before=before, after=after, types=type_list, expired=expired)
|
||||
elif moderator:
|
||||
filename = f"moderation_moderator_{str(moderator.id)}_{str(interaction.guild.id)}.json"
|
||||
moderations = await Moderation.find_by_moderator(bot=interaction.client, guild_id=interaction.guild.id, moderator=moderator.id, before=before, after=after, types=type_list)
|
||||
moderations = await Moderation.find_by_moderator(bot=interaction.client, guild_id=interaction.guild.id, moderator=moderator.id, before=before, after=after, types=type_list, expired=expired)
|
||||
else:
|
||||
filename = f"moderation_{str(interaction.guild.id)}.json"
|
||||
moderations = await Moderation.get_latest(bot=interaction.client, guild_id=interaction.guild.id, before=before, after=after, types=type_list)
|
||||
moderations = await Moderation.get_latest(bot=interaction.client, guild_id=interaction.guild.id, before=before, after=after, types=type_list, expired=expired)
|
||||
|
||||
if export:
|
||||
try:
|
||||
|
|
|
@ -312,7 +312,7 @@ class Moderation(AuroraGuildModel):
|
|||
return results
|
||||
|
||||
@classmethod
|
||||
async def get_latest(cls, bot: Red, guild_id: int, before: datetime = None, after: datetime = None, limit: int | None = None, offset: int = 0, types: Iterable[Type] | None = None, cursor: Cursor | None = None) -> Tuple["Moderation"]:
|
||||
async def get_latest(cls, bot: Red, guild_id: int, before: datetime | None = None, after: datetime | None = None, limit: int | None = None, offset: int = 0, types: Iterable[Type] | None = None, expired: bool | None = None, cursor: Cursor | None = None) -> Tuple["Moderation"]:
|
||||
params = []
|
||||
query = f"SELECT * FROM moderation_{guild_id}"
|
||||
conditions = []
|
||||
|
@ -327,6 +327,9 @@ class Moderation(AuroraGuildModel):
|
|||
if after:
|
||||
conditions.append("timestamp > ?")
|
||||
params.append(int(after.timestamp()))
|
||||
if expired is not None:
|
||||
conditions.append("expired = ?")
|
||||
params.append(int(expired))
|
||||
|
||||
if conditions:
|
||||
query += " WHERE " + " AND ".join(conditions)
|
||||
|
@ -353,7 +356,7 @@ class Moderation(AuroraGuildModel):
|
|||
raise ValueError(f"Case {moderation_id} not found in moderation_{guild_id}!")
|
||||
|
||||
@classmethod
|
||||
async def find_by_target(cls, bot: Red, guild_id: int, target: int, before: datetime = None, after: datetime = None, types: Iterable[Type] | None = None, cursor: Cursor | None = None) -> Tuple["Moderation"]:
|
||||
async def find_by_target(cls, bot: Red, guild_id: int, target: int, before: datetime = None, after: datetime = None, types: Iterable[Type] | None = None, expired: bool | None = None, cursor: Cursor | None = None) -> Tuple["Moderation"]:
|
||||
query = f"SELECT * FROM moderation_{guild_id} WHERE target_id = ?"
|
||||
params = [target]
|
||||
if types:
|
||||
|
@ -366,12 +369,16 @@ class Moderation(AuroraGuildModel):
|
|||
if after:
|
||||
query += " AND timestamp > ?"
|
||||
params.append(int(after.timestamp()))
|
||||
if expired is not None:
|
||||
query += " AND expired = ?"
|
||||
params.append(int(expired))
|
||||
|
||||
query += " ORDER BY moderation_id DESC;"
|
||||
|
||||
return await cls.execute(bot=bot, guild_id=guild_id, query=query, parameters=params, cursor=cursor)
|
||||
|
||||
@classmethod
|
||||
async def find_by_moderator(cls, bot: Red, guild_id: int, moderator: int, before: datetime = None, after: datetime = None, types: Iterable[Type] | None = None, cursor: Cursor | None = None) -> Tuple["Moderation"]:
|
||||
async def find_by_moderator(cls, bot: Red, guild_id: int, moderator: int, before: datetime = None, after: datetime = None, types: Iterable[Type] | None = None, expired: bool | None = None, cursor: Cursor | None = None) -> Tuple["Moderation"]:
|
||||
query = f"SELECT * FROM moderation_{guild_id} WHERE moderator_id = ?"
|
||||
params = [moderator]
|
||||
if types:
|
||||
|
@ -384,6 +391,10 @@ class Moderation(AuroraGuildModel):
|
|||
if after:
|
||||
query += " AND timestamp > ?"
|
||||
params.append(int(after.timestamp()))
|
||||
if expired is not None:
|
||||
query += " AND expired = ?"
|
||||
params.append(int(expired))
|
||||
|
||||
query += " ORDER BY moderation_id DESC;"
|
||||
|
||||
return await cls.execute(bot=bot, guild_id=guild_id, query=query, parameters=params, cursor=cursor)
|
||||
|
|
Loading…
Reference in a new issue