From e97a1bc259d3aa91956ec73a522421cdb621ae57 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Thu, 22 Jan 2026 15:28:06 -1000 Subject: Add Google Calendar integration - Add GoogleCalendarClient for fetching upcoming events - Add GoogleCalendarAPI interface and CalendarEvent model - Add config for GOOGLE_CREDENTIALS_FILE and GOOGLE_CALENDAR_ID - Display events in Planning tab with date/time formatting - Update handlers and tests to support optional calendar client Config env vars: - GOOGLE_CREDENTIALS_FILE: Path to service account JSON - GOOGLE_CALENDAR_ID: Calendar ID (defaults to "primary") Co-Authored-By: Claude Opus 4.5 --- internal/api/interfaces.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'internal/api/interfaces.go') diff --git a/internal/api/interfaces.go b/internal/api/interfaces.go index 32d0120..e2521f4 100644 --- a/internal/api/interfaces.go +++ b/internal/api/interfaces.go @@ -34,9 +34,15 @@ type PlanToEatAPI interface { AddMealToPlanner(ctx context.Context, recipeID string, date time.Time, mealType string) error } +// GoogleCalendarAPI defines the interface for Google Calendar operations +type GoogleCalendarAPI interface { + GetUpcomingEvents(ctx context.Context, maxResults int) ([]models.CalendarEvent, error) +} + // Ensure concrete types implement interfaces var ( - _ TodoistAPI = (*TodoistClient)(nil) - _ TrelloAPI = (*TrelloClient)(nil) - _ PlanToEatAPI = (*PlanToEatClient)(nil) + _ TodoistAPI = (*TodoistClient)(nil) + _ TrelloAPI = (*TrelloClient)(nil) + _ PlanToEatAPI = (*PlanToEatClient)(nil) + _ GoogleCalendarAPI = (*GoogleCalendarClient)(nil) ) -- cgit v1.2.3