"""Роутер справочника команд для аутентифицированных пользователей.

Отдельно от `/admin/teams` (админ-only CRUD): здесь только чтение полного
списка — нужно странице профиля (выбор команды). В отличие от
`GET /auth/registration-options`, список НЕ гасится тумблером
`registration_team_choice` (та настройка — только про публичную форму
регистрации, не про профиль уже аутентифицированного пользователя).
"""

from typing import Annotated

from fastapi import APIRouter, Depends
from sqlalchemy.ext.asyncio import AsyncSession

from api.deps import get_current_user
from core.db import get_session
from models.user import User
from repositories.admin import TeamRepository
from schemas.admin import TeamOut

router = APIRouter(prefix="/api/v1/teams", tags=["teams"])


@router.get("", response_model=list[TeamOut])
async def list_teams(
    user: Annotated[User, Depends(get_current_user)],
    session: Annotated[AsyncSession, Depends(get_session)],
) -> list[TeamOut]:
    """Полный справочник команд, отсортированный по названию (выбор команды в профиле)."""
    items, _ = await TeamRepository(session).list_all()
    return [TeamOut.model_validate(team) for team in items]
