Skip to content

Commit d910593

Browse files
committed
feat(event): implement patch API for event/<eid> endpoint
1 parent 43ec487 commit d910593

2 files changed

Lines changed: 42 additions & 0 deletions

File tree

src/event/crud.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,15 @@ async def get_events_for_this_year_month(
5252
return events
5353

5454

55+
async def get_event_by_eid(
56+
db_session: AsyncSession,
57+
eid: int
58+
) -> EventDB | None:
59+
return (await db_session.execute(
60+
select(EventDB).where(EventDB.eid == eid)
61+
)).scalar_one_or_none()
62+
63+
5564
async def create_event(
5665
db_session: AsyncSession,
5766
info: EventDB

src/event/urls.py

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,39 @@ async def create_event(
9494
return new_event
9595

9696

97+
@router.patch(
98+
"/{eid}",
99+
description="Update an Event detail",
100+
response_model=Event,
101+
responses={
102+
404:{"description": "Event doesn't exist."}
103+
},
104+
operation_id="update_event"
105+
)
106+
async def update_event(
107+
db_session: database.DBSession,
108+
eid: int,
109+
body: EventUpdate
110+
):
111+
event_info = await event.crud.get_event_by_eid(db_session, eid)
112+
113+
if event_info is None:
114+
raise HTTPException(
115+
status_code=status.HTTP_404_NOT_FOUND,
116+
detail="Event doesn't exist."
117+
)
118+
119+
updated_event = body.model_dump(exclude_unset=True)
120+
for key, value in updated_event.items():
121+
setattr(event_info, key, value)
122+
123+
await db_session.commit()
124+
await db_session.refresh(event_info)
125+
126+
return event_info
127+
128+
129+
97130
@router.delete(
98131
"/{eid}",
99132
description="Delete an event",

0 commit comments

Comments
 (0)