from sqlmodel import select from app.config import settings from app.core.database import async_db_session from app.core.security import hash_password from shared.logging import get_logger from shared.models.user import User logger = get_logger(__name__) async def create_initial_admin() -> None: async with async_db_session() as session: result = await session.execute(select(User).limit(1)) existing_user = result.scalar_one_or_none() if existing_user is None: admin = User( email=settings.ADMIN_EMAIL, username=settings.ADMIN_USERNAME, hashed_password=hash_password(settings.ADMIN_PASSWORD), is_superuser=True, ) session.add(admin) await session.commit() logger.info(f"Initial admin created: {settings.ADMIN_USERNAME}")