58 lines
2.0 KiB
Python
58 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Move tables from system schema to gamification schema.
|
|
"""
|
|
import asyncio
|
|
from sqlalchemy.ext.asyncio import create_async_engine
|
|
from sqlalchemy import text
|
|
|
|
async def move_tables():
|
|
# Use the same DATABASE_URL as sync_engine
|
|
from app.core.config import settings
|
|
engine = create_async_engine(str(settings.SQLALCHEMY_DATABASE_URI))
|
|
|
|
async with engine.begin() as conn:
|
|
# Check if tables exist in system schema
|
|
result = await conn.execute(text("""
|
|
SELECT table_schema, table_name
|
|
FROM information_schema.tables
|
|
WHERE table_name IN ('competitions', 'user_scores')
|
|
ORDER BY table_schema;
|
|
"""))
|
|
rows = result.fetchall()
|
|
print("Current tables:")
|
|
for row in rows:
|
|
print(f" {row.table_schema}.{row.table_name}")
|
|
|
|
# Move competitions
|
|
print("\nMoving system.competitions to gamification.competitions...")
|
|
try:
|
|
await conn.execute(text('ALTER TABLE system.competitions SET SCHEMA gamification;'))
|
|
print(" OK")
|
|
except Exception as e:
|
|
print(f" Error: {e}")
|
|
|
|
# Move user_scores
|
|
print("Moving system.user_scores to gamification.user_scores...")
|
|
try:
|
|
await conn.execute(text('ALTER TABLE system.user_scores SET SCHEMA gamification;'))
|
|
print(" OK")
|
|
except Exception as e:
|
|
print(f" Error: {e}")
|
|
|
|
# Verify
|
|
result = await conn.execute(text("""
|
|
SELECT table_schema, table_name
|
|
FROM information_schema.tables
|
|
WHERE table_name IN ('competitions', 'user_scores')
|
|
ORDER BY table_schema;
|
|
"""))
|
|
rows = result.fetchall()
|
|
print("\nAfter moving:")
|
|
for row in rows:
|
|
print(f" {row.table_schema}.{row.table_name}")
|
|
|
|
await engine.dispose()
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(move_tables()) |