Skip to content

Commit 9213115

Browse files
authored
get event/{event_id}/visit/me (#132)
* get event/{event_id}/visit/me * with model_validate
1 parent 1829e2f commit 9213115

2 files changed

Lines changed: 36 additions & 2 deletions

File tree

calendar_backend/routes/event/user_event.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
from fastapi import APIRouter, Depends, Query
33
from fastapi_sqlalchemy import db
44

5-
from calendar_backend.models import Event, EventUser
6-
from calendar_backend.routes.models.visit import VisitResponse
5+
from calendar_backend.models import Event, EventUser, EventUserStatus
6+
from calendar_backend.routes.models.visit import UserVisitStatus, VisitResponse
77

88

99
router = APIRouter(prefix="/event", tags=["Event: Visit"])
@@ -49,3 +49,32 @@ async def set_event_visit_status(
4949
)
5050

5151
return VisitResponse.model_validate(result)
52+
53+
54+
@router.get("/{event_id}/visit/me", response_model=UserVisitStatus)
55+
async def get_my_event_visit_status(
56+
event_id: int,
57+
auth: dict = Depends(UnionAuth()),
58+
) -> UserVisitStatus:
59+
"""
60+
Получить статус посещения мероприятия для текущего пользователя.
61+
Возвращает event_id и статус (no_status, если пользователь никак не отметился).
62+
63+
Параметры:
64+
event_id - id события
65+
66+
Ошибки:
67+
ObjectNotFound - нет события с таким event_id
68+
"""
69+
user_id = auth.get('id')
70+
Event.get(event_id, session=db.session)
71+
existing = (
72+
EventUser.get_all(session=db.session)
73+
.filter(EventUser.event_id == event_id, EventUser.user_id == user_id)
74+
.first()
75+
)
76+
77+
if existing:
78+
return UserVisitStatus.model_validate(existing)
79+
else:
80+
return UserVisitStatus.model_validate({"event_id": event_id, "status": EventUserStatus.NO_STATUS})

calendar_backend/routes/models/visit.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,8 @@ class VisitResponse(Base):
1111
user_id: int
1212
status: EventUserStatus
1313
updated_at: datetime.datetime
14+
15+
16+
class UserVisitStatus(Base):
17+
event_id: int
18+
status: EventUserStatus

0 commit comments

Comments
 (0)