From a1b175ca762d24a43f1e47f1aaccddc6c3244cee Mon Sep 17 00:00:00 2001 From: Xargana Date: Mon, 14 Jul 2025 01:28:42 +0300 Subject: [PATCH] jankv2 (this hopefully fixes everything) --- src/client.py | 4 ++-- src/database.py | 29 ++++++++++++++++++++--------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/client.py b/src/client.py index a8f21e2..d3213c7 100644 --- a/src/client.py +++ b/src/client.py @@ -107,8 +107,8 @@ class DiscordDataClient(discord.Client): self.logger.info(f"Scanning server: {guild.name} ({guild.id})") try: - # Get all members - members = [member async for member in guild.fetch_members(limit=None)] + # Get all members - different API for discord.py-self + members = [member async for member in guild.fetch_members()] for member in members: if not member.bot: diff --git a/src/database.py b/src/database.py index c34ca88..14a3705 100644 --- a/src/database.py +++ b/src/database.py @@ -372,10 +372,13 @@ class MariaDBDatabase: async def save_user(self, user_data: UserData): """Save or update user data with transaction.""" - async with self.pool.begin() as conn: + async with self.pool.cursor() as cursor: try: + # Start transaction + await cursor.execute("START TRANSACTION") + # Upsert user data - await conn.execute(""" + await cursor.execute(""" INSERT INTO users ( user_id, username, discriminator, display_name, avatar_url, banner_url, bio, status, activity @@ -402,23 +405,25 @@ class MariaDBDatabase: )) # Update servers relationship - await conn.execute( + await cursor.execute( "DELETE FROM user_servers WHERE user_id = %s", (user_data.user_id,) ) if user_data.servers: - server_values = [(user_data.user_id, s) for s in user_data.servers] - await conn.executemany( - "INSERT INTO user_servers (user_id, server_id) VALUES (%s, %s)", - server_values - ) + for server_id in user_data.servers: + await cursor.execute( + "INSERT INTO user_servers (user_id, server_id) VALUES (%s, %s)", + (user_data.user_id, server_id) + ) + # Commit transaction + await cursor.execute("COMMIT") self.logger.debug(f"Saved user {user_data.username}#{user_data.discriminator}") except MySQLError as e: self.logger.error(f"Error saving user: {e}") - await conn.rollback() + await cursor.execute("ROLLBACK") raise async def add_server_to_user(self, user_id: int, server_id: int): @@ -498,6 +503,12 @@ class MariaDBDatabase: return stats + async def cleanup_old_backups(self, max_backups: int = 5): + """Clean up old backup documents (placeholder for MariaDB).""" + # For MariaDB, we could implement this as cleaning up old backup tables + # or maintaining a backup log table, but for now it's a no-op + self.logger.info("MariaDB cleanup completed") + async def close(self): """Close database connection.""" if self.pool: