From 7651c0124524b6e2eb84c9f7233b45da0e9c7743 Mon Sep 17 00:00:00 2001 From: "Andrew K. Choi" Date: Fri, 26 Sep 2025 13:07:31 +0900 Subject: [PATCH] calendar features --- services/calendar_service/main.py | 34 +++++++++++++++++++++++++++++++ shared/database.py | 2 +- 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/services/calendar_service/main.py b/services/calendar_service/main.py index 7e1e045..3c6c3e9 100644 --- a/services/calendar_service/main.py +++ b/services/calendar_service/main.py @@ -26,6 +26,12 @@ app.add_middleware( ) +@app.get("/health") +async def health_check(): + """Health check endpoint""" + return {"status": "healthy", "service": "calendar_service"} + + class EntryType(str, Enum): PERIOD = "period" OVULATION = "ovulation" @@ -384,6 +390,34 @@ async def get_health_insights( return [HealthInsightResponse.model_validate(insight) for insight in insights] +@app.get("/api/v1/calendar/entries", response_model=List[CalendarEntryResponse]) +async def get_all_calendar_entries( + start_date: Optional[date] = None, + end_date: Optional[date] = None, + entry_type: Optional[EntryType] = None, + current_user: User = Depends(get_current_user), + db: AsyncSession = Depends(get_db), + limit: int = Query(100, ge=1, le=500), +): + """Get all calendar entries for the current user""" + + query = select(CalendarEntry).filter(CalendarEntry.user_id == current_user.id) + + if start_date: + query = query.filter(CalendarEntry.entry_date >= start_date) + if end_date: + query = query.filter(CalendarEntry.entry_date <= end_date) + if entry_type: + query = query.filter(CalendarEntry.entry_type == entry_type) + + query = query.order_by(CalendarEntry.entry_date.desc()).limit(limit) + + result = await db.execute(query) + entries = result.scalars().all() + + return [CalendarEntryResponse.model_validate(entry) for entry in entries] + + @app.delete("/api/v1/entries/{entry_id}") async def delete_calendar_entry( entry_id: int, diff --git a/shared/database.py b/shared/database.py index 895bc65..359e071 100644 --- a/shared/database.py +++ b/shared/database.py @@ -31,7 +31,7 @@ class BaseModel(Base): id = Column(Integer, primary_key=True, index=True) created_at = Column(DateTime(timezone=True), server_default=func.now()) - updated_at = Column(DateTime(timezone=True), onupdate=func.now()) + updated_at = Column(DateTime(timezone=True), server_default=func.now(), onupdate=func.now()) is_active = Column(Boolean, default=True)