62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Test script to verify that init_db() creates all tables and indexes properly.
|
|
This simulates a fresh database initialization.
|
|
"""
|
|
import asyncio
|
|
import sys
|
|
import os
|
|
sys.path.insert(0, '/app')
|
|
from api import database
|
|
|
|
async def test_init():
|
|
"""Test database initialization"""
|
|
print("Testing database initialization...")
|
|
print("=" * 60)
|
|
|
|
try:
|
|
# Initialize database (create tables and indexes)
|
|
await database.init_db()
|
|
print("✓ Database initialization completed successfully")
|
|
|
|
# Verify tables exist
|
|
async with database.engine.begin() as conn:
|
|
result = await conn.execute(database.text("""
|
|
SELECT tablename
|
|
FROM pg_tables
|
|
WHERE schemaname = 'public'
|
|
ORDER BY tablename;
|
|
"""))
|
|
tables = [row[0] for row in result]
|
|
print(f"\n✓ Found {len(tables)} tables:")
|
|
for table in tables:
|
|
print(f" - {table}")
|
|
|
|
# Verify indexes exist
|
|
result = await conn.execute(database.text("""
|
|
SELECT tablename, indexname
|
|
FROM pg_indexes
|
|
WHERE schemaname = 'public' AND indexname LIKE 'idx_%'
|
|
ORDER BY tablename, indexname;
|
|
"""))
|
|
indexes = list(result)
|
|
print(f"\n✓ Found {len(indexes)} performance indexes:")
|
|
for table, index in indexes:
|
|
print(f" - {index} on {table}")
|
|
|
|
print("\n" + "=" * 60)
|
|
print("✓ All tests passed!")
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"\n✗ Error during initialization: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
return False
|
|
finally:
|
|
await database.engine.dispose()
|
|
|
|
if __name__ == "__main__":
|
|
success = asyncio.run(test_init())
|
|
sys.exit(0 if success else 1)
|