Fix new services implementation 9

This commit is contained in:
Urtzi Alfaro
2025-08-16 08:00:52 +02:00
parent 055ce10c66
commit 9de0f9943c
5 changed files with 37 additions and 83 deletions

View File

@@ -154,11 +154,17 @@ class DatabaseManager:
try:
target_metadata = metadata or Base.metadata
async with self.async_engine.begin() as conn:
await conn.run_sync(target_metadata.create_all)
await conn.run_sync(target_metadata.create_all, checkfirst=True)
logger.info("Database tables created successfully", service=self.service_name)
except Exception as e:
logger.error(f"Failed to create tables: {e}", service=self.service_name)
raise DatabaseError(f"Table creation failed: {str(e)}")
# Check if it's a "relation already exists" error which can be safely ignored
error_str = str(e).lower()
if "already exists" in error_str or "duplicate" in error_str:
logger.warning(f"Some database objects already exist - continuing: {e}", service=self.service_name)
logger.info("Database tables creation completed (some already existed)", service=self.service_name)
else:
logger.error(f"Failed to create tables: {e}", service=self.service_name)
raise DatabaseError(f"Table creation failed: {str(e)}")
async def drop_tables(self, metadata=None):
"""Drop database tables"""