47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package server
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"g.fc.run/ai/byre/internal/api"
|
|
)
|
|
|
|
func (s *Server) ListSchedules(w http.ResponseWriter, r *http.Request, projectID string) {
|
|
list, err := s.store.ListSchedules(r.Context(), projectID)
|
|
if err != nil {
|
|
writeStoreError(w, err)
|
|
return
|
|
}
|
|
writeJSON(w, http.StatusOK, list)
|
|
}
|
|
|
|
func (s *Server) CreateSchedule(w http.ResponseWriter, r *http.Request, projectID string) {
|
|
s.saveSchedule(w, r, projectID, "", http.StatusCreated)
|
|
}
|
|
|
|
func (s *Server) UpdateSchedule(w http.ResponseWriter, r *http.Request, scheduleID string) {
|
|
s.saveSchedule(w, r, "", scheduleID, http.StatusOK)
|
|
}
|
|
|
|
func (s *Server) saveSchedule(w http.ResponseWriter, r *http.Request, projectID, scheduleID string, status int) {
|
|
req := api.ScheduleSave{}
|
|
if !readJSON(w, r, &req) {
|
|
return
|
|
}
|
|
sc, err := s.agents.SaveSchedule(r.Context(), projectID, scheduleID, req, actor(r), actor(r))
|
|
if err != nil {
|
|
writeAgentError(w, err)
|
|
return
|
|
}
|
|
writeJSON(w, status, sc)
|
|
}
|
|
|
|
func (s *Server) DeleteSchedule(w http.ResponseWriter, r *http.Request, scheduleID string) {
|
|
err := s.agents.DeleteSchedule(r.Context(), scheduleID, actor(r))
|
|
if err != nil {
|
|
writeAgentError(w, err)
|
|
return
|
|
}
|
|
w.WriteHeader(http.StatusNoContent)
|
|
}
|