package routes import ( "encoding/json" "gitea.deepak.science/deepak/gogmagog/models" "github.com/go-chi/chi" "net/http" "strconv" ) func newActionRouter(m *models.Model) http.Handler { router := chi.NewRouter() router.Get("/", getAllActionsFunc(m)) router.Get("/{actionid}", getActionByIDFunc(m)) return router } func getAllActionsFunc(m *models.Model) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { actions, err := m.Actions() if err != nil { serverError(w, err) return } w.Header().Add("Content-Type", "application/json") if err := json.NewEncoder(w).Encode(actions); err != nil { serverError(w, err) } } } func getActionByIDFunc(m *models.Model) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { id, err := strconv.Atoi(chi.URLParam(r, "actionid")) if err != nil { notFoundHandler(w, r) return } action, err := m.Action(id) if err != nil { if models.IsNotFoundError(err) { notFoundHandler(w, r) return } serverError(w, err) return } w.Header().Add("Content-Type", "application/json") if err := json.NewEncoder(w).Encode(action); err != nil { serverError(w, err) } } }