42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
"""Входящие приглашения игрока: список, принятие, отклонение."""
|
|
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter, Depends
|
|
from sqlmodel import Session
|
|
|
|
from app.auth.deps import get_current_user
|
|
from app.db.session import get_session
|
|
from app.models import User
|
|
from app.schemas import api as s
|
|
from app.services import invitation_service
|
|
|
|
router = APIRouter(prefix="/invitations", tags=["invitations"])
|
|
|
|
|
|
@router.get("", response_model=list[s.InvitationRead])
|
|
def my_invitations(
|
|
session: Session = Depends(get_session),
|
|
user: User = Depends(get_current_user),
|
|
) -> list[dict]:
|
|
return invitation_service.list_for_user(session, user.id) # type: ignore[arg-type]
|
|
|
|
|
|
@router.post("/{invitation_id}/accept", response_model=s.OkResponse)
|
|
def accept_invitation(
|
|
invitation_id: int,
|
|
session: Session = Depends(get_session),
|
|
user: User = Depends(get_current_user),
|
|
) -> s.OkResponse:
|
|
invitation_service.accept(session, user, invitation_id)
|
|
return s.OkResponse()
|
|
|
|
|
|
@router.post("/{invitation_id}/decline", response_model=s.OkResponse)
|
|
def decline_invitation(
|
|
invitation_id: int,
|
|
session: Session = Depends(get_session),
|
|
user: User = Depends(get_current_user),
|
|
) -> s.OkResponse:
|
|
invitation_service.decline(session, user, invitation_id)
|
|
return s.OkResponse()
|