package daemon import ( "context" "net/http" "time" "git.cloudinit.dev/coreci/orca/internal/model" "git.cloudinit.dev/coreci/orca/internal/store" ) // handleNodesCollection handles /v1/nodes (GET only in v0.1). // Node registration is CLI-only; the API is read-only for observability. func (s *Server) handleNodesCollection(w http.ResponseWriter, r *http.Request) { if r.Method != http.MethodGet { writeError(w, http.StatusMethodNotAllowed, "method not allowed") return } ctx, cancel := context.WithTimeout(r.Context(), 5*time.Second) defer cancel() nodes, err := store.NewNodeRepo(s.db).List(ctx) if err != nil { writeError(w, http.StatusInternalServerError, "failed to list nodes") return } if nodes == nil { nodes = []*model.Node{} } writeJSON(w, http.StatusOK, map[string]any{"nodes": nodes, "count": len(nodes)}) }