"""Идемпотентный seed скрипт: единственный админ-пользователь.

Комнаты (100 демо-комнат) больше не существуют как сущность (ADR-001) —
seed сокращён до создания администратора.

Запустить с: `uv run python -m scripts.seed`
"""

import asyncio

from argon2 import PasswordHasher
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession

from core.config import get_settings
from core.db import async_session_maker, engine
from models.user import User

_hasher = PasswordHasher()


async def _seed_admin(session: AsyncSession) -> None:
    settings = get_settings()
    email = settings.seed_admin_email
    password = settings.seed_admin_password

    existing = await session.scalar(select(User).where(User.email == email))
    if existing is not None:
        return

    session.add(
        User(
            email=email,
            name_user="Admin",
            password_hash=_hasher.hash(password),
            role="admin",
            email_verified=True,
        )
    )


async def seed() -> None:
    """Upsert админ-пользователя; безопасно запускать несколько раз."""
    async with async_session_maker() as session:
        await _seed_admin(session)
        await session.commit()
    await engine.dispose()


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