"""Initialize database with master data""" import asyncio from sqlalchemy.ext.asyncio import AsyncSession from app.db.base import engine, Base, async_session from app.db.models import CardMaster from app.core.config import settings # Card master data from ai.json CARD_MASTER_DATA = [ {"id": 0, "name": "ai", "base_cp_min": 10, "base_cp_max": 100, "color": "#fff700", "description": "世界の最小単位"}, {"id": 1, "name": "dream", "base_cp_min": 20, "base_cp_max": 120, "color": "#b19cd9", "description": "意識が物質を作る"}, {"id": 2, "name": "radiance", "base_cp_min": 30, "base_cp_max": 130, "color": "#ffd700", "description": "存在は光に向かう"}, {"id": 3, "name": "neutron", "base_cp_min": 40, "base_cp_max": 140, "color": "#cacfd2", "description": "中性子"}, {"id": 4, "name": "sun", "base_cp_min": 50, "base_cp_max": 150, "color": "#ff6b35", "description": "太陽"}, {"id": 5, "name": "night", "base_cp_min": 25, "base_cp_max": 125, "color": "#1a1a2e", "description": "夜空"}, {"id": 6, "name": "snow", "base_cp_min": 15, "base_cp_max": 115, "color": "#e3f2fd", "description": "雪"}, {"id": 7, "name": "thunder", "base_cp_min": 60, "base_cp_max": 160, "color": "#ffd93d", "description": "雷"}, {"id": 8, "name": "ultimate", "base_cp_min": 80, "base_cp_max": 180, "color": "#6c5ce7", "description": "超究"}, {"id": 9, "name": "sword", "base_cp_min": 70, "base_cp_max": 170, "color": "#a8e6cf", "description": "剣"}, {"id": 10, "name": "destruction", "base_cp_min": 90, "base_cp_max": 190, "color": "#ff4757", "description": "破壊"}, {"id": 11, "name": "earth", "base_cp_min": 35, "base_cp_max": 135, "color": "#4834d4", "description": "地球"}, {"id": 12, "name": "galaxy", "base_cp_min": 65, "base_cp_max": 165, "color": "#9c88ff", "description": "天の川"}, {"id": 13, "name": "create", "base_cp_min": 75, "base_cp_max": 175, "color": "#00d2d3", "description": "創造"}, {"id": 14, "name": "supernova", "base_cp_min": 100, "base_cp_max": 200, "color": "#ff9ff3", "description": "超新星"}, {"id": 15, "name": "world", "base_cp_min": 85, "base_cp_max": 185, "color": "#54a0ff", "description": "存在と世界は同じもの"}, ] async def init_db(): """Initialize database tables and master data""" print("Creating database tables...") async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) print("Inserting master data...") async with async_session() as session: # Check if master data already exists existing = await session.execute( "SELECT COUNT(*) FROM card_master" ) count = existing.scalar() if count == 0: # Insert card master data for card_data in CARD_MASTER_DATA: card = CardMaster(**card_data) session.add(card) await session.commit() print(f"Inserted {len(CARD_MASTER_DATA)} card master records") else: print("Master data already exists, skipping...") print("Database initialization complete!") async def drop_db(): """Drop all database tables""" print("Dropping all database tables...") async with engine.begin() as conn: await conn.run_sync(Base.metadata.drop_all) print("All tables dropped!") if __name__ == "__main__": import sys if len(sys.argv) > 1 and sys.argv[1] == "drop": asyncio.run(drop_db()) else: asyncio.run(init_db())