summaryrefslogtreecommitdiff
path: root/internal/api/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/api/server.go')
-rw-r--r--internal/api/server.go18
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()})