diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-03-15 21:10:05 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-03-15 21:10:05 +0000 |
| commit | 52f6bdee9297b48938242d3ac843cc054d7dbcaa (patch) | |
| tree | 24d021106b851766e6374ee5362e8fba04898f31 /internal/api/server.go | |
| parent | 5fccaa636cd400cd7809a1d2e4f254c3fff58218 (diff) | |
feat: overhaul auto-refresh system with intelligent polling and differential updates
Diffstat (limited to 'internal/api/server.go')
| -rw-r--r-- | internal/api/server.go | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/internal/api/server.go b/internal/api/server.go index 8290738..59d59eb 100644 --- a/internal/api/server.go +++ b/internal/api/server.go @@ -384,7 +384,15 @@ func (s *Server) handleListWorkspaces(w http.ResponseWriter, r *http.Request) { } func (s *Server) handleHealth(w http.ResponseWriter, r *http.Request) { - writeJSON(w, http.StatusOK, map[string]string{"status": "ok"}) + lastUpdated, err := s.store.GetMaxUpdatedAt() + if err != nil { + s.logger.Error("failed to get max updated_at", "error", err) + lastUpdated = time.Time{} + } + writeJSON(w, http.StatusOK, map[string]interface{}{ + "status": "ok", + "last_updated": lastUpdated, + }) } func (s *Server) handleCreateTask(w http.ResponseWriter, r *http.Request) { @@ -477,6 +485,14 @@ func (s *Server) handleListTasks(w http.ResponseWriter, r *http.Request) { } filter.State = ts } + if since := r.URL.Query().Get("since"); since != "" { + t, err := time.Parse(time.RFC3339, since) + if err != nil { + writeJSON(w, http.StatusBadRequest, map[string]string{"error": "invalid since: " + since}) + return + } + filter.Since = t + } tasks, err := s.store.ListTasks(filter) if err != nil { writeJSON(w, http.StatusInternalServerError, map[string]string{"error": err.Error()}) |
