"""Auth domain - facade exposed for other domains."""
from __future__ import annotations
from typing import Optional
from uuid import UUID

from src.domain.auth.repository import UserRepository
from src.domain.auth.schemas import UserSummary


class UserFacadeImpl:
    """Auth domain exposes user lookup for other domains."""

    def __init__(self, user_repo: UserRepository):
        self._repo = user_repo

    async def get_user_summary(self, user_id: UUID) -> Optional[UserSummary]:
        """Get minimal user info for other domains."""
        user = await self._repo.get_by_id(user_id)
        if not user:
            return None
        return UserSummary(
            id=user.id,
            email=user.email,
            display_name=user.display_name,
        )

    async def verify_user_exists(self, user_id: UUID) -> bool:
        """Check if user exists."""
        return await self._repo.exists(user_id)

    async def get_user_labels(self, user_ids: list[UUID]) -> dict[UUID, str]:
        """Resolve public chat labels in a batch without exposing full user profiles."""
        users = await self._repo.list_by_ids(list(dict.fromkeys(user_ids)))
        return {
            user.id: (
                (user.display_name or "").strip()
                or f"{(user.first_name or '').strip()} {(user.last_name or '').strip()}".strip()
                or user.email.split("@")[0]
            )
            for user in users
        }
