jankv2 (this hopefully fixes everything)
This commit is contained in:
parent
e4fdb14e6a
commit
a1b175ca76
|
@ -107,8 +107,8 @@ class DiscordDataClient(discord.Client):
|
||||||
self.logger.info(f"Scanning server: {guild.name} ({guild.id})")
|
self.logger.info(f"Scanning server: {guild.name} ({guild.id})")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Get all members
|
# Get all members - different API for discord.py-self
|
||||||
members = [member async for member in guild.fetch_members(limit=None)]
|
members = [member async for member in guild.fetch_members()]
|
||||||
|
|
||||||
for member in members:
|
for member in members:
|
||||||
if not member.bot:
|
if not member.bot:
|
||||||
|
|
|
@ -372,10 +372,13 @@ class MariaDBDatabase:
|
||||||
|
|
||||||
async def save_user(self, user_data: UserData):
|
async def save_user(self, user_data: UserData):
|
||||||
"""Save or update user data with transaction."""
|
"""Save or update user data with transaction."""
|
||||||
async with self.pool.begin() as conn:
|
async with self.pool.cursor() as cursor:
|
||||||
try:
|
try:
|
||||||
|
# Start transaction
|
||||||
|
await cursor.execute("START TRANSACTION")
|
||||||
|
|
||||||
# Upsert user data
|
# Upsert user data
|
||||||
await conn.execute("""
|
await cursor.execute("""
|
||||||
INSERT INTO users (
|
INSERT INTO users (
|
||||||
user_id, username, discriminator, display_name,
|
user_id, username, discriminator, display_name,
|
||||||
avatar_url, banner_url, bio, status, activity
|
avatar_url, banner_url, bio, status, activity
|
||||||
|
@ -402,23 +405,25 @@ class MariaDBDatabase:
|
||||||
))
|
))
|
||||||
|
|
||||||
# Update servers relationship
|
# Update servers relationship
|
||||||
await conn.execute(
|
await cursor.execute(
|
||||||
"DELETE FROM user_servers WHERE user_id = %s",
|
"DELETE FROM user_servers WHERE user_id = %s",
|
||||||
(user_data.user_id,)
|
(user_data.user_id,)
|
||||||
)
|
)
|
||||||
|
|
||||||
if user_data.servers:
|
if user_data.servers:
|
||||||
server_values = [(user_data.user_id, s) for s in user_data.servers]
|
for server_id in user_data.servers:
|
||||||
await conn.executemany(
|
await cursor.execute(
|
||||||
"INSERT INTO user_servers (user_id, server_id) VALUES (%s, %s)",
|
"INSERT INTO user_servers (user_id, server_id) VALUES (%s, %s)",
|
||||||
server_values
|
(user_data.user_id, server_id)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Commit transaction
|
||||||
|
await cursor.execute("COMMIT")
|
||||||
self.logger.debug(f"Saved user {user_data.username}#{user_data.discriminator}")
|
self.logger.debug(f"Saved user {user_data.username}#{user_data.discriminator}")
|
||||||
|
|
||||||
except MySQLError as e:
|
except MySQLError as e:
|
||||||
self.logger.error(f"Error saving user: {e}")
|
self.logger.error(f"Error saving user: {e}")
|
||||||
await conn.rollback()
|
await cursor.execute("ROLLBACK")
|
||||||
raise
|
raise
|
||||||
|
|
||||||
async def add_server_to_user(self, user_id: int, server_id: int):
|
async def add_server_to_user(self, user_id: int, server_id: int):
|
||||||
|
@ -498,6 +503,12 @@ class MariaDBDatabase:
|
||||||
|
|
||||||
return stats
|
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):
|
async def close(self):
|
||||||
"""Close database connection."""
|
"""Close database connection."""
|
||||||
if self.pool:
|
if self.pool:
|
||||||
|
|
Loading…
Reference in a new issue