| """ |
| Create Database Tables for AegisLM |
| |
| Creates all necessary tables in Neon PostgreSQL database. |
| """ |
|
|
| import asyncio |
| import sys |
| import os |
|
|
| |
| sys.path.append(os.path.dirname(os.path.abspath(__file__))) |
|
|
| async def create_all_tables(): |
| """Create all database tables.""" |
| try: |
| from core.database import AsyncSessionLocal |
| from db_models import Base |
| |
| print("🔧 Creating database tables...") |
| |
| |
| async with AsyncSessionLocal() as db: |
| |
| from db_models import user, role, api_key, evaluation |
| |
| |
| from core.database import get_sync_db |
| SessionLocal = get_sync_db() |
| sync_db = SessionLocal() |
| Base.metadata.create_all(sync_db) |
| sync_db.close() |
| |
| print("✅ All database tables created successfully!") |
| |
| |
| from sqlalchemy import text |
| result = await db.execute(text(""" |
| SELECT table_name |
| FROM information_schema.tables |
| WHERE table_schema = 'public' |
| ORDER BY table_name |
| """)) |
| |
| tables = [row[0] for row in result.fetchall()] |
| print(f"📊 Available tables: {len(tables)}") |
| for table in tables: |
| print(f" - {table}") |
| |
| except Exception as e: |
| print(f"❌ Failed to create tables: {str(e)}") |
| return False |
| |
| return True |
|
|
| if __name__ == "__main__": |
| asyncio.run(create_all_tables()) |
|
|