51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package server
|
|
|
|
import (
|
|
"errors"
|
|
"net/http"
|
|
|
|
"g.fc.run/ai/byre/internal/api"
|
|
)
|
|
|
|
func (s *Server) ListReviews(w http.ResponseWriter, r *http.Request, taskID string) {
|
|
_, err := s.store.GetTask(r.Context(), taskID)
|
|
if err != nil {
|
|
writeStoreError(w, err)
|
|
return
|
|
}
|
|
|
|
reviews, err := s.store.ListReviews(r.Context(), taskID)
|
|
if err != nil {
|
|
writeStoreError(w, err)
|
|
return
|
|
}
|
|
writeJSON(w, http.StatusOK, reviews)
|
|
}
|
|
|
|
func (s *Server) SetFindingState(w http.ResponseWriter, r *http.Request, reviewID string, index int) {
|
|
req := api.FindingStateUpdate{}
|
|
if !readJSON(w, r, &req) {
|
|
return
|
|
}
|
|
if !req.State.Valid() {
|
|
writeError(w, http.StatusBadRequest, errors.New("state must be fixed or ignored"))
|
|
return
|
|
}
|
|
if index < 0 {
|
|
writeError(w, http.StatusBadRequest, errors.New("index must not be negative"))
|
|
return
|
|
}
|
|
|
|
err := s.store.SetFindingState(r.Context(), reviewID, index, req.State, actor(r))
|
|
if err != nil {
|
|
writeStoreError(w, err)
|
|
return
|
|
}
|
|
review, err := s.store.GetReview(r.Context(), reviewID)
|
|
if err != nil {
|
|
writeStoreError(w, err)
|
|
return
|
|
}
|
|
writeJSON(w, http.StatusOK, review)
|
|
}
|