32 lines
1.5 KiB
Python
32 lines
1.5 KiB
Python
"""Роутер справочника команд для аутентифицированных пользователей.
|
||
|
||
Отдельно от `/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]
|