Skip to content

Commit 87fe91c

Browse files
committed
✨ [feat][backend] Add event clearing API
1 parent ec1bbb9 commit 87fe91c

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

backend/kayman/routers/event.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
from kayman.schemas.event import (
1616
Event,
1717
EventBase,
18+
EventClear,
1819
EventCreate,
1920
EventRead,
2021
EventUpdate,
@@ -67,6 +68,18 @@ def update(
6768
raise HTTPException(status_code=404, detail=err.args[0]) from err
6869

6970

71+
@event_router.post("/{event_id}/cleared", name="Clear Event", response_model=EventRead)
72+
def clear(
73+
*, session: Session = Depends(get_session), event_id: int, data: EventClear
74+
) -> EventBase:
75+
# TODO: validate event details before clearing
76+
update = EventUpdate(**data.model_dump(exclude_unset=True))
77+
try:
78+
return update_events(session, [event_id], [update])[0]
79+
except ValueError as err:
80+
raise HTTPException(status_code=404, detail=err.args[0]) from err
81+
82+
7083
@event_router.delete("/{id}", name="Delete Event")
7184
def delete(*, session: Session = Depends(get_session), id: int) -> None:
7285
event = session.get(Event, id)

backend/kayman/schemas/event.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ class EventRead(EventBase):
5252
id: int
5353

5454

55+
class EventClear(SQLModel):
56+
cleared_at: datetime
57+
58+
5559
class EventUpdate(SQLModel):
5660
type: EventType | None = None
5761
timestamp: datetime | None = None

0 commit comments

Comments
 (0)