summaryrefslogtreecommitdiff
path: root/internal/handlers/timeline.go
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-02-17 14:43:42 -1000
committerPeter Stone <thepeterstone@gmail.com>2026-02-17 14:43:42 -1000
commitec7d895c00c571b37ad9255b99b2e1756776c9e1 (patch)
tree31f8a925375fd5b00ee5febfe5d83f35487b1dd3 /internal/handlers/timeline.go
parent44fa97ce901bbfc5957e6d9ba90a53086bb5950b (diff)
Add calendar cache layer, incremental sync tests, completion assertions
- Google Calendar events now cached via CacheFetcher pattern with stale-cache fallback on API errors (new migration 015, store methods, fetchCalendarEvents handler, BuildTimeline reads from store) - Todoist incremental sync path covered by 5 new tests - Task completion tests assert response body, headers, and template data Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/handlers/timeline.go')
-rw-r--r--internal/handlers/timeline.go8
1 files changed, 7 insertions, 1 deletions
diff --git a/internal/handlers/timeline.go b/internal/handlers/timeline.go
index 29b156a..86b89ea 100644
--- a/internal/handlers/timeline.go
+++ b/internal/handlers/timeline.go
@@ -1,6 +1,7 @@
package handlers
import (
+ "log"
"net/http"
"strconv"
"time"
@@ -63,8 +64,13 @@ func (h *Handler) HandleTimeline(w http.ResponseWriter, r *http.Request) {
end := start.AddDate(0, 0, days)
+ // Refresh calendar events cache before building timeline
+ if _, err := h.fetchCalendarEvents(r.Context(), false); err != nil {
+ log.Printf("Warning: failed to fetch calendar events: %v", err)
+ }
+
// Call BuildTimeline
- items, err := BuildTimeline(r.Context(), h.store, h.googleCalendarClient, h.googleTasksClient, start, end)
+ items, err := BuildTimeline(r.Context(), h.store, h.googleTasksClient, start, end)
if err != nil {
JSONError(w, http.StatusInternalServerError, "Failed to build timeline", err)
return