import asyncio
import sys
import os
from datetime import datetime, timezone

# Add the current directory to sys.path to allow importing from app
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from sqlmodel import select
from app.db.session import async_session_maker, engine
from app.models.user import User, RoleEnum
from app.core.security import get_password_hash

async def seed_admin():
    async with async_session_maker() as session:
        result = await session.execute(select(User).where(User.username == "admin"))
        admin_user = result.scalar_one_or_none()
        
        if admin_user:
            admin_user.hashed_password = get_password_hash("admin123")
            session.add(admin_user)
            await session.commit()
            print("Admin user found. Password updated to 'admin123'.")
        else:
            admin_user = User(
                user_code="100001",
                username="admin",
                hashed_password=get_password_hash("admin123"),
                full_name="مدیر سیستم (زرگر)",
                role=RoleEnum.ADMIN,
                is_2fa_enabled=False,
                created_at=datetime.now(timezone.utc)
            )
            session.add(admin_user)
            await session.commit()
            print("Admin seeded successfully: admin / admin123")
            
    # Close connection
    await engine.dispose()

if __name__ == "__main__":
    asyncio.run(seed_admin())
