package api import ( "net/http" ) type categoryInput struct { Name string `json:"name"` Parent *string `json:"parent"` // ausente = não move; "" = raiz } func (s *Server) handleCreateCategory(w http.ResponseWriter, r *http.Request) { var in categoryInput if err := decodeJSON(w, r, &in, 1<<20); err != nil { return } parent := "" if in.Parent != nil { parent = *in.Parent } c, err := s.st.CreateCategory(in.Name, parent) if err != nil { mapStoreErrorFor(w, err, "categoria") return } writeJSON(w, http.StatusCreated, c) } func (s *Server) handleUpdateCategory(w http.ResponseWriter, r *http.Request) { var in categoryInput if err := decodeJSON(w, r, &in, 1<<20); err != nil { return } c, err := s.st.UpdateCategory(r.PathValue("id"), in.Name, in.Parent) if err != nil { mapStoreErrorFor(w, err, "categoria") return } writeJSON(w, http.StatusOK, c) } func (s *Server) handleDeleteCategory(w http.ResponseWriter, r *http.Request) { if err := s.st.DeleteCategory(r.PathValue("id")); err != nil { mapStoreErrorFor(w, err, "categoria") return } w.WriteHeader(http.StatusNoContent) }